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注入攻击
- 发现注入点:网站搜索功能存在SQL注入漏洞
- 利用工具:使用sqlmap进行自动化注入
- 可用注入方式:UNION注入和时间盲注
- 获取数据:
- 获取用户表数据(包含用户名和明文密码)
- 获取admin密码:
transorbital1 - 发现另一个数据库中的管理员凭据
2.2 文件读取漏洞
- 发现漏洞:存在文件读取功能(最初误判为文件包含)
- 参数发现:使用wfuzz发现
file参数 - 读取关键文件:
- 尝试读取用户家目录下的.bashrc(失败)
- 读取
/etc/knockd.conf文件,发现敲门协议配置
2.3 敲门协议利用
- 敲门协议原理:按特定顺序访问端口可开启SSH服务
- 发现端口顺序:7469, 8475, 9842
- 执行敲门:
nc target_ip 7469 nc target_ip 8475 nc target_ip 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应用漏洞到系统提权的完整渗透路径,强调了在渗透测试中多角度思考的重要性。