我的编程空间,编程开发者的网络收藏夹
学习永远不晚

HTML注入怎么实现

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

HTML注入怎么实现

本篇内容介绍了“HTML注入怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

什么是HTML?

HTML称为超文本标记语言,是一种标识性的语言。它包括一系列标签.通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字,图形、动画、声音、表格、链接等。HTML用于设计包含“超文本”的网站,以便将“文本包含在文本中”作为超链接,并包含包裹数据项以在浏览器中显示的元素组合。

那么这些元素是什么?

“元素是HTML页面的所有内容,即,它包含开始和结束标记以及介于两者之间的文本内容。”

1. HTML标签

HTML标签标记了内容片段,例如“标题”,“段落”,“表单”等。标记符中的标记元素用尖括号括起来,带斜杠的元素表示该标记说明结束;大多数标记符必须成对使用,以表示作用的起始和结束。浏览器不会显示这些HTML标记,而是利用它们来捕获网页的内容。

2. HTML属性

超文本标记语言定义了多种数据类型的元素内容,如脚本数据和样式表的数据,和众多类型的属性值,包括ID、名称、URI、数字、长度单位、语言、媒体描述符、颜色、字符编码、日期和时间等。所有这些数据类型都是专业的字符数据。

HTML注入怎么实现

在这里,“ href”是“属性名称”,“ http:// hackingarticles”是“属性值”。

现在我们已经了解了基本的HTML术语,让我们查看“ HTML元素流程图”,然后将进一步尝试将它们全部实现以创建一个简单的网页。

HTML注入怎么实现

3. 基本HTML页面:

互联网上的每个网页都是HTML文件。这些文件只不过是扩展名为“.html”的简单纯文本文件,通过web浏览器保存和执行。

因此,让我们尝试在记事本中创建一个简单的网页并将其另存为hack.html:

HTML注入怎么实现

让我们在浏览器中执行这个“ hack.html”文件,看看会发生什么。

HTML注入怎么实现

我们已经成功设计了我们的第一个网页。但是这些标签如何为我们工作,让我们看看它们:

  • 标记符<  html>:说明该文件是用超文本标记语言来描述的,它是文件的开头,而则表示该文件的结尾,它们是超文本标记语言文件的开始标记和结尾标记。

  • ;,网页中显示的实际内容均包含在这2个正文标记符之间。正文标记符又称为实体标记。

  • 标签是空标签,可插入一个简单的换行符。

  • 标签用于设置网页中的标题文字,被设置的文字将以黑体或粗体的方式显示在网页中。

  • 是段落的开始标志,

  • 是段落的结束标志

  • 标签定义一个锚(anchor)。这有助于我们建立“超链接”。锚有两种用法创建一个指向其他文档的链接(通过href属性);创建一个文档内部的书签(通过name属性)

我想你现在已经清楚了“什么是HTML及其主要用途”和“我们如何实现这一切”。因此,让我们尝试找出主要漏洞,并了解攻击者如何将任意HTML代码注入易受攻击的网页,以修改托管内容。

HTML注入简介

HTML注入是最简单和最常见的漏洞之一,当网页无法清理用户提供的输入或验证输出时,这样,攻击者就可以伪造自己的有效负载,并通过易受攻击的字段将恶意HTML代码注入应用程序,从而修改网页内容,甚至获取一些敏感数据。

让我们来看看这个场景,并了解这种HTML注入攻击是如何执行的:

假设有一个web应用程序,该应用程序存在HTML注入漏洞,并且它没有验证任何特定的输入。因此,攻击者利用这一点,将恶意的“HTML登录表单”注入“免费电影票”的骗局中,从而诱使受害者提交其敏感的凭证。

当受害者浏览该特定网页时,找到了这些“免费电影票”的选项,当他单击它时,他会看到该应用程序的登录屏幕,但这些只是攻击者精心制作的“  HTML表单”。因此,一旦他输入了他的凭证,攻击者就会捕获所有凭证,从而导致受害者泄露他的数据。

HTML注入怎么实现

HTML注入的影响

