文件上传高级利用
重绘图
正常图片上传后会重新渲染,会抹去代码加入部分。具体绕过方法可以参考大佬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内容
ps:filename="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/