老张的统登服务器又挂了。这次不是录漏被DDoS,是洞线登录框被人当后门耍了——对方用了个最简单的SQL注入payload,连万能密码都没换。扫描我帮他翻日志的统登时候,看到后台被塞进了一个ASP一句话木马,录漏时间戳显示攻击前后不过四分钟。洞线这让我想起一个扎心的扫描事实:ASP系统至今还撑着一大批老企业的内部管理系统,而这些系统的统登登录漏洞,简直比菜市场大妈的录漏口袋还容易掏。
所谓在线扫描,洞线说白了就是扫描拿工具去撞登录页。你输入一个目标网址,统登工具会自动枚举常见的录漏注入点、弱口令、洞线默认账号,甚至暴力破解。ASP的老毛病在于,很多开发早年的代码根本没做参数化查询,直接把Request.Form("username")拼进SQL字符串。我见过一个典型的漏洞代码:sql="select * from admin where user='"&user&"' and pass='"&pass&"'"。你猜怎么着?只要在用户名框输入' or '1'='1'--,密码随便打,直接进后台。这种代码写于2005年,但2023年我还在客户系统里翻到过。
扫描工具的原理并不神秘。它们先抓取登录页的form结构,然后替换参数值,发送几百个测试请求。响应时间、页面长度、返回的HTTP状态码,都是判断依据。有个容易被忽略的细节——错误提示。如果系统回显“用户名不存在”和“密码错误”是两种不同页面,那攻击者连枚举用户名都省了。我见过更蠢的,登录失败直接弹Microsoft OLE DB Provider for SQL Server 错误 '80040e14',把数据库类型和表结构都暴露了。这种信息泄露对扫描器来说,等于把门牌号写脸上。
实际操作中,扫描的准确率得打折扣。有些工具喜欢用字典跑弱口令,admin/123456这种组合命中率高,但碰到稍微复杂点的密码就抓瞎。更麻烦的是,现在不少ASP系统套了WAF或者做了请求频率限制,扫描器一跑快就被封IP。所以真正有效的扫描,得结合手工判断。比如先试着在密码框输入admin'--,看页面反应;再用Burp Suite抓包,改Referer头绕过简单的来源校验。这些土办法,往往比纯自动化工具更管用。
说个我自己的案例。去年帮一家做物流的公司做安全测试,他们的ASP系统是个老掉牙的车辆调度平台。扫描器跑了二十分钟,一无所获——因为登录页做了简单的JS加密,密码字段传输前会被转成十六进制。但扫描器只盯着原始HTTP包,自然找不到突破口。后来我手动把加密函数逆了一下,发现就是个异或运算,密钥藏在另一个JS文件里。解密后重新提交,密码框直接变成明文传输。更讽刺的是,后台管理员密码是admin888,连字典都不用跑。
扫描这事,最怕的就是只扫不修。很多企业拿扫描报告当应付检查的文档,漏洞列了一堆,一个不补。ASP系统的修复其实不难,参数化查询、加验证码、限制登录失败次数,三板斧下去就能挡掉九成攻击。但现实是,业务部门怕麻烦,IT部门怕背锅,最后漏洞就晾在那儿。有一次我问客户为什么不改代码,对方回答:“改了怕影响业务,反正内网系统,外网扫不到。”结果他们的内网WiFi密码是八个8,连保洁阿姨都知道。
别迷信扫描结果。工具能告诉你哪里有洞,但补不补、怎么补,还得靠人。ASP系统就像老房子,漏雨的地方不止一处,你拿仪器测出裂缝不算本事,得真爬上屋顶把瓦片换了。下次再有人拿着扫描报告说“安全了”,你最好自己登进去看一眼——说不定后台密码还是123456呢。