PHP bypass安全狗思考
一、访问的绕过
在千辛万苦上传shell成功,但是访问却被安全狗拦截这种情况下,该如何访问到shell文件呢?
有一种办法是直接在文件后添加/。
根据大佬的解释,"应该是apache和安全狗对连接的解析不一致,apache会寻找最后一个.的位置,很可能吧后面的/抛弃掉后路由到文件,安全狗则粗略的寻找/发现后面没有字符了就直接过了",如下图所示:
直接访问被拦截
但是添加/却不会
二、文件后缀的绕过
在文件上传请求体中,Content-Disposition字段指定了文件上传的文件名信息。我们可以在name和filename之间插入无用的数据,让安全狗无法识别filename,测试数据大小为1810字节左右时可以绕过;
尝试修改上传传参,在filename后面不加"
Content-Disposition: form-
data
; name=
"uploaded"
;filename=
"11.php
测试上传绕过,安全狗似乎无法匹配规则,但服务器又可以接收
尝试超出安全狗检测数据大小,在boundry末尾插入垃圾数据实际测试boundry大小为1810长度(略有偏差),安全狗不再拦截
绕过成功
回车换行截断绕过
Content-Disposition: form-data; name="uploaded";fi
lena
me
=
"1
1.p
h
p
三、文件内容上传绕过
使用分块传输chunk编码,绕过上传内容检测
除了chunk编码,尝试插入冗余数据直接绕过检测并未成功
看是检测文件头的样子,直接在图片数据后面插入一句话+文件后缀绕过
原文始发于微信公众号(HackingWiki漏洞感知):PHP文件上传bypass某狗的思考
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论