天天看點

通達OA繞過身份驗證+任意檔案上傳RCE

本文作者: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繞過身份驗證+任意檔案上傳RCE

點選确定通路

通達OA繞過身份驗證+任意檔案上傳RCE

OA管理者使用者名:admin 密碼為空

使用解密工具SeayDzend解密源碼

通達OA繞過身份驗證+任意檔案上傳RCE

0x05 漏洞複現

注意!該漏洞會删除伺服器上的檔案!謹慎複現!

工具下載下傳位址:

https://github.com/admintony/TongdaRCE           

複制

使用腳本删除檔案後再登陸會變成這樣

通達OA繞過身份驗證+任意檔案上傳RCE

是以,請勿使用線上環境進行複現,請自行搭建!

通達OA繞過身份驗證+任意檔案上傳RCE
通達OA繞過身份驗證+任意檔案上傳RCE

0x06 漏洞分析

從網上公布的EXP可以知道會删除掉auth.inc.php檔案,該檔案是通達用于做身份驗證的,需要登入通路的檔案都會将它包含進來.包括後面需要用到的upload.php也包含了此檔案,但是是通過include包含進來的差別于require若包含檔案不存在include是不會導緻程式終止的。

通達OA繞過身份驗證+任意檔案上傳RCE

接着定位到任意檔案删除的漏洞點/module/appbuilder/assets/print.php。直直白白, 打頭6行代碼就實作了任意檔案删除。

隻要GET傳值guid=../../../webroot/inc/auth.inc.php, 帶入unlink就可以删除上面介紹的身份驗證檔案, 那麼大多數需要身份驗證的地方将失效。

通達OA繞過身份驗證+任意檔案上傳RCE

再介紹upload.php利用之前, 先講一下通達OA祖傳變量覆寫。這裡有個坑就是, 有的解密工具會漏掉一個$, 導緻掉了一鍵盤的頭發也不明白變量覆寫在哪裡... 因為該檔案是common.inc.php, 可想而知大部分檔案都有包含,大部分地方可以拿變量覆寫來激情操作。

通達OA繞過身份驗證+任意檔案上傳RCE

接着定位到上傳點/general/data_center/utils/upload.php, 第9行變量覆寫action為upload盤進if,接着我們upload位置就是/data_center/attachment了。第84行變量覆寫s_n為我們的惡意檔案, 90行upload位置拼接上s_n就是我們最終檔案所在的位置。這裡在87行變量覆寫repkid為../../../就能目錄穿越将我們的馬兒放在其他目錄下, 至于為什麼後面會說。

通達OA繞過身份驗證+任意檔案上傳RCE

參考了前輩文章, 之是以要目錄穿越到其他位置存放馬, 是因為通達OA的nginx限制了attachment目錄下檔案通路的權限, 導緻我們無法正常解析我們的馬。~* 表示正則模式, 比對到以attachment開頭的任意php等敏感檔案都不允許。

通達OA繞過身份驗證+任意檔案上傳RCE

0x07 修複方式

更新至官方最新版本。

參考連結:

https://drivertom.blogspot.com/2020/08/oa116-preauth-rce-0day.html