
cosas de vulnerabilidad dlink en python y rust
porque sí
cve-2024-10914 es una vulnerabilidad descubierta recientemente con una puntuación crítica de 9.8 que afecta a algunos routers dlink. como esos routers llegaron a su fin de vida útil (EOL), dlink se niega a parchear esta vulnerabilidad porque "deja de ser pobre y solo cómprate un router nuevo".
los dispositivos vulnerables exponen un endpoint http, normalmente en /cgi-bin/account_mgr.cgi?cmd=cgi_user_add&name=<user_input>. debido a una sanitización inadecuada, en lugar de limitar o validar estrictamente la entrada (permitiendo solo caracteres alfanuméricos), la aplicación permite inyectar cualquier carácter, incluidos caracteres especiales utilizados para operaciones de línea de comandos, lo que permite la ejecución arbitraria de código.
al insertar metacaracteres de shell (tales como ; | & o $(command)) en el campo name, cualquiera puede ejecutar comandos de shell con facilidad. por ejemplo:
...name=admin'; echo 'get pwned bozo'; #
todo lo que hacen estos scripts es enviar una petición con el parámetro name cambiado al código que quieras ejecutar.
hay un video bastante bueno de fireship que lo explica con más detalle: https://www.youtube.com/watch?v=52v6gKPA4TM
primero necesitas tener un dispositivo vulnerable, algunos modelos incluyen:
recomiendo encarecidamente no usar este script contra otra persona sin su consentimiento, por favor solo hagas esto si eres dueño del router o tienes el consentimiento del dueño.
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
luego sigue las instrucciones
yo no inventé el código original, lo hizo verylazytech. solo lo porté a rust y python porque, ¿por qué coño no? por supuesto, todo el crédito es suyo y de cualquier otra persona involucrada en el descubrimiento de este exploit.