博客园 首页 私信博主 显示目录 隐藏目录 管理
Live2D

文件上传高级利用

重绘图

正常图片上传后会重新渲染,会抹去代码加入部分。具体绕过方法可以参考大佬upload-labs总结

使用工具绕过。

项目地址

https://github.com/RickGray/Bypass-PHP-GD-Process-To-RCE

用法

php codeinj.php demo.gif "<?php phpinfo();?>"

结合phpinfo与本地文件包含利用

参考上一篇博客

 

目录穿越

<Directory "D:/www/ichunqiu/upload">
<FilesMatch "\.(?i:php|php3|php4)$"
Order Allow.Deny
Deny from all
</FilesMatch>
</Directory>

以上代码为在upload下无权限访问php,php3,php4等文件

首先判断目录是否为权限限制

访问如下url显示Forbidden

 

上传图片正常访问如下

 

访问不存在的图片显示Not Found

 

以上访问过程可判断次目录无法访问php文件

继续向上级目录访问

 

 

以上图片判断upload目录也没有php访问权限

直道测试到ichunqiu目录有访问权限

上传图片bp抓包,file处修改为file/../../进行目录穿越上传成功

 

如果碰到waf情况拦截../可以使用.././../进行绕过./代表当前目录

 

 

在线解压缩

Webshll打包到压缩包中

1.模板上传处常用压缩包上传后进行自动解压

1.1.部分此类有监测压缩包中的内容的,可尝试建立目录进行压缩

2.使用目录穿越../的方法向上一级目录进行上传

将php文件直接压缩为zip,然后用notepad++打开压缩文件如下

 

将phpinfo改为../info,如下图

 

文件上传

 

成功上传并穿越目录

 

将文件软链接打包到压缩包

文件软链接到/etc/passwd等文件,达到任意文件读取

ln -s /etc/passwd ./a   #文件/etc/pawwsd软链接到a
zip --symlinks -r 1.zip ./a  #将a文件压缩为1.zip

上传成功

 

点击a查看到/etc/passwd文件

 

文件软链接到/文件

ln -s / b    #/软链接到b
zip --symlinks 2.zip b  #将b压缩为2.zip

上传2.zip,上传成功

 

点击b显示目录

 

其他技巧

图片文件头十六进制匹配

一般检查文件头内容是加入gif89a即可,但部分后台有可能需要强制匹配文件头的16进制数据

如需要匹配下图中的\xff\xd8\xff

 

中bp抓包,文件中加入已url编码的%ff%d8%ff

上传过程

 

%ff%d8%ff进行urldecode

 

可成功上传

 

双写filename

部分waf会监测第一个filename中的内容,而忽略第二个filename内容

 

psfilename="oh-info.png";之后加一个空格再跟上第二个filename

 

参考:https://choge.top/2020/02/29/%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0%E9%AB%98%E7%BA%A7%E5%88%A9%E7%94%A8/

posted @ 2021-01-24 13:57  My_Dreams  阅读(1071)  评论(0编辑  收藏  举报
(function() { $("pre").addClass("prettyprint"); prettyPrint(); })();