本文作者:li9hu@Timeline Sec
本文字數:1024
閱讀時長:3~4min
聲明:請勿用作違法用途,否則後果自負
0x01 簡介
通達OA采用基于WEB的企業計算,主HTTP伺服器采用了世界上最先進的Apache伺服器,性能穩定可靠。資料存取集中控制,避免了資料洩漏的可能。提供資料備份工具,保護系統資料安全。多級的權限控制,完善的密碼驗證與登入驗證機制更加強了系統安全性。
0x02 漏洞概述
該漏洞是由于通過删除通達OA身份認證檔案達到繞過登入限制, 結合任意檔案上傳達到RCE的效果。
0x03 影響版本
通達OA<v11.5&v11.6版本
0x04 環境搭建
公衆号内回複“通達OA11.6”擷取安裝包
在Windows下直接輕按兩下安裝

點選确定通路
OA管理者使用者名:admin 密碼為空
使用解密工具SeayDzend解密源碼
0x05 漏洞複現
注意!該漏洞會删除伺服器上的檔案!謹慎複現!
工具下載下傳位址:
https://github.com/admintony/TongdaRCE
複制
使用腳本删除檔案後再登陸會變成這樣
是以,請勿使用線上環境進行複現,請自行搭建!
0x06 漏洞分析
從網上公布的EXP可以知道會删除掉auth.inc.php檔案,該檔案是通達用于做身份驗證的,需要登入通路的檔案都會将它包含進來.包括後面需要用到的upload.php也包含了此檔案,但是是通過include包含進來的差別于require若包含檔案不存在include是不會導緻程式終止的。
接着定位到任意檔案删除的漏洞點/module/appbuilder/assets/print.php。直直白白, 打頭6行代碼就實作了任意檔案删除。
隻要GET傳值guid=../../../webroot/inc/auth.inc.php, 帶入unlink就可以删除上面介紹的身份驗證檔案, 那麼大多數需要身份驗證的地方将失效。
再介紹upload.php利用之前, 先講一下通達OA祖傳變量覆寫。這裡有個坑就是, 有的解密工具會漏掉一個$, 導緻掉了一鍵盤的頭發也不明白變量覆寫在哪裡... 因為該檔案是common.inc.php, 可想而知大部分檔案都有包含,大部分地方可以拿變量覆寫來激情操作。
接着定位到上傳點/general/data_center/utils/upload.php, 第9行變量覆寫action為upload盤進if,接着我們upload位置就是/data_center/attachment了。第84行變量覆寫s_n為我們的惡意檔案, 90行upload位置拼接上s_n就是我們最終檔案所在的位置。這裡在87行變量覆寫repkid為../../../就能目錄穿越将我們的馬兒放在其他目錄下, 至于為什麼後面會說。
參考了前輩文章, 之是以要目錄穿越到其他位置存放馬, 是因為通達OA的nginx限制了attachment目錄下檔案通路的權限, 導緻我們無法正常解析我們的馬。~* 表示正則模式, 比對到以attachment開頭的任意php等敏感檔案都不允許。
0x07 修複方式
更新至官方最新版本。
參考連結:
https://drivertom.blogspot.com/2020/08/oa116-preauth-rce-0day.html