DC-9 靶机渗透实战:从 SQL注入到提权的双解法复现解析
字数 1507 2025-08-29 22:41:32

DC-9 靶机渗透实战:从SQL注入到提权的双解法复现解析

1. 靶机信息收集

1.1 初始扫描

使用nmap进行初始扫描,发现开放端口:

  • 80端口:HTTP服务
  • 22端口:SSH服务(被过滤)

1.2 服务识别

  • Web服务:80端口运行着一个带有搜索功能的网站
  • SSH服务:22端口被过滤,无法直接访问

2. 解法一:通过敲门协议提权

2.1 SQL注入攻击

  1. 发现注入点:网站搜索功能存在SQL注入漏洞
  2. 利用工具:使用sqlmap进行自动化注入
    • 可用注入方式:UNION注入和时间盲注
  3. 获取数据
    • 获取用户表数据(包含用户名和明文密码)
    • 获取admin密码:transorbital1
    • 发现另一个数据库中的管理员凭据

2.2 文件读取漏洞

  1. 发现漏洞:存在文件读取功能(最初误判为文件包含)
  2. 参数发现:使用wfuzz发现file参数
  3. 读取关键文件
    • 尝试读取用户家目录下的.bashrc(失败)
    • 读取/etc/knockd.conf文件,发现敲门协议配置

2.3 敲门协议利用

  1. 敲门协议原理:按特定顺序访问端口可开启SSH服务
  2. 发现端口顺序:7469, 8475, 9842
  3. 执行敲门
    nc target_ip 7469
    nc target_ip 8475
    nc target_ip 9842
    

2.4 SSH爆破登录

  1. 准备凭据:使用SQL注入获取的用户名和密码
  2. 成功登录:发现3个可登录账户
  3. 后渗透发现
    • 其中一个账户下有密码本文件
    • 使用密码本爆破出更多有效凭据

2.5 提权

  1. sudo -l检查:发现可写入root权限文件
  2. 提权方法选择
    • 添加特权用户
    • 设置SSH免密登录
    • 直接通过sudo提权

3. 解法二:通过Webshell提权

3.1 初始步骤

  1. 同解法一:通过SQL注入获取admin密码transorbital1
  2. 会话利用:通过admin会话机制写入webshell

3.2 获取数据库凭据

  1. 读取配置文件:获取config.php中的数据库凭据
  2. 数据库连接:获取完整用户表数据

3.3 本地密码爆破

  1. 工具准备:上传sucrack和密码本到靶机
  2. 本地爆破:针对本地用户进行密码爆破
  3. 获取有效凭据:得到3组有效SSH凭据

3.4 提权

后续步骤与解法一相同,通过sudo提权

4. 关键知识点总结

4.1 SQL注入

  • UNION注入和时间盲注的利用
  • sqlmap工具的高级使用
  • 多数据库表的数据提取

4.2 文件读取/包含

  • 区分文件读取与文件包含漏洞
  • 参数发现技术(wfuzz)
  • 关键配置文件路径:
    • /etc/knockd.conf
    • Web应用配置文件

4.3 敲门协议

  • 敲门服务工作原理
  • 端口顺序识别
  • 使用nc工具执行敲门

4.4 密码爆破

  • 密码本整理与优化
  • sucrack工具的使用
  • 本地爆破与远程爆破的区别

4.5 提权技术

  • sudo -l的检查与利用
  • 多种提权路径的选择
  • 特权文件写入技巧

5. 防御建议

  1. SQL注入防御

    • 使用参数化查询
    • 实施最小权限原则
    • 敏感数据加密存储
  2. 文件操作安全

    • 限制文件读取范围
    • 禁用不必要的文件操作功能
  3. 认证安全

    • 禁止使用明文存储密码
    • 实施强密码策略
    • 限制SSH尝试次数
  4. 敲门协议安全

    • 使用更复杂的敲门序列
    • 限制敲门IP范围
    • 记录敲门日志
  5. 权限管理

    • 定期审核sudo权限
    • 实施最小特权原则
    • 关键文件设置严格权限

