【攻防演练】某协同办公系统多个1day分析过程

【攻防演练】某协同办公系统多个1day分析过程,涉及两个回显SSRF、一个文件上传。

0x01 任意文件上传

1.1 代码分析

漏洞出现在E-mobile/App/Ajax/ajax.php文件中,是后缀过滤被绕过导致的。

业务逻辑如下:

(1)$photo = $_FILES["upload_quwan"]; 将上传文件赋值给$photo

(2)$ext_temp = path_info($photo["name"]); 获取上传文件后缀

(3) 后缀合法性校验(漏洞核心位置)

image.png

校验过程存在缺陷,只校验了上传文件后缀有没有在黑名单,却未考虑后缀为空的情况,比如123.php.,此时取到的后缀为空,不在黑名单。

(4) 拼接路径,完成上传。

image.png

1.2 漏洞利用

action=mobile_upload_save直接上传即可

image.png

image.png

0x02 全回显SSRF可RCE

2.1 漏洞分析

还是这个文件,继续分析action为其他的分支,在action=dingtalkImg时,存在该漏洞,我们看下实现过程:

(1) 获取一个result参数,然后传入GrabImage函数进行远程文件抓取操作。

image.png

(2) 跟进GrabImage,该函数做了几点操作:

  • 从url中获取文件名
  • 打开url读取图片流
  • 打开文件,写入图片流

全程一气呵成,没有做任何文件后缀校验。

image.png

所以,该处既存在全回显SSRF,同样文件保存在服务器,可以造成RCE

2.2 漏洞利用

服务器上启一个web服务,将代码放进去:

image.png

然后构造URL进行请求:

image.png

image.png

2.3 类似的接口还有

action=outSignImg

image.png

0x03 回显SSRF

3.1 漏洞分析

/E-mobile/App/System/File/downfile.php

(1)赋值过程(11-18行)

  1. $fileurl = $_REQUEST["url"];
  2. // ....
  3. $rooturl = "http://".$_SERVER['HTTP_HOST'];
  4. $checkurl = explode("/", $fileurl);

$checkurl中包含某些特定字符时,则拼接指定的URL:

image.png

(2)拼接完整URL,不满足上述两种特定流程时。

  1. else
  2. {
  3. $url = $rooturl.$fileurl;// 将HOST和url参数值拼接
  4. $filetype = pathinfo($fileurl); // 获取文件后缀
  5. $type = $filetype["extension"]; // 将type设置为文件后缀
  6. }

(3)$url传入file_get_content造成SSRF

image.png

3.2 漏洞利用

  • 利用方法1:url=@butian.net
  • 利用方法2:请求包HOST设置为butian.net

image.png

  • 发表于 2022-09-02 10:15:37
  • 阅读 ( 10905 )
  • 分类:漏洞分析

2 条评论

Alivin
Alivin

13 篇文章

站长统计