I'm trying to test for a CCS Injection. I have found two prevailant methods to do so

  1. Use nmap's ssl-ccs-injection nse script
  2. Tripwire's OpenSSL-CCS-Inject-Test

Both are pretty simple to use, however, they are giving me different results. nmap's script gives me a STATUS: Vulnerable while Tripwire's script gives me a "No need to patch" message. What do I believe/what do I do?

Many thanks for the help.

  • @korockinout13 - Is there an article that can help me to do so?
    – Izy-
    Nov 30, 2017 at 4:46
  • Run the attack while capturing in wireshark. Attempt to decrypt the traffic using a key, which you can lookup how to use.
    – Allison
    Nov 30, 2017 at 5:42
  • Possibly a false-positive in Nmap's script. Please give any info you can at github.com/nmap/nmap/issues/1322 so we can resolve it. Sep 11, 2018 at 20:02

1 Answer 1


In order to exploit the vulnerablity, a MITM attacker would effectively do the following:

o Wait for a new TLS connection, followed by the ClientHello ServerHello handshake messages.

o Issue a CCS packet in both the directions, which causes the OpenSSL code to use a zero length pre master secret key. The packet is sent to both ends of the connection. Session Keys are derived using a zero length pre master secret key, and future session keys also share this weakness.

o Renegotiate the handshake parameters.

o The attacker is now able to decrypt or even modify the packets in transit.

The script works by sending a 'ChangeCipherSpec' message out of order and checking whether the server returns an 'UNEXPECTED_MESSAGE' alert record or not. Since a non-patched server would simply accept this message, the CCS packet is sent twice, in order to force an alert from the server. If the alert type is different than 'UNEXPECTED_MESSAGE', we can conclude the server is vulnerable.

Source: https://nmap.org/nsedoc/scripts/ssl-ccs-injection.html

You can use openssl s_client in linux for sending packets to the server and confirming the vulnerability manually.

Moreover I will suggest you to use testssl.sh available on https://testssl.sh because the tool is way more comprehensive and accurate.

  • if you are going to copy/paste and answer from somewhere, at least link to the source ...
    – schroeder
    Feb 16, 2018 at 22:42
  • Since the quoted part comes from a link that's in the question itself, your answer is using s_client to test manually, but you do not explain how to do that. Can you expand that part?
    – schroeder
    Feb 16, 2018 at 22:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.