漏洞原理
XSS被称为跨站脚本攻击(Cross Site Scripting),由于和层叠样式表(Cascading Style Sheets,CSS)重名,改为XSS。主要基于JavaScript语言进行恶意攻击,因为js非常灵活操作html、css、浏览器。
利用方式
利用网页开发时web应用程序对用户输入过滤不足导致将恶意代码注入到网页中,使用户浏览器加载并执行恶意代码,通常是JavaScript类型,也包括java、vbs、flash、html等。
执行方式
用户浏览被XSS注入过的网页,浏览器就会解析这段代码,就被攻击了。因为浏览器当中有JavaScript解析器,浏览器不会判断代码是否恶意,只要符合语法规则,就直接解析了。
漏洞防御
● 使用黑名单进行
●对HTML标签或特殊字符进行过滤
●使用内容安全的CSP
●使用设计上就会自动编码的框架,如:OWASP ESAPI、React JS、JSOUP等,对于JAVA而言,可以使用ESAPI.encoder().encodeForHTML()对字符串进行HTML编码。
●对于反射型和存储型XSS,可以在数据返回给客户端浏览器时,将敏感字符进行转义,如:将单引号进行编码替换(十进制编码'、十六进制编码'、HTML编码&apos、Unicode编码\u0027等)。
●对于DOM型XSS,可以使用上下文敏感数据编码。如:在PHP中的htmlspecialchars()、htmlentities()函 数可以将一些预定义的字符转换为HTML实体,如:小于转化为<、大于转化为>、双引号转化为"、单引号转化为&apos、与转化 为&等。
●启用浏览器的HttpOnly特性可以组织客户端脚本访问cookie。如:在PHP中可以通过下面的代码设置cookie并启用HttpOnly。
漏洞验证
环境:server2016
靶场:DVWA
如果我们在搜索框输入的内容原样返回,没有被过滤或者实体编码,则存在xss漏洞


本文详细介绍了XSS攻击的原理,利用方式(如用户输入过滤缺陷),执行过程,以及防御策略,包括黑名单过滤、内容安全策略、框架编码和HTTPOnly特性。还提供了漏洞验证示例,展示了如何在DVWA环境中检测XSS漏洞。

771

被折叠的 条评论
为什么被折叠?



