跨站脚本攻击漏洞

01.跨站脚本攻击漏洞概述

1.概述:
跨站脚本( Cross-site Scripting)攻击,攻击者通过网站注入点注入客户端可执行解析的 payload(脚本代码),当用户访问网页时,恶意 payload自动加载并执行,以达到攻击者目的(窃取 cookie、恶意传播、钓鱼欺骗等).
为了避免与HTML语言中的CS相混淆,通常称它为“XSS"
2.危害:
钓鱼;(利用×s构造出一个登录框,骗取用户账户密码
获取用户信息;(如浏览器信息、jp地址、 cookie信息等)
注入木马或广告链接;(有些在主站注入非法网站的链接,对公司的声誉有一定的景响)
后台增删改网站数据等操作;(配合CSR「漏洞,骗取用户点击,利用s模拟浏览器发包,
借助XmlhttprEquest类)
Xss蠕虫(利用×s漏洞进行传播)
3.三种类型
01 反射型XSs
主打钓鱼,引流,配其他漏洞如CSRF等打攻坚战。
特点:仅执行一次,非持久型;参数型跨站脚本。主要存在于攻击者将恶意脚本附加到ur的参数中,发送给受害者,服务端未经严格过滤处理而输出在用户浏览器中,导致浏览器执行代码数据。
(1)low:本着见框就插的原则,没有做任何过滤
Payload: < script>alert(hack) (2)Medium:str_replace():直接替换函数;区分大小写
Payload:
大写绕过:< SCRIPT> alert(hack) 双写绕过:< scr< script>ipt>alert("xs°y/ script>
(3)high:preg_replace()正则替换(\i表示忽视大小写)
可通过img、body等标签的事件或者iframe等标签的src注入恶意的js代码

Payload: < img src=1 οnerrοr=alert(‘hack’)/>
02存储型XSS
持久战,大面积攻击,大流量传播。同样也可配合其他漏洞打组合拳。
特点:持久型。
主要存在于攻击者将恶意脚本存储到服务器数据库中,当用户访问包含恶意相关数据的页面时,服务端未经严格过滤处理而输出在用户浏览器中,导致浏览器执行代码数据。
03DOM型XSs
主打隐形,配合,绕过地雷”,长度大小不受限制。

特点:通过 Javascript操作 document,实现dom树的重构。主要存在于用户能修改页面的dom,造成客户端 payload在浏览器中执行。
LOW:选择列表选择的值赋值给 default附加到ul后,这段js代码将url中 Default的值赋给option标签的 value属性节点和文本节点
Medium:stripos0函数查找字符串在另一字符串中第一次出现的位置(大小写敏感)
payload: ?#default=< script>alert(/xss/)< /script>
?default =
high:
payload:?# default=< script> alert(/xss/)用#绕过后端过滤

02.跨站脚本攻击漏洞类型及场景

跨站脚本攻击漏洞_第1张图片

03.跨站脚本攻击漏洞实操

跨站脚本攻击漏洞_第2张图片
跨站脚本攻击漏洞_第3张图片防御
1.阻止恶意代码注入
2.阻止恶意操作执行
不管是反射型还是存储型ⅹss,都能通过服务端过滤进行防御
黑名单:过滤特殊符号及字符
如<、>、%、#、/、”、’、;、(、)、 script、swg、 object、on事件等
·白名单:只允许特定类型或符号
根据输入的数据特征限制使用的类型,如年龄限制为数字类型;输入类型
为字符型限制为仅可使用大小写的26个字母及数字及-和_;等
编码及转义
输出在标签或属性中进行HTML编码
输出在 script标签或事件中进行 javAscript编码;
输出在url中进行url编码。
°cookie中设置httponly
setcookie.httponly选项设置为true,防范coQi劫持
·确保执行脚本来源可信
开发者明确告诉客户端,哪些外部资源可以加载和执行(CSP策略)
不使用有缺陷的第三方库
PHP: htmlentities()、 htmlspecialchars()
Python: cgi.escape()
ASP: Server. HTMLEncode()
ASP.NET: Server. HtmlEncode( )、Microsoft Anti-Cross Site Scripting Library
Java: XSsprotect(Open Source Library)
Node. js: node-validator
htmIspecialchars默认配置是不过滤单引号的。只有设置了: quotestyle选项为
ENT_QUOTES才会过滤单引号。

你可能感兴趣的:(跨站脚本攻击漏洞)