概论
简介:英文全称Cross site Script,为了与层叠样式表css区分,所以叫xss。xss攻击通常是攻击者通过“HTml注入”插入恶意代码,实现攻击者目的。
分类:反射型XSS,存储性XSS,DOM型XSS
反射型XSS:攻击者输入恶意代码,反射到浏览器执行,一般是攻击者构造恶意链接,诱导用户进行点击。
存储型XSS:攻击者把恶意代码存储到服务器端。
DOM型XSS:反射型XSS的一种,攻击者通过修改DOM节点而形成的XSS。
作用:
- cookie劫持;构造GET、POST请求;
- XSS钓鱼;识别用户浏览器(读取UA;分辨浏览器差异,判断浏览器版本);
- getshell
- 识别用户安装的软件(判断ActiveX空间的classid来判断软件是否存在);
- CSS History Hack(通过判断链接的不同颜色来判断用户是否访问过改网站);
- 获取用户真实ip(调用Java Applet接口来获取客户端ip地址,通过其他ActiveX控件查询ip)
应用
XSS攻击平台:xss在线平台;Attrack API;beef;XSS-Proxy
poc:
<script>alert(/xss/)</script>
<script>confirm(‘xss’)</script>
<script>prompt(‘xss’)</script>
构造方法:
- <>构造html标签
- 伪协议:javascript:
- 事件:onclick、onmouseover、onerror、onkeydown、onkeyup
bypass:
- 大小写转换
- 双写绕过
- <svg>
- html对引号要求不严格,有时可以省略引号
- /代替空格
- tab或者回车来绕过关键字检测
- 利用字符串编码:
- 宽字节吃掉转义字符’\(%5c)’
- a(aa);
- 把tab(	),换行( ),回车(
)插入到任意位置
- 把SOH(),STX()插入到头部位置
- 拆分跨站
<script>z=‘alert’</script>
<script>z=z+’(/xss/)’</script>
<script>eval(z)</script> - 使用base标签,可以使<base>标签下面的目录地址以base标签内的地址为根目录。
- Mission Impossible:
- Apache Expect Header XSS
- Anehta的回旋镖
- Flash XSS
- JavaScript框架XSS:
- Dojo
- YUI
- JQuery
- 待补充
getshell
msf10002 xp
ms12063 win7
XSS蠕虫:
XSS的防御:
- HttpOnly:浏览器页面禁止JavaScript访问带有HttpOnly的cookie。绕过方法
- 输入检测:规范输入字符。XSS Filter,缺点:容易误查,导致用户体验差。
- 输出检测:对输出的字符转义。
- 编码函数:html实体化编码。