通过HTTP参数污染绕过WAF拦截 (转)
上个星期我被邀请组队去参加一个由CSAW组织的CTF夺旗比赛.因为老婆孩子的缘故,我只能挑一个与Web漏洞利用相关的题目,名字叫做”HorceForce”.这道题价值300点。这道题大概的背景是,你拥有一个低权限的帐号并需要找到方法来获得管理员权限。
当然,有很多种方法来介绍如何通过这关,但我想分享下我的通关经验。
当把一些单引号作为参数值发送之后返回了MySQL的典型报错信息“MySQL SQL Error Message”,因此可以轻易发现这里存在一个SQL注入漏洞。
然后,正如你了解的,我们通常会进行如下尝试:
http://128.238.66.217/horse.php?id=7 or 1 IN (select current_user)
然后我得到了一个错误信息,类似“请停止攻击该网站“这样的内容。
在我尝试了很多绕过SQLi filter的方法之后,我意识到在网站背后配置了一个WAF来阻止任意包含“select”或“union”等在利用SQL注入时常用的SQL查询关键字。通过这样的黑盒测试可以猜测出WAF使用了类似下面这样的正则:
/^.*select.*$/ or /^.*union.*$/
这意味着,提交任意带有SQL注入企图的字符串,如blablaSELECTblabla或像/*!union*/这样的绕过方式都会触发WAF拦截的错误信息。
在进行了一些研究之后,我发现通过HTTP参数污染的方式能够使攻击者绕过WAF的拦截。
那么,究竟要如何实现呢?
我们假设有一个通过GET方式提交的参数“id”,你可以重复构造这个参数并以下面的形式发送出去:
?id=value1&id=value2
然后,依你使用的框架不同(PHP,Java,ASP.NET,etc),参数字符串会以不同的方式进行解析,在我们实验的场景下Apache/PHP,如果你可以多次注入同一个参数值,只有最后一个参数值会被框架解析,但是你猜怎么着?只有第一个参数会经过WAF的分析和过滤!
这意味着,通过注入: id=7&id=[SQLi]
WAF的网络层会解析 id=7 <-合法
PHP应用层会解析 id=[SQLi] <-注入语句成功执行
因此,这是一个典型的例子,你注入的东西在网络层和应用层被区别对待了。
下面是一张表格,列举了不同的框架当多次接受同一个参数时的不同表现。像ASP.NET,如果它接受到两个参数值,它会拼接两个相同参数的值,因此你可以将被过滤的关键词拆分到两个参数中进行攻击从而绕过WAF,当然这个主题已经超过这篇文章讨论的范围了。
接下来,我们尝试注入一些SQL语句:
128.238.66.217/horse.php?id=0&id=7%20union%20select%201,2,3,current_user
你能注意到,所有的注入利用语句都写到了第二个参数值的位置,这将不会被WAF解析。
我得到了第一次正确的返回结果:
csaw_chal1@localhost
接下来就是常规的MySQL注入过程,这里不再赘述,这篇文章主要在于讲解一种新的绕过WAF的方式,Thx
for reading!
转: http://www.freebuf.com/articles/web/5908.html 谢!
通过HTTP参数污染绕过WAF拦截 (转)的更多相关文章
- 一枚通过参数污染绕过百度RASP的XSS
日常工作过程中,偶然发现一个网站登录页面,在页面返回包中存在一个隐藏参数"mess",且该页面部署了百度RASP进行防护,本文介绍如何发现隐藏参数以及如何通过参数污染方式造成XSS ...
- 如何使用SQLMAP绕过WAF
WAF(web应用防火墙)逐渐成为安全解决方案的标配之一.正因为有了它,许多公司甚至已经不在意web应用的漏洞.遗憾的是,并不是所有的waf都是不可绕过的!本文将向大家讲述,如何使用注入神器SQLMa ...
- 黑客是怎样绕过WAF之三重防护绕过讲解
什么是WAF Web Application Firewall 通过执行一系列针对HTTP/HTTPS的安全策略来防御对Web应用的攻击. 目前主要有单设备WAF与云WAF WAF的现状 1.太多数W ...
- 一些绕过waf的笔记
转自:http://fuck.0day5.com/archives/622.html 一.各种编码绕过1. ? 1 2 ?id=1 union select pass from admin limit ...
- 绕过WAF、安全狗知识整理
0x01 前言 目前市场上的WAF主要有以下几类 1. 以安全狗为代表的基于软件WAF 2. 百度加速乐.安全宝等部署在云端的WAF 3. 硬件WAF WAF的检测主要有三个阶段,我画了一张图进行说明 ...
- 绕过waf
WAF:有硬件和软件类型. 常见的软WAF,常见:安全狗.云锁.云盾.护卫神. SQL注入的绕过: WAF核心机制就是正则匹配. 通过正则匹配,如果符合规则,就拦截. 比如sql注入中and 1=1 ...
- SQL注入绕过waf的一万种姿势
绕过waf分类: 白盒绕过: 针对代码审计,有的waf采用代码的方式,编写过滤函数,如下blacklist()函数所示: 1 ........ 2 3 $id=$_GET['id']; 4 5 $ ...
- 深入理解SQL注入绕过WAF和过滤机制
知己知彼,百战不殆 --孙子兵法 [目录] 0x0 前言 0x1 WAF的常见特征 0x2 绕过WAF的方法 0x3 SQLi Filter的实现及Evasion 0x4 延伸及测试向量示例 0x5 ...
- HTTP参数污染
HTTP Parameter Pollution简称HPP,所以有的人也称之为“HPP参数污染”. 一篇很不错关于HPP参数污染的文章:http://www.paigu.com/a/33478/235 ...
随机推荐
- OSRM笔记
OSRM OSRM(OpenStreetMap Routeing Machine)可用于路线规划.作为高性能的路线规划引擎,OSRM使用C++14编写,基于开源的OpenStreetMap数据实现. ...
- Explain 执行计划 和 SQL优化
Explain 介绍 在分析查询性能时,考虑EXPLAIN关键字同样很管用.EXPLAIN关键字一般放在SELECT查询语句的前面,用于描述MySQL如何执行查询操作.以及MySQL成功返回结果集需要 ...
- Hibernate主配置文件、映射配置文件以及复合主键查询
Hibernate.cfg.xml主配置文件 主配置文件中主要配置:数据库连接信息.其他参数.映射信息! 常用配置查看源码: hibernate-distribution-3.6.0.Final\pr ...
- Ubuntu中安装Sublime Text 3并安装Package Control
最近在学习Linux的使用,并在Linux中进行python开发练习.在学习过程中,了解到Sublime Text3是一款备受开发者推崇的代码编辑器,因此在Ubuntu中安装了Sublime Text ...
- MVC应用程序使用Entity Framework
创建空的MVC应用程序,为了想使用Entity Framework的类库,发现即无法正常引用.如下图,Insus.NET已经明确引了System.Data.Entity(下图Highlight的代码) ...
- Extjs4 store load 有中文字符提交后台乱码解决方法
一.在load提交时对字符串进行decode处理. {name : encodeURIComponent(value)} 然后在后端进行反编码 java.net.URLDecoder.decode(n ...
- 胜利大逃亡(续)hdu1429(bfs)
胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ...
- Eclipse自动编码提示设置
1.window->Preferences->Java->Editor->content assist 输入 .abcdefghijklmnopqrstuvwxyz,然后 OK ...
- Entity FrameWork(实体框架)是以ADO.NET Entity FrameWork ,简称为EF
Entity FrameWork(实体框架)是以ADO.NET Entity FrameWork ,简称为EF Entity FrameWork的特点 1.支持多种数据库(MSSQL.Oracle.M ...
- windows环境下IP多访问
1.E:\wamp64\bin\apache\apache2.4.23\conf\extra\httpd-vhosts.conf 添加: <VirtualHost *:80> Server ...