本文列举几个典型的网站安全漏洞案例,均源于变量过滤不严,导致严重的安全风险,直接威胁站点权限。
第一个
简要描述:由于变量过滤不严格,存在SQL注入漏洞,攻击者可借此直接获取站点控制权限。
详细说明:查看以下请求URL——https://labs.duba.net/kws/feedback2/his.php?uuid=622D988684F34161BC09E869DB38BF3B&app=2——漏洞点位于 app 参数。通过构造 and 1=1 与 and 1=2 进行测试,返回结果存在显著差异,确认存在注入点。
漏洞证明:
https://labs.duba.net/kws/feedback2/his.php?uuid=622D988684F34161BC09E869DB38BF3B&app=2 and 1=1https://labs.duba.net/kws/feedback2/his.php?uuid=622D988684F34161BC09E869DB38BF3B&app=2 and 1=2
修复方案:对 app 参数实施严格过滤,例如仅允许数字输入,或采用参数化查询方式。
第二个
简要描述:同样因过滤不严,存在SQL注入漏洞,攻击者有机会获取服务器权限。
详细说明:本次漏洞点仍位于 app 参数,但攻击手法更进一步,利用联合查询获取数据库敏感信息。
漏洞证明:
https://labs.duba.net/kws/feedback2/his.php?uuid=12B70C061426AAA96F58AE431D180055&app=5%20and%201=2%20union%20select%201,2,version(),4,5,user(),database(),8,9--https://labs.duba.net/robots.txt
从测试payload可以看出,攻击者已成功获取数据库版本、数据库用户名及当前数据库名称——这意味着服务器权限基本沦陷。不过我们未进一步深入测试。
修复方案:所有输入参数均需严格过滤,不要仅依赖黑名单机制,建议采用白名单验证或参数化查询。
第三个
简要描述:留言功能过滤不严,导致跨站脚本(XSS)漏洞。
详细说明:同样在该站点的留言模块,输入输出均未进行转义处理,攻击者可注入恶意脚本,执行跨站攻击。
漏洞证明:https://labs.duba.net/kws/feedback2/his.php?uuid=12B70C061426AAA96F58AE431D180055&app=5
修复方案:对用户输入进行HTML实体编码,输出时同样需要转义,尤其是留言内容部分。
