基本信息
端口扫描
常规的Linux,22和80:
80
看起来是个图床,有登录界面,很简单的注入,直接万能密码就可以:
1 | 'or'1'='1 |
bypass_image_upload
只能上传图像,并且存在文件头校验,那就做一个图片马上传:
直接加载个meterpreter:
config文件
在db.php5中发现一组账号密码:
1 | theseus : iamkingtheseus |
但这个账号只能公钥登录ssh,直接在已有shell里su提示su: must be run from a terminal
pty spawn
su问题搜到解决方法
但使用上面的密码失败:
mysqldump
根据上面的数据库信息dump:
1 | mysqldump -utheseus -piamkingtheseus Magic |
得到另一组账号密码:
1 | admin : Th3s3usW4sK1ng |
user flag
使用这个密码切换用户,得到user.txt:
为了方便我们可以把自己的ssh公钥加到靶机authorized_keys,然后直接通过ssh登录
提权信息
注意到sysinfo具有suid:
1 | find / -perm -u=s -type f 2>/dev/null |
那么我们考虑自己创建一个sysinfo会调用的程序例如lshw,并且修改环境变量提高它的优先级:
root flag
这样当执行sysinfo调用lshw时,执行的是我们的reverse shell代码,得到root.txt:
root目录有个info.c,里面也可以看到调用了lshw:
参考资料
- https://github.com/xapax/security/blob/master/bypass_image_upload.md
- http://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet
- https://stackoverflow.com/questions/36944634/su-command-in-docker-returns-must-be-run-from-terminal/41872292
- Hackthebox Magic Walkthrough - YouTube
https://www.youtube.com/watch?v=TgczBJmcaZ0