B 文件上传和文件包含
a.本地JS绕过
浏览器禁用js,或者抓包改文件后缀
b.MIME验证绕过(Content-Type)
修改Content-Tepy类型即可
c.黑名单绕过方式
绕过黑名单验证(大小写绕过)
大小写绕过原理
Windows系统下,对于文件名中的大小写不敏感,例如:test.php和TeSt.PHP是一样的。
Linux系统下,对于文件名中的大小写敏感。例如:test.php和TesT.php就是不一样的。
此时可以通过修改文件后缀,使用大小写混合的写法绕过缺少了对上传文件名获取的大小写转换的黑名单验证。
绕过黑名单验证(空格绕过)
空格绕过原理
Windows系统下,对于文件名中的空格会被作为空处理,程序中的检测代码却不能自动删除空格。从而绕过黑名单。
针对这样的情况需要使用Burpsuite截断HTTP请求之后,修改对应的文件名,添加空格。
绕过黑名单验证(.号绕过)
.号绕过原理
Windows系统下,文件名后缀最后一个点会被自动去除。
例如:
Windows下新建一个1.php.文件,查看。
此时可以通过修改上传文件的后缀,使用*.php.的写法绕过缺少了对去除文件名最后一个点的处理的验证进行绕过。
绕过黑名单验证(特殊符号绕过)
特殊符号绕过原理
Windows系统下,如果上传的文件名中test.php::D A T A 会 在 服 务 器 上 生 成 一 个 t e s t . p h p 的 文 件 , 其 中 内 容 和 所 上 传 内 容 相 同 , 并 被 解 析 。 例 如 : 在 W i n d o w s 系 统 下 新 建 一 个 文 件 名 为 1. p h p : : DATA会在服务器上生成一个test.php的文件,其中内容和所上传内容相同,并被解析。 例如: 在Windows系统下新建一个文件名为1.php::DATA会在服务器上生成一个test.php的文件,其中内容和所上传内容相同,并被解析。例如:在Windows系统下新建一个文件名为1.php::DATA的文件,查看效果。但是在Windows下新建的文件名中包含特殊符号不能成功新建。
当验证代码黑名单过滤中没有过滤掉 ::D A T A , 此 时 就 可 以 通 过 上 传 文 件 后 缀 为 1. p h p : : DATA,此时就可以通过上传文件后缀为1.php::DATA,此时就可以通过上传文件后缀为1.php::DATA格式的文件进行验证绕过。
绕过黑名单验证(路径拼接绕过 php.+空格+.)
路径拼接绕过原理
在没有对上传文件进行重命名的情况下,用户可以自定义文件名并在服务器中上传新建,就会造成对应的绕过黑名单。
例如:
用户新建 1.php.+空格+.
deldot删除最后一个点之后,不再进行删除,trim删除空格,那么最终上传的文件名为1.php.
利用Windows自动去除最后一个点,导致成功上传1.php。
绕过黑名单验证(双写绕过)
双写绕过原理
代码编写过程中,只对黑名单中的内容进行控替换,因为只替换一次所以造成双写绕过。
d.白名单绕过方式
%00截断
- php<5.3.4
B1 文件包含漏洞
本地文件包含
配合上文文件上传,可以解析jpg,txt等格式的文件。
/vul/fileinclude/fi_local.php?filename=../../unsafeupload/uploads/2023/07/15/64735617.jpg&submit=提交查询
并且蚁剑可连接
远程文件包含
无了,以后有机会补充