|
13 | 13 | import de.rub.nds.tlsattacker.attacks.pkcs1.Pkcs1Vector; |
14 | 14 | import de.rub.nds.tlsattacker.attacks.pkcs1.Pkcs1VectorGenerator; |
15 | 15 | import de.rub.nds.tlsattacker.attacks.util.response.EqualityError; |
| 16 | +import de.rub.nds.tlsattacker.core.config.delegate.CiphersuiteDelegate; |
16 | 17 | import de.rub.nds.tlsattacker.core.config.delegate.ClientDelegate; |
| 18 | +import de.rub.nds.tlsattacker.core.constants.AlgorithmResolver; |
| 19 | +import de.rub.nds.tlsattacker.core.constants.CipherSuite; |
| 20 | +import de.rub.nds.tlsattacker.core.constants.KeyExchangeAlgorithm; |
17 | 21 | import de.rub.nds.tlsattacker.core.util.CertificateFetcher; |
18 | 22 | import de.rub.nds.tlsattacker.core.workflow.ParallelExecutor; |
19 | 23 | import de.rub.nds.tlsscanner.config.ScannerConfig; |
|
31 | 35 | */ |
32 | 36 | public class BleichenbacherProbe extends TlsProbe { |
33 | 37 |
|
| 38 | + private List<CipherSuite> suiteList; |
| 39 | + |
34 | 40 | public BleichenbacherProbe(ScannerConfig config, ParallelExecutor parallelExecutor) { |
35 | 41 | super(parallelExecutor, ProbeType.BLEICHENBACHER, config, 10); |
| 42 | + suiteList = new LinkedList<>(); |
36 | 43 | } |
37 | 44 |
|
38 | 45 | @Override |
39 | 46 | public ProbeResult executeTest() { |
40 | 47 | BleichenbacherCommandConfig bleichenbacherConfig = new BleichenbacherCommandConfig(getScannerConfig().getGeneralDelegate()); |
41 | 48 | ClientDelegate delegate = (ClientDelegate) bleichenbacherConfig.getDelegate(ClientDelegate.class); |
42 | 49 | delegate.setHost(getScannerConfig().getClientDelegate().getHost()); |
43 | | - |
| 50 | + ((CiphersuiteDelegate) (bleichenbacherConfig.getDelegate(CiphersuiteDelegate.class))).setCipherSuites(suiteList); |
44 | 51 | RSAPublicKey publicKey = (RSAPublicKey) CertificateFetcher.fetchServerPublicKey(bleichenbacherConfig.createConfig()); |
45 | 52 | if (publicKey == null) { |
46 | 53 | LOGGER.info("Could not retrieve PublicKey from Server - is the Server running?"); |
@@ -74,6 +81,19 @@ public boolean shouldBeExecuted(SiteReport report) { |
74 | 81 |
|
75 | 82 | @Override |
76 | 83 | public void adjustConfig(SiteReport report) { |
| 84 | + if (report.getCipherSuites() != null) { |
| 85 | + for (CipherSuite suite : report.getCipherSuites()) { |
| 86 | + if (AlgorithmResolver.getKeyExchangeAlgorithm(suite) == KeyExchangeAlgorithm.RSA) { |
| 87 | + suiteList.add(suite); |
| 88 | + } |
| 89 | + } |
| 90 | + } else { |
| 91 | + for (CipherSuite suite : CipherSuite.values()) { |
| 92 | + if (AlgorithmResolver.getKeyExchangeAlgorithm(suite) == KeyExchangeAlgorithm.RSA) { |
| 93 | + suiteList.add(suite); |
| 94 | + } |
| 95 | + } |
| 96 | + } |
77 | 97 | } |
78 | 98 |
|
79 | 99 | @Override |
|
0 commit comments