php登录抓取网页指定内容(如何配置错误的HTML代码,为攻击者从用户那里获取敏感数据)
优采云 发布时间: 2021-10-30 23:15php登录抓取网页指定内容(如何配置错误的HTML代码,为攻击者从用户那里获取敏感数据)
“HTML”被视为每个 Web 应用程序的框架,因为它定义了托管内容的结构和完整状态。那么,你有没有想过这个结构是否被一些简单的脚本破坏了?还是这种结构本身就是造成 Web 应用程序损坏的原因?今天,在这篇文章中,我们将学习如何配置错误的 HTML 代码来为攻击者获取用户的敏感数据。
表中的 HTML 是什么?
HTML 是基本构建块,其中确定 Web 页面上的 Web 应用程序的形成。HTML 用于设计收录“超文本”的 网站,以便将“文本收录在文本中”用作超链接并收录包装要在浏览器中显示的数据项的元素组合。
那么这些元素是什么呢?
“元素是 HTML 页面的所有内容,也就是说,它收录开始和结束标记以及介于两者之间的文本内容。”
HTML 标签
HTML 标签标记内容片段,例如“标题”、“段落”、“表单”等。它们被尖括号和两种类型的元素名称包围——“开始标签”,也称为开始标签,以及“结束标签”简称,封闭标签。浏览器不显示这些 HTML 标签,而是使用它们来捕获网页的内容。
HTML 属性
为了给元素提供一些额外的信息,我们使用属性,它位于开始标签内并以“名称/值”对的形式出现,这样属性名称后跟一个“等号”,属性值是括在“引号”中。
1hackingarticles.in">黑客文章
这里,“href”是“属性名称”,“”是“属性值”。
现在我们知道了基本的 HTML 术语,让我们看看“HTML 元素流程图”,然后我们将进一步尝试将它们全部实现来创建一个简单的网页。
基本的 HTML 页面:
Internet 上的每个网页都位于某个位置或另一个 HTML 文件中。这些文件只不过是扩展名为“.html”的简单纯文本文件。它们通过网络浏览器保存和执行。
因此,让我们尝试在记事本中创建一个简单的网页并将其保存为 hack.html:
Hacking Articles lab
WELCOME TO <a href=”Hacking Articles - Raj Chandel's Blog”>HACKING ARTILCES </a>
<p>Author “Raj Chandel”
</p>
让我们在浏览器中执行这个“hack.html”文件,看看我们开发了什么。
我们已经成功设计了我们的第一个网页。但是这些标签是如何为我们工作的,让我们来看看它们:
我想你现在对“什么是 HTML 及其主要目的”和“我们如何实现这一切”已经有了一个清晰的认识。因此,让我们尝试找出主要漏洞并了解攻击者如何将任意 HTML 代码注入易受攻击的网页以修改托管内容。
HTML 注入简介
HTML 注入是网页无法清理用户提供的输入或验证输出时出现的最简单、最常见的漏洞之一,允许攻击者制作有效载荷并通过易受攻击的字段将恶意 HTML 代码注入应用程序中,以便他可以修改网页内容,甚至获取一些敏感数据。
我们来看看这种情况,了解如何进行这种类型的 HTML 注入攻击:
考虑一个遭受 HTML 注入漏洞且不验证任何特定输入的 Web 应用程序。因此,攻击者发现了这一点,并注入了带有“免费电影票”诱饵的恶意“HTML 登录表单”,以诱骗受害者提交其敏感凭据。
现在,当受害者浏览这个特定的网页时,他发现他可以使用那些“免费电影票”。当他点击它时,他会看到应用程序的登录屏幕,它只是一个由攻击者制作的“HTML 表单”。因此,一旦攻击者输入凭据,所有凭据都将通过其侦听器捕获,从而导致受害者破坏其数据。
HTML注入的影响
如果网页中的输入字段没有正确清理,有时这个HTML注入漏洞可能会导致我们遭受跨站脚本(XSS)或服务器端请求伪造(SSRF)攻击。因此,该漏洞的严重性为“中等”,其“CVSS评分5.3”报告为:
CWE-80:网页中与脚本相关的 HTML 标签不正确的中和。CWE-79:在网页生成过程中输入的无效化不正确。HTML 注入 v/s XSS
在这种类型的攻击中,我们有机会避免执行 HTML 注入攻击,但由于 XHTML 注入几乎类似于跨站脚本,因此我们放弃了 XSS。但是,如果我们仔细观察两者之间的距离,我们会发现,在 XSS 攻击中,攻击者有机会注入并执行 Javascript 代码,而在 HTML 注入中,他/她必然会使用某些 HTML 标签来破坏这一页。
现在,让我们深入研究不同的 HTML 注入攻击,看看异常方法如何破坏网页并捕获受害者的凭据。
存储的 HTML
“保存HTML”也称为“持久性”,因为通过该漏洞注入的恶意脚本会永久存储在Web应用服务器中,当他访问注入的Web应用服务器时,它会进一步减少回馈给用户。但是,当客户端点击显示为 网站 官方部分的有效负载时,注入的 HTML 代码将被浏览器执行。
存储 HTML 的最常见示例是博客中的“评论选项”,它允许任何用户以管理员或其他用户的评论形式输入他们的反馈。
现在,让我们尝试利用这个存储的 HTML 漏洞并获取一些凭据。
利用存储的 HTML
我已经在浏览器中打开了目标IP,并以bee: bug 的身份登录了BWAPP。此外,我已将“选择错误”选项设置为“HTML 注入存储(博客)”并激活了黑客按钮。
我们现在将被重定向到一个存在 HTML 注入漏洞的网页,该漏洞允许用户通过屏幕截图将他们的条目提交到博客。
最初,我们会通过“bee”生成一个普通的用户条目作为“Hacking Articles”,以确认输入的数据已经成功存入web服务器的数据库中,因此在“Entry Field”中可以看到。
现在,让我们尝试注入恶意负载,该负载将在此目标网页上创建虚假用户登录表单,从而将捕获的请求转发到我们的 IP。
在给定的文本区域中输入以下 HTML 代码以设置 HTML 攻击。
Please login with valid
credenitals:
Username:Password:
从下图中可以看出,当我单击“提交”按钮时,新的登录表单已显示在页面顶部。因此,此登录表单现在存储在应用程序的 Web 服务器中。每当受害者访问此恶意登录页面时,服务器都会显示登录表单。他将永远拥有在他看来很正式的形式。
所以现在让我们在端口 4444 上启用我们的 netcat 侦听器来捕获受害者的请求。
1nc –lvp 4444
虽然需要等待,但要等到受害者将页面定向到浏览器并输入他的凭据。
从上图可以看出,用户“Raj”打开了网页并尝试以raj:123的身份登录。
因此,让我们回到侦听器并检查响应中是否捕获了凭据。
从下图可以看出,我们已经成功获取到了凭证。
反射 HTML
HTML 的反射也称为“非持久化”,即 Web 应用程序在不验证用户输入内容的情况下立即响应用户输入,这可能导致攻击者在单个 HTML 响应中注入浏览器可执行代码的情况发生。之所以称为“非持久化”,是因为恶意脚本未存储在Web服务器中,因此攻击者需要通过钓鱼发送恶意链接来引诱用户。
在网站的搜索引擎中可以很容易地找到反映的HTML漏洞:攻击者在这里的搜索文本框中编写了一些任意的HTML代码。如果 网站 容易受到攻击,结果页面将作为引用这些 HTML 实体的响应被返回。
反射HTML基本上分为三种:
在接触 Reflected HTML Lab 之前,让我们回忆一下 - 使用 GET 方法,我们从特定来源请求数据,而 POST 方法用于将数据发送到服务器以创建/更新资源。
反映 HTML GET
在这里,我们创建了一个网页,允许用户使用他们的“姓名”提交“反馈”。
因此,当用户“Raj Chandel”提交他的反馈为“好”时,将显示一条消息“感谢 Raj Chandel 为您提供宝贵的时间”。
因此,此即时响应和 URL 中的“名称/值”对表明此页面可能容易受到 HTML 注入的攻击,并且该数据已通过 GET 方法请求。
所以现在让我们尝试在这个“表单”中注入一些 HTML 代码以确认它。在“名称”字段中键入以下脚本,如下所示:
1拉吉·钱德尔
并将“反馈”设置为“良好”
从下图中可以看出,用户名“Raj Chandel”已修改为标题,如响应消息所示。
不知道为什么会发生这一切,让我们检查以下代码片段。
请放心,为了在屏幕上反映消息,开发人员没有设置任何输入验证,即他只是通过输入名称通过收录名称“$_GET”的变量“回显”“感谢消息”。
“有时开发人员会在输入字段中设置一些验证,以便我们的 HTML 代码将重新呈现到屏幕上而无需呈现。”
从下图可以看出,当我尝试执行 name 字段中的 HTML 代码时,它会将其作为纯文本放回:
那么,这里是否已经修补了漏洞?
让我们通过助手“burpsuite”捕获其传出请求来检查所有情况,并将捕获的请求直接发送到“中继器”选项卡。
在“Repeater”选项卡中,当我单击“Go”按钮检查生成的响应时,我发现我的 HTML 实体已在此处解码为 HTML:
因此,我处理了完整的 HTML 代码“hackingarticles.in">Raj”并将其全部粘贴到“*敏*感*词*”选项卡中。我单击“编码为”并选择了 URL 1。
获取到编码输出后,我们将在URL的“encode as”中重新设置,使其获取双URL编码格式。
现在让我们尝试一下,复制完整的双编码 URL,并将其粘贴到 Request 选项的 Repeater 选项卡中的“name =”字段中。
单击“执行”按钮以检查它生成的响应。
从下图可以看出,我们已经成功地操纵了响应。
现在,只需在“代理”选项卡中进行类似的修改,然后单击“前进”按钮。如下图所示,我们还通过验证字段破解了该网页。
让我们检查代码片段,看看开发人员在哪里执行输入验证:
从下图可以看出,这里开发者已经“破解”了变量数据,甚至将“”解码为“<”。而“>”分别是$data和$input,进一步他使用PHP内置函数urldecode来超过$input解码最多的URL。
从下图可以看出,开发者对name字段进行了功能破解。
反射的 HTML POST
与“获取网页”类似,这里的“名称”和“反馈”字段也很容易受到攻击,因为已经实现了 POST 方法,因此 URL 中不会显示表单数据。
让我们再次尝试破坏此页面的外观,但这次我们将添加图像而不是静态文本作为
1
ignitetechnologies.in/img/logo-blue-white.png">
从下图可以看出,“Ignite Technology Logo”已经放置在屏幕顶部,因此攻击者甚至可以注入其他媒体格式,例如视频、音频或Gif。
反射的 HTML 当前 URL
当网页上没有输入字段时,Web 应用程序是否容易受到 HTML 注入攻击?
是的,无需输入评论框或搜索框等文件。某些应用程序会在其网页上显示您的 URL,并且它们可能容易受到 HTML 注入的影响,因为在这种情况下,URL 充当其输入字段。
从上图可以看到当前网址在网页上显示为“192.168.0.16/hack/html_URL.php”。所以让我们接管这个优势,看看我们能得到什么。
调整您的“burpsuite”并捕获正在进行的 HTTP 请求
现在让我们使用以下命令处理这个请求:
1/hack/html_URL.php/Hey_are_you_there?
单击前进按钮以在浏览器上检查结果。
从下图可以看出,我们通过简单地将所需的 HTML 代码注入到 Web 应用程序的 URL 中,就成功地销毁了 网站 的图像。
我们来看看它的代码,看看开发者是如何在屏幕上获取当前 URL 的。
这里,开发者使用 PHP 全局变量作为 $_SERVER 来捕获当前页面的 URL。另外,他用“HTTP_HOST”修改了主机名,用“REQUEST_URI”修改了URL的请求资源位置,全部放在$url变量中。
进入 HTML 部分,他只是使用 $url 变量设置 echo,没有任何特定的验证,以便显示带有 URL 的消息。
缓解步骤