防火墙一种运行在真正的应用逻辑之前的安全系统,正是因为它无法真正的嵌入到业务里所以天生的会存在缺陷,只不过这种缺陷是大还是小的问题,正常的架构和数据流向如下:
user->CDN->webserver->app->data
出现问题的在app和data这里,但是防火墙尝试在cdn和webserver层去解决安全问题,由于大家对数据的理解是不一致的,譬如以同样的'来说,在cdn里它没有意义,它只是流通的数据,除非解析到http层面它可以变成http请求的一个参数或者其他组成部分,然后到webserver,这个'同样没有实际的价值,它依然是http里的一个数据,真正让这个'有意义的是app里的逻辑,是数据库,是执行命令,是回显到输出,数据一旦变成可以执行的命令漏洞就来了。
由于工作在不同的层面,所以防火墙(你可以理解为防护策略)对同样的数据会有不同的反应,譬如正常的请求是
http://www.wooyun.org/index.php?id=123
如果我们输入
GET /index.php?id=123 union select 1,2,3 from mysql.user HTTP/1.0 HOST: noexist.com
由于工作在cdn层面的防护墙是不会去管一个http请求的真实性的,所以这个请求被拦截(由于是无效的host所以其实不会到真实的webserver,这只是举例说明),典型的如宝
同样如果我们输入
GET /indexabc.php?id=123&abc=union select 1,2,3 from mysql.user HTTP/1.0 HOST: wooyun.org
由于工作在webserver层面的防火墙是不会知道一个请求的有效性的,所以这个请求被拦截(由于这个后端逻辑和参数都是无效的,所以其实这个请求也不会有威胁),典型的如狗
同样如果我们输入
GET /index.php?id=123&abc=union select 1,2,3 from mysql.user HTTP/1.0 HOST: wooyun.org
这个如果不被拦截,那么我们就知道这个是工作在app内部的防火墙了,这个时候就非常难绕过了,基本与程序内部做了过滤是一致的,只能找这个规则的不当之处了.
我们知道了是什么层面的防火墙,那么就可以思考如何绕过了,请持续关注wooyun的zone和drops吧,下次再写。
相关讨论:
1#
VIP (Fatal error: Call to undefined function getwb() in /data1/www/htdocs/106/wzone/1/index.php on line 10) | 2013-07-14 15:28
学习了
2#
Xhm1n9 | 2013-07-14 15:34
good
3#
无敌L.t.H (:?门安天京北爱我) | 2013-07-14 17:08
/indexabc.php这种有可能被Rewrite,这样也算是一个有效的访问吧?
4#
xsser (十根阳具有长短!!) | 2013-07-14 17:13
@无敌L.t.H 你可以分析系统里没有被rewrite 的
5#
Yaseng (看黄片 到 www.yaseng.me) | 2013-07-14 17:39
好 !
cdn 搞到真实ip 改本地hosts 就彻底废了
6#
陈再胜 (http://t.qq.com/mibboy求收听) | 2013-07-14 17:42
其他看懂了,如宝那段没看懂
7#
xsser (十根阳具有长短!!) | 2013-07-14 17:43
@Yaseng 不只是这样,后续会继续讲绕过方式
8#
楼上是马甲 | 2013-07-14 21:59
能介绍下linux下穿墙就好了