当网页中的输入字段未正确清理时,因此有时此HTML注入漏洞可能会导致我们进行跨站点脚本(XSS)或服务器端请求伪造(SSRF)攻击。因此,该漏洞的严重性级别为“中等”,CVSS评分为5.3分,具体如下:

  • CWE-80:网页中与脚本相关的HTML标记的不正确中和。

  • CWE-79:网页生成期间输入的不正确中和。

HTML注入、XSS

在这种攻击过程中,我们有机会免除执行HTML注入攻击,而我们却遇到了XSS攻击,因为HTML注入几乎类似于跨站点脚本。但是如果我们仔细观察这两者之间的关系,我们会发现在XSS攻击期间,攻击者有机会注入并执行Javascript代码,而在HTML注入中,攻击者一定会使用某些HTML标记来破坏网页。

现在,让我们深入研究不同的HTML注入攻击,并查看异常方式如何破坏网页并捕获受害者的凭据。

Stored HTML

通过这个漏洞,注入的恶意脚本被永久性地存储在web应用服务器中,当用户访问被注入的网页时,应用服务器会进一步将其回传给用户。但是,当客户机单击作为网站的正式部分出现的有效负载时,注入的HTML代码将由浏览器执行。

Stored HTML的最常见示例是博客中的“评论选项”,它允许任何用户以管理员或其他用户的评论形式输入其反馈。

现在,让我们尝试利用此存储的HTML漏洞并获取一些凭据。

利用Stored HTML

我在我的浏览器中打开了目标IP,并以bee:bug的身份登录到BWAPP中,此外,我还将“Choose Your  bug”选项设置为“HTML注入-存储(Blog)”,并启动了hack按钮。

现在,我们将被重定向到web页面,该页面存在HTML注入漏洞,该漏洞允许用户在blog中提交其条目,如屏幕截图所示。

首先,我们将通过“bee”生成一个普通的用户条目作为“Hacking  Articles”,以确认输入数据已成功地存储在web服务器的数据库中,从而在“entry field”中可见。

HTML注入怎么实现

现在,让我们尝试注入我们的恶意负载,它将在这个目标网页上创建一个假用户登录表单,从而将捕获的请求转发到我们的IP。

在给定的文本区域内输入以下HTML代码,以便设置HTML攻击。

HTML注入怎么实现

HTML注入怎么实现

从下面的图片你可以看到,当我点击“提交”按钮,一个新的登录表单已经显示在网页上。因此,这个登录表单现在被放入应用程序的web服务器中,每当受害者访问这个恶意登录页面时,它都会呈现这个表单,在他看来,这个表单是很官方的。

HTML注入怎么实现

现在让我们在4444端口启用netcat侦听器,以便捕获受害者的请求。

HTML注入怎么实现

这需要耐心等待,直到受害者启动这个页面进入他的浏览器,并输入了他的凭证。

HTML注入怎么实现

从上面的图像中,您可以看到用户“ Raj”打开了网页,并尝试以raj:123的身份登录内部。

因此,让我们回到侦听器并检查是否在响应中捕获了凭据。

从下图可以看到,我们已经成功获取了凭据。

HTML注入怎么实现

Reflected HTML

当web应用程序对用户的输入立即做出响应而不验证用户输入的内容时,就会出现反射的HTML(也称为“非持久性”),这可能导致攻击者在单个HTML响应中注入浏览器可执行代码。由于恶意脚本不会存储在web服务器中,因此攻击者需要通过网络钓鱼发送恶意链接来诱捕用户。

此漏洞很容易在网站的搜索引擎中找到:在这里,攻击者在搜索文本框中编写一些任意的HTML代码,如果网站有漏洞,结果页面将返回作为对这些HTML实体的响应。

反映HTML基本上分为三种类型:

  • Reflected HTML GET

  • Reflected HTML POST

  • Reflected HTML Current URL

在利用Reflected  HTML之前,让我们回想一下&mdash;&mdash;使用GET方法,我们从特定的源请求数据,而POST方法用于将数据发送到服务器以创建/更新资源。

Reflected HTML GET

在这里,我们创建了一个网页,这样用户就可以用他的“名字”提交“反馈”。

