加入收藏 | 设为首页 | 会员中心 | 我要投稿 好传媒网 (https://www.haochuanmei.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 评论 > 正文

“黑客”必学攻击之“跨站脚本攻击”

发布时间:2018-12-15 04:47:39 所属栏目:评论 来源:信息安全我来讲你来听
导读:最近很多小伙伴们看了我的文章给我私信说能不能讲讲跨站脚本攻击技术,今天就以本篇文章详细讲解一下黑客常用的攻击手法跨站脚本攻击。 一、 什么是跨站脚本攻击? 官方定义:(Cross Site Scripting),为了不和(Cascading Style Sheets, )的缩写混淆,故将

将产生xss条件。让我们看看为什么:受害者的浏览器接收到这个链接,发送HTTP请求到www.vulnerable.site并且接受到上面的HTML页。受害者的浏览器开始解析这个HTML为DOM,DOM包含一个对象叫document,document里面有个URL属性,这个属性里填充着当前页面的URL。当解析器到达javascript代码,它会执行它并且修改你的HTML页面。倘若代码中引用了document.URL,那么,这部分字符串将会在解析时嵌入到HTML中,然后立即解析,同时,javascript代码会找到(alert(…))并且在同一个页面执行它,这就产生了xss的条件。

五、跨站脚本漏洞利用的过程

XSS的主要目标是通过把攻击者选择的JavaScript、VBScript或者其它为浏览器所接受的脚本语言注入到(放进)某些Web应用程序之中。只要攻击者可以将脚本植入有弱点的Web应用程序中的任何地方,浏览器就会认为这个脚本是来自该有弱点的Web应用程序,而非非出自攻击者之手。

这样的话,该脚本就能够在这个有弱点的Web应用程序的域中运行了,并能进行下列活动:有权读取那个有弱点的Web应用程序使用的Cookie;能够看到该有弱点的Web应用程序提供的页面的内容,甚至能将它们发送给黑客;改变有弱点的Web应用程序的外观;回调运行有弱点的Web应用程序的服务器。

大体上,跨站点脚本攻击可以分为三步进行:

  • HTML注入:我们将介绍把脚本注入到Web应用程序的各种可能的方法。所有HTML注入范例只是注入一个JavaScript弹出式的警告框:a_lert(1)。
  • 干坏事。当受害者点击了一个被注入了HTML代码的页面链接时攻击者能作的各种的恶意事情。
  • 诱捕受害者:如何强制或者诱使受害者执行恶意JavaScript代码。

HTML注入简介

将HTML和(更为重要的)脚本代码注入Web应用程序的方法简直太多了。如果某个Web应用程序的HTTP响应中"照搬"了在HTTP请求中输入的内容,例如尖括号、圆括号、句号、等号等,那么说明这个Web应用程序和域具有HTML注入漏洞,并且该漏洞十有八九可以用于XSS。

本节将为读者介绍最常见的HTML注入方法,但是无法包括所有方法,因为这些方法是在太多了。对于大多数小型至中型的网站来说,这些技术很可能仍然奏效。只要有耐心,那么您或许也能够使用其中的一种技术成功应用于一个大型Web站点。

下面我们将分门别类的介绍各种注入方法。

1. 传统的反射式和存储式HTML注入

传统的XSS攻击是一种反射式的HTML注入攻击,借此,一个Web应用程序接受在HTTP请求中的用户输入。该Web应用程序会返回一个HTTP响应,其主体中将包含原封不动的用户输入。如果该服务器的响应跟用户的原始输入完全一致,那么这些用户输入就会被浏览器当作有效的HTML、VBScript或者JavaScript进行解释。考虑下列的服务器端的PHP代码:

展示了这段代码放置到http://publicpages.daxue.edu/~someuser/MyPhp.php上后,客户端看到的页面内容。

“黑客”必学攻击之“跨站脚本攻击”

一个简单的PHP脚本,用以接收用户输入(MyPhp.php)

当用户点击"提交查询"按钮时,就会生成下列GET请求:

http://public-pages.daxue.edu/~someuser/MyPhp.php?input=hahaha

这个PHP应用程序看到用户输入的"hahaha"后,将响应一个页面,如图所示。

“黑客”必学攻击之“跨站脚本攻击”

用户输入"hahaha"后MyPhp.php回复的响应

下面显示的是上图中看到的页面的HTML 源代码,为醒目起见用户输入的内容这里以蓝色字体显示。

您输入的内容为: 'hahaha'.

注意,实际上这里用户可以输入任何东西,例如〈 script 〉 a_lert( 1 )〈 / script 〉、〈 body onload = a_lert( 1 ) 〉、〈 img src = x onerror = a_lert( 1 ) 〉 或别的东西来把JavaScript代码注入到该页面。如果输入 的话,将向服务器发送下列GET请求:

http://publicpages.daxue.edu/~someuser/MyPhp.php?input=

如前所述,这个PHP应用程序只是把用户输入放到返回的响应页面中。这时候浏览器会把这些用户输入的内容当作JavaScript指令,同时认为该脚本来自服务器,这可真是应了那句老话"拿着鸡毛当令箭"了,所以浏览器就会执行这些JavaScript代码。下图展示了用户看到的样子。

“黑客”必学攻击之“跨站脚本攻击”

上图 用户输入" "后MyPhp.php回复的响应

[NextPage]上图中显示的页面的源代码如下所示,其中用户输入用蓝色字体表示。

您输入的内容为: ' '.

这是将 注入http://public-pages.daxue.edu/~someuser/MyPhp.php得到的结果。这个例子是一种典型的反射式的HTML注入,因为用户在HTTP请求中发送JavaScript代码,同时Web应用程序立即响应(反射回)一个完全相同的JavaScript代码。只要用户单击了下列链接,这个脚本就会执行:

http://publicpages.daxue.edu/~someuser/MyPhp.php?input=

从攻击者的角度来看,利用注入的ML代码让恶意的web页面完成单击或者指定次数的点击是非常重要的。假设前面的PHP应用程序只接受POST请求,而不接受GET,如下所示:

在这种情况下,攻击者无法像上面的GET请求那样直接通过诱骗受害者点击一个链接来注入HTML代码;现在,他们必须采取一些额外的步骤。为此,攻击者可以创建下列HTML页面:

当用户单击了指向上述HTML页面的链接时,就会对http://public-pages.daxue.edu/~someuser/MyPhp.php进行HTML注入。当然,攻击者也能利用HTML注入干别的坏事,而不仅仅象征性地调用一个JavaScript的弹出窗口。

"第二步:做坏事"部分将解释攻击者除了弹出一个窗口外还能做些什么。

(编辑:好传媒网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读