
cosa sulle vulnerabilità dlink in python e rust
perché no
cve-2024-10914 è una vulnerabilità scoperta di recente con punteggio critico 9.8 che colpisce alcuni router dlink. poiché questi router hanno raggiunto il loro fine supporto (EOL), dlink rifiuta di correggere questa vulnerabilità perché "smettetela di essere poveri e comprate un nuovo router".
i dispositivi vulnerabili espongono un endpoint http, di solito sotto /cgi-bin/account_mgr.cgi?cmd=cgi_user_add&name=<user_input>. a causa di una sanificazione impropria, invece di limitare o validare strettamente l'input (consentendo solo caratteri alfanumerici), l'applicazione consente di iniettare qualsiasi carattere, inclusi i caratteri speciali usati per le operazioni da riga di comando, permettendo quindi l'esecuzione arbitraria di codice.
inserendo metacaratteri di shell (come ; | & o $(command)) nel campo name, chiunque può eseguire comandi shell con facilità. per esempio:
...name=admin'; echo 'get pwned bozo'; #
tutti questi script fanno solo questo: inviano una richiesta con il parametro name cambiato in qualunque codice tu voglia eseguire.
c'è un bel video di fireship che lo spiega più in dettaglio: https://www.youtube.com/watch?v=52v6gKPA4TM
prima devi avere un dispositivo vulnerabile, alcuni modelli includono:
ti sconsiglio vivamente di usare questo script contro qualcun altro senza il suo consenso, per favore fai queste cose solo se possiedi il router o hai il consenso del proprietario
cargo run -- -u http://<device ip address>
cargo run
pip install -r requirements.txt
python main.py -u http://<device ip address>
python main.py
poi segui le istruzioni
non ho creato io il codice originale, l'ha fatto verylazytech. l'ho solo portato in rust e python perché cazzo. ovviamente tutto il merito va a lui e a chiunque altro sia stato coinvolto nella scoperta di questo exploit.