6. 工具清单

  • 扫描工具:nmap
  • SQL注入:sqlmap
  • 参数发现:wfuzz
  • 敲门工具:netcat (nc)
  • 密码爆破:hydra, sucrack
  • 提权检查:sudo -l

通过这两种解法,展示了从Web应用漏洞到系统提权的完整渗透路径,强调了在渗透测试中多角度思考的重要性。

DC-9 靶机渗透实战:从SQL注入到提权的双解法复现解析 1. 靶机信息收集 1.1 初始扫描 使用nmap进行初始扫描,发现开放端口: 80端口:HTTP服务 22端口:SSH服务(被过滤) 1.2 服务识别 Web服务:80端口运行着一个带有搜索功能的网站 SSH服务:22端口被过滤,无法直接访问 2. 解法一:通过敲门协议提权 2.1 SQL注入攻击 发现注入点 :网站搜索功能存在SQL注入漏洞 利用工具 :使用sqlmap进行自动化注入 可用注入方式:UNION注入和时间盲注 获取数据 : 获取用户表数据(包含用户名和明文密码) 获取admin密码: transorbital1 发现另一个数据库中的管理员凭据 2.2 文件读取漏洞 发现漏洞 :存在文件读取功能(最初误判为文件包含) 参数发现 :使用wfuzz发现 file 参数 读取关键文件 : 尝试读取用户家目录下的.bashrc(失败) 读取 /etc/knockd.conf 文件,发现敲门协议配置 2.3 敲门协议利用 敲门协议原理 :按特定顺序访问端口可开启SSH服务 发现端口顺序 :7469, 8475, 9842 执行敲门 : 2.4 SSH爆破登录 准备凭据 :使用SQL注入获取的用户名和密码 成功登录 :发现3个可登录账户 后渗透发现 : 其中一个账户下有密码本文件 使用密码本爆破出更多有效凭据 2.5 提权 sudo -l检查 :发现可写入root权限文件 提权方法选择 : 添加特权用户 设置SSH免密登录 直接通过sudo提权 3. 解法二:通过Webshell提权 3.1 初始步骤 同解法一:通过SQL注入获取admin密码 transorbital1 会话利用 :通过admin会话机制写入webshell 3.2 获取数据库凭据 读取配置文件 :获取 config.php 中的数据库凭据 数据库连接 :获取完整用户表数据 3.3 本地密码爆破 工具准备 :上传sucrack和密码本到靶机 本地爆破 :针对本地用户进行密码爆破 获取有效凭据 :得到3组有效SSH凭据 3.4 提权 后续步骤与解法一相同,通过sudo提权 4. 关键知识点总结 4.1 SQL注入 UNION注入和时间盲注的利用 sqlmap工具的高级使用 多数据库表的数据提取 4.2 文件读取/包含 区分文件读取与文件包含漏洞 参数发现技术(wfuzz) 关键配置文件路径: /etc/knockd.conf Web应用配置文件 4.3 敲门协议 敲门服务工作原理 端口顺序识别 使用nc工具执行敲门 4.4 密码爆破 密码本整理与优化 sucrack工具的使用 本地爆破与远程爆破的区别 4.5 提权技术 sudo -l的检查与利用 多种提权路径的选择 特权文件写入技巧 5. 防御建议 SQL注入防御 : 使用参数化查询 实施最小权限原则 敏感数据加密存储 文件操作安全 : 限制文件读取范围 禁用不必要的文件操作功能 认证安全 : 禁止使用明文存储密码 实施强密码策略 限制SSH尝试次数 敲门协议安全 : 使用更复杂的敲门序列 限制敲门IP范围 记录敲门日志 权限管理 : 定期审核sudo权限 实施最小特权原则 关键文件设置严格权限 6. 工具清单 扫描工具:nmap SQL注入:sqlmap 参数发现:wfuzz 敲门工具:netcat (nc) 密码爆破:hydra, sucrack 提权检查:sudo -l 通过这两种解法,展示了从Web应用漏洞到系统提权的完整渗透路径,强调了在渗透测试中多角度思考的重要性。