因此,当用户“Raj Chandel”以“Good”提交他的反馈时,会有一条消息提示说“感谢Raj Chandel,感谢您宝贵的时间。”

HTML注入怎么实现

因此,这个即时响应和URL中的“name/value”对显示,这个页面可能容易受到HTML注入的攻击,并且数据是通过GET方法请求的。

因此,现在让我们尝试向此“表单”中注入一些HTML代码,以便对其进行确认。在“名称”字段中键入以下脚本,如下所示:

HTML注入怎么实现

并将“反馈”设置为“良好”

从下面的图片中可以看到用户的名字“Raj Chandel”已经被修改为响应消息中的标题。

HTML注入怎么实现

想知道为什么会这样,让我们看看下面的代码片段。

HTML注入怎么实现

为了便于在屏幕上反映消息,开发人员没有设置任何输入验证,也就是说,他只是通过“$\u GET”变量包含输入名称来“回显”“感谢消息”。

“有时开发人员会在输入字段中设置一些验证,从而将我们的HTML代码重新引用到屏幕上,而不会呈现。”

从下图中可以看到,当我试图在name字段中执行HTML代码时,它将其作为纯文本放回原处,如下所示:

HTML注入怎么实现

那么漏洞是不是已经修补好了?

让我们用我们的助手“burpsuite”捕获它发出的请求来检查这一切,并将捕获的请求直接发送到“Repeater”选项卡。

HTML注入怎么实现

在“Repeater”选项卡中,当我单击“Go”按钮检查生成的响应时,我发现我的HTML实体在这里被HTML解码为:

HTML注入怎么实现

因此,我处理了完整的HTML代码“< a href=http://hackingarticles.in“ > < h3 > Raj  < /h3 >< /a >”并将其全部粘贴到解码器选项卡中。在右边的托盘上,我点击了“编码为”并选择了URL一。

获得编码输出后,我们将再次在URL的“编码为”中对其进行设置,以使其获得双URL编码格式。

HTML注入怎么实现

现在让我们尝试一下,复制完整的双重编码的URL,然后将其粘贴到Request选项的Repeater选项卡中的“ name =”字段中。

单击“执行”按钮以检查其生成的响应。

从下图可以看到,我们已经成功地操纵了响应。

HTML注入怎么实现

现在,只需在“ 代理”选项卡中进行类似的修改,然后单击“转发”按钮即可。从下图可以看到,我们也通过其验证字段破坏了此网页。

HTML注入怎么实现

让我们检查一下代码片段,看看开发人员在哪里进行了输入验证:

从下面的图片可以看到,这里的开发人员为变量数据做了一个“hack”函数,甚至他将“

HTML注入怎么实现

从下面的图片中,您可以看到开发人员在name字段实现了函数hack。

HTML注入怎么实现

Reflected HTML POST

与“GET webpage”类似,“Name”和“Feedback”字段也存在漏洞,因为POST方法已经实现,因此表单数据不会显示在URL中。

让我们再次尝试破坏此网页,但这次我们将添加一个图像而不是静态文本

HTML注入怎么实现

从下图中,您可以看到“Ignite  technologies徽标”已被放置在屏幕上方,因此攻击者甚至可以在此处插入视频、音频或GIF等其他媒体格式。

HTML注入怎么实现

Reflected HTML Current URL

如果网页上没有输入字段,web应用程序是否会容易受到HTML注入的攻击?

是的,不需要像评论框或搜索框这样的输入文件,有些应用程序会在其网页上显示您的URL,它们可能会受到HTML注入的攻击,因为在这种情况下,URL充当它的输入字段。

HTML注入怎么实现

从上面的图像中,您可以看到当前URL在网页上显示为“ http://192.168.0.16/hack/html_URL.php  ”。因此,让我们抓住机会,看看我们可以得到什么。

调整您的“burpsuite”并捕获正在进行的HTTP请求

HTML注入怎么实现

现在让我们使用以下命令处理此请求:

HTML注入怎么实现

单击前进按钮以在浏览器上检查结果。

HTML注入怎么实现

