漏洞原理:
xss(cross site script)跨站脚本攻击,指的是攻击者往web页面插入恶意脚本代码,当用户浏览时,嵌入web页面里的脚本代码就会执行,从而达到恶意攻击用户的特殊目的
xss攻击中一般有三个角色:攻击者,目标服务器,受害者浏览器
漏洞原因:
生成html过程中,html语法中含有特殊意义的字符(元字符)没有被正确处理,服务器端没有对用户输入进行安全方面的校验,攻击者很容易通过正常输入手段,夹带一些恶意html代码,当受害者的浏览器访问目标服务器上被恶意注入脚本的页面后,由于它对目标服务器的信任,这段恶意脚本的执行不会受到阻碍,因此,受害者的cookie被窃取,受害者服务器被控制,简单的来说,就是太相信用户的输入,没有做过滤,没有防御
漏洞危害:
- 窃取用户cookie
- 通过javascript篡改网页
- 篡改网页
- 控制用户浏览器
xss类型:
反射型:
通过将恶意脚本代码插入到URL中,当URL被打开是,恶意代码被HTML解析,运行
特点:非持久话,必须是受害者点击后才能引起
存储型:
攻击者发现一个存在xss漏洞的借口或页面后构造一个恶意的html脚本(payload),将其插入到页面,存储到服务器数据库里.使得所有浏览该页面的用户都受到安全威胁
特点:持久性,危害更大
DOM型:可以参考以下文章
XSS盲打的解释:在渗透测试中,在不知到该页面是否有xss漏洞的前提下,见框就插
漏洞对策:
- html转义,将特殊字符转义为普通字符,html转义对消除xss漏洞至关重要
- 明确设置http响应的字符编码
- 输入校验
- 给cookie添加httponly属性
xss文章: