“HTML”被认为是每个Web应用程序的框架,因为它定义了托管内容的结构和完整状态。所以,你有没有想过,是不是一些简单的脚本打破了这种解剖结构?还是这种结构本身就是破坏Web应用程序的原因?今天,在本文中,我们将学习如何从访问用户的敏感数据配置错误配置的HTML代码。什么是HTML?HTML全称为HypertextMarkupLanguage,是一种标记语言。它包括一系列标签。通过这些标签,可以统一网络上的文档格式,将分散的互联网资源连接成一个逻辑整体。HTML文本是由HTML命令组成的描述性文本,可以解释文字、图形、动画、声音、表格、链接等。HTML用于设计包含“超文本”的网站,使“文本包含在文本中”充当超链接并包括包装数据项以便在浏览器中显示的元素组合。那么这些元素是什么?“元素是HTML页面的所有内容,即它包含开始和结束标签以及介于两者之间的文本内容。”1.HTML标签HTML标签对内容进行标记,如“标题”、“段落”、“表格”等。标记中标记的元素用尖括号括起来,带斜线的元素表示结束标签描述;大多数标签必须成对使用以指示动作的开始和结束。浏览器不显示这些HTML标记,而是使用它们来捕获网页的内容。2.HTML属性超文本标记语言定义了各种数据类型的元素内容,如脚本数据和样式表数据,以及多种类型的属性值,包括ID、名称、URI、数字、长度单位、语言、媒体描述符、颜色、字符编码、日期和时间等。所有这些数据类型都是专门的字符数据。这里,“href”是“属性名称”,“http://hackingarticles”是“属性值”。现在我们知道了基本的HTML术语,让我们看看“HTML元素流程图”,然后我们将更进一步,尝试将它们全部实现以创建一个简单的网页。3、基本的HTML页面:互联网上的每一个网页都是一个HTML文件。这些文件不过是带有“.html”扩展名的简单纯文本文件,由网络浏览器保存和执行。因此,让我们尝试在记事本中创建一个简单的网页并将其另存为hack.html:让我们在浏览器中执行这个“hack.html”文件,看看会发生什么。我们已经成功设计了我们的第一个网页。但是这些标签是如何为我们工作的呢,我们来看看它们:超文本标记语言文本标记语言文件的开始和结束标记。;,网页实际显示的内容包含在这两个文本标签之间。词标记也称为实体标记。标签是插入简单换行符的空标签。该标签用于设置网页中的标题文字,设置的文字会在网页中以粗体或粗体显示。是段落的开始标记,是段落的结束标记Tag定义了一个锚点(anchor)。这有助于我们创建“超链接”。锚点有两种用法来创建指向另一个文档的链接(通过href属性);在文档中创建书签(通过name属性)我想你现在对“什么是HTML及其主要用途”和“我们如何实现所有这些”有了清晰的认识。因此,让我们尝试找出主要漏洞并了解攻击者如何将任意HTML代码注入易受攻击的网页以修改托管内容。HTML注入简介HTML注入是最简单和最常见的漏洞之一,当网页无法清理用户提供的输入或验证输出时,攻击者可以伪造自己的有效负载并将恶意HTML代码注入到应用程序中修改网页内容,甚至获取一些敏感数据。让我们来看看这个场景并了解这种HTML注入攻击是如何执行的:假设有一个Web应用程序容易受到HTML注入的攻击,并且它不验证任何特定的输入。因此,攻击者利用这一点,将恶意的“HTML登录表单”注入“免费电影票”骗局,从而诱骗受害者提交他们的敏感凭证。当受害者浏览到那个特定的网页时,他会找到这些“免费电影票”的选项,当他点击它时,他会看到应用程序的登录屏幕,但这些只是攻击者精心制作的“HTML表单”。因此,一旦他输入了他的凭据,攻击者就会捕获所有凭据,从而导致受害者泄露他的数据。HTML注入的影响当网页中的输入字段未正确清理时,有时此HTML注入漏洞可能导致我们遭受跨站点脚本(XSS)或服务器端请求伪造(SSRF)攻击。因此,该漏洞的严重程度为“中”,CVSS评分为5.3分,具体如下:CWE-80:网页中与脚本相关的HTML标签中和不当。CWE-79:网页生成期间输入的无效化不正确。HTMLInjection,XSS在这种攻击中,我们有机会避免执行HTML注入攻击,但是我们遇到了XSS攻击,因为HTML注入几乎类似于跨站点脚本。但是如果我们仔细观察两者的关系就会发现,在XSS攻击中,攻击者有机会注入并执行Javascript代码,而在HTML注入中,攻击者必须使用一定的HTML标签来破坏网页。现在,让我们深入研究不同的HTML注入攻击,看看不寻常的方法如何破坏网页并捕获受害者的凭据。StoredHTML利用该漏洞,将注入的恶意脚本永久保存在Web应用服务器中。当用户访问注入的网页时,应用服务器会进一步将其返回给用户。但是,当客户端单击显示为网站官方部分的有效负载时,浏览器会执行注入的HTML代码。StoredHTML最常见的示例是博客中的“评论选项”,它允许任何用户以管理员或其他用户的评论形式输入他们的反馈。现在,让我们尝试利用这个存储的HTML漏洞并获取一些凭据。使用存储的HTML,我在浏览器中打开目标IP,并以bee:bug身份登录到BWAPP。此外,我还将“ChooseYourbug”选项设置为“HTMLInjection-Storage(Blog)”,并激活了hack按钮。我们现在将被重定向到具有HTML注入漏洞的网页,该漏洞允许用户在博客中提交他们的条目,如屏幕截图所示。首先,我们将通过“蜜蜂”生成一个普通用户条目作为“HackingArticles”,以确认输入数据已成功存储在Web服务器的数据库中,因此在“条目字段”中可见。现在,让我们尝试注入我们的恶意负载,这将在该目标网页上创建一个虚假的用户登录表单,从而将捕获的请求转发到我们的IP。在给定的文本区域中输入以下HTML代码以设置HTML攻击。从下图中可以看到,当我点击“提交”按钮时,网页上显示了一个新的登录表单。所以这个登录表单现在被放入应用程序的网络服务器中,每次受害者访问这个恶意登录页面时,它都会呈现这个表单,在他看来这是相当正式的。现在让我们在端口4444上启用netcat侦听器,以便我们可以捕获受害者的请求。在受害者将页面启动到他的浏览器并输入他的凭据之前,需要耐心等待。从上图中,可以看到用户“Raj”打开了网页,并试图以raj:123的身份进行内部登录。因此,让我们回到侦听器并检查是否在响应中捕获了凭据。从下图中可以看出,我们已经成功获取到凭据。反射HTML反射HTML(也称为“非持久性”)发生在Web应用程序立即响应用户输入而不验证用户输入的内容时注入浏览器可执行代码。由于恶意脚本没有存储在Web服务器中,攻击者需要通过钓鱼的方式发送恶意链接来诱骗用户。这个漏洞很容易在网站的搜索引擎中找到:在这里,攻击者在搜索文本框中写入一些任意HTML代码,如果该网站存在漏洞,则会返回结果页面作为对这些HTML实体的响应。ReflectedHTML基本上分为三种类型:ReflectedHTMLGETReflectedHTMLPOSTReflectedHTMLCurrentURL在使用ReflectedHTML之前,让我们回顾一下-使用GET方法,我们从特定来源请求数据,而POST方法用于发送数据发送到服务器以创建/更新资源。ReflectedHTMLGET这里我们创建了一个网页,这样用户就可以用他的“名字”提交“反馈”。因此,当用户“RajChandel”提交他的“好”反馈时,将会有一条消息说“感谢RajChandel抽出时间”。因此,这个即时响应和URL中的“名称/值”是的,这个页面可能容易受到HTML注入的攻击,并且通过GET方法请求数据。所以现在让我们尝试将一些HTML代码注入到这个“表单”中,以便我们可以确认它。在“Name”字段中键入以下脚本,如下所示:并将“Feedback”设置为“Good”从下图中您可以看到用户名“RajChandel”已被修改为响应消息中的标题。要理解为什么会这样,让我们??看一下下面的代码片段。为了方便在屏幕上反映消息,开发人员没有设置任何输入验证,即他只是通过将输入名称包含在“$_GET”变量中来“回应”“感谢消息”。“有时开发人员会在输入字段中设置一些验证,将我们的HTML代码重新引用到屏幕而不是渲染。”正如您在下图中看到的,当我尝试在名称字段中执行HTML代码时,它以纯文本形式返回,如下所示:让我们通过捕获它使用我们的助手“burpsuite”发出的请求并将捕获的请求直接发送到“Repeater”选项卡来检查所有这些。在“Repeater”选项卡中,当我单击“Go”按钮检查生成的响应时,我发现这里我的HTML实体被HTML解码为:所以,我处理了完整的HTML代码“Raj
>"并将其全部粘贴到解码器选项卡中。在右侧托盘上,我单击“编码为”并选择URLOne。一旦我们有了编码输出,我们将在URL的“编码为”中再次设置,使其获得双重URL编码格式。现在让我们尝试一下,复制完整的双重编码URL,并将其粘贴到“name=”字段中Request选项的Repeater选项卡。点击“Execute”按钮可以查看它生成的响应。从下图可以看出,我们已经成功操作了响应。现在,只需添加“Proxy”选项卡,然后点击“前进”按钮。正如您在下图中看到的,我们还打破了这个页面的验证字段。让我们检查一下代码片段,看看开发人员在Whereinputvalidationisdone中做了什么:从下图可以看出,这里的开发人员对可变数据做了一个“hack”功能,甚至他会“来自”下图,可以看到开发者实现了一个函数hack反映HTMLPOST类似于“GETwebpage”,“Name”和“Feedback”字段也存在漏洞,因为已经实现了POST方法,所以表单数据会不显示在URL中。让我们再次尝试破坏此网页,但这次我们将添加图像而不是静态文本从下图中,您可以看到“Ignitetechnologies徽标”已放置在屏幕上方,因此攻击者甚至可以在此处插入其他媒体格式,例如视频、音频或GIF。反射的HTML当前URL如果网页上没有输入字段,Web应用程序是否容易受到HTML注入攻击?是的,不需要像评论框或搜索框这样的输入文件,某些应用程序会在其网页上显示您的URL,它们可能容易受到HTML注入的攻击,因为在这种情况下,URL充当其输入字段。从上图中可以看到,当前的URL在网页上显示为“http://192.168.0.16/hack/html_URL.php”。因此,让我们抓住机会,看看我们能得到什么。调整您的“burpsuite”并捕获正在进行的HTTP请求现在让我们使用以下命令处理此请求:单击前进按钮以在您的浏览器上检查结果。从下图中,您可以看到我们通过简单地将我们想要的HTML代码注入到Web应用程序的URL中,成功地破坏了该网站。我们来看看它的代码,看看开发者是如何获取当前屏幕上的URL的。在这里,开发人员使用一个PHP全局变量作为$_SERVER来捕获当前页面的URL。此外,他将主机名修改为“HTTP_HOST”,将URL的请求资源位置修改为“REQUEST_URI”,并将其全部放入$url变量中。在HTML部分,他只是用$url变量设置echo,没有任何特定的验证,以便显示带有url的消息。缓解措施开发人员应该设置他的HTML脚本来从用户输入中过滤元字符开发人员应该实现一些功能来验证用户输入,以便它不包含任何可能导致虚拟损坏的特定标记。