从下面的图片中,您可以看到我们已经成功地破坏了网站,只需将我们所需的HTML代码注入到web应用程序的URL中。

HTML注入怎么实现

让我们看一下它的代码,看看开发人员如何在屏幕上获取当前URL。

在这里,开发人员使用PHP全局变量作为$ _SERVER来捕获当前页面URL。此外,他用“ HTTP_HOST”修改了主机名,并用“  REQUEST_URI”修改了URL的请求资源位置,并将其全部放在$ url变量中。

HTML注入怎么实现

在HTML部分,他只需使用$url变量设置echo,而不需要任何特定的验证,以便用url显示消息。

HTML注入怎么实现

缓解措施

  • 开发人员应该设置他的HTML脚本,从用户输入中过滤元字符

  • 开发人员应该实现一些功能来验证用户输入,使其不包含任何可能导致虚拟损坏的特定标记。

“HTML注入怎么实现”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

HTML注入怎么实现

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

HTML注入怎么实现

本篇内容介绍了“HTML注入怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是HTML?HTML称为超文本标记语言,是一种标识性的
2023-06-17

怎么实现SQL注入

今天就跟大家聊聊有关怎么实现SQL注入,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。什么是SQL注入SQL注入是指通过构建特殊的输入篡改原来的SQL语句达到攻击者所需的操作。Sql
2023-06-15

C++ DLL注入怎么实现

这篇文章主要介绍“C++ DLL注入怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++ DLL注入怎么实现”文章能帮助大家解决问题。先上源码:#include "Inject_Main.h
2023-06-29

怎么在html中实现页面注释

这期内容当中小编将会给大家带来有关怎么在html中实现页面注释,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在html中,可以使用“”进行页面注释,只需要在页面指定位置添加“”即可。浏览器不会显示注释,但
2023-06-15

Node+mysql怎么实现SQL注入

这篇文章主要介绍“Node+mysql怎么实现SQL注入”,在日常操作中,相信很多人在Node+mysql怎么实现SQL注入问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Node+mysql怎么实现SQL注入
2023-07-04

python依赖注入怎么实现

在Python中实现依赖注入有多种方法,下面介绍两种常用的实现方式:1. 使用第三方库:可以使用流行的依赖注入框架,例如Dagger、Inject等。这些框架提供了注解和装饰器等方式来标记依赖项,并自动解析和注入依赖项。例如,使用Dagge
2023-08-30

golang依赖注入怎么实现

在Go语言中实现依赖注入可以使用两种常见的方式:构造函数注入和接口注入。1. 构造函数注入:构造函数注入是通过在结构体中定义一个包含所需依赖的构造函数来实现的。例如:```gotype Database struct {// ...}fun
2023-09-17

JS、CSS和HTML怎么实现注册页面

小编给大家分享一下JS、CSS和HTML怎么实现注册页面,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!更新:使用JavaScript实现用户名和密码表单校验功能。
2023-06-20

spring怎么实现依赖注入DI

这篇文章主要介绍了spring怎么实现依赖注入DI的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇spring怎么实现依赖注入DI文章都会有所收获,下面我们一起来看看吧。spring依赖注入DI1、创建一个mav
2023-06-29

Laravel的依赖注入怎么实现

这篇文章主要介绍了Laravel的依赖注入怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Laravel的依赖注入怎么实现文章都会有所收获,下面我们一起来看看吧。在Laravel中,依赖注入的实现原理是利
2023-06-29

springboot动态加入注解怎么实现

要在Spring Boot中动态加入注解,可以使用Java的动态代理技术和反射机制。以下是一个示例代码,演示如何在运行时动态加入注解:```javaimport org.springframework.beans.factory.confi
2023-09-26

VSCode中的依赖注入怎么实现

这篇文章主要讲解了“VSCode中的依赖注入怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“VSCode中的依赖注入怎么实现”吧!依赖注入介绍如果有这样一个模块 A,它的实现依赖另一个
2023-07-04

MyBatis中怎么实现SQL注入攻击

MyBatis中怎么实现SQL注入攻击,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、模糊查询Select * from news where title l
2023-06-20

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录