HTML注入

一、前言

HTML注入漏洞是由接受HTML引起的,通常通过一些之后会呈现在页面的表单输入。

-超文本标记注入有时也被称为虚拟污染。
-实际上是由于一个站点造成的攻击,该站点允许恶意用户向其Web页面,注入HTML ,并且没有合理处理用户输入。-

[HTML Injection] Key:
-1:站点权限设置
-2:没有合理处理用户输入

二、原理介绍
基于HTML一种用于定义网页结构的语言,如果攻击者可以注入HTML,它们基本可以改变网页呈现的内容。
有时,仅是页面外观的改变,在其他情况下,创建表单来欺骗用户(如将form标签添加到页面,要求用户重新输入他们的用户名和密码)
当提交表单时,它实际上将信息发送给攻击者。

三、示列
Coninbase 评论
URL:coinbase.com/apps
报告链接:https://HackerOne.com/reports/104543

描述:
-对于此漏洞,报告着识别出Coninbase在呈现文本时,实际上是在解码URL的编码值。
-URL的字符有保留的和未保留的,保留字是特殊意义的字符(如:“&”和“/”),未保留字符仅仅是字母
-So,当字符被URL编码时,它将按照ASCLL转换成其字节值,并以“%”开头(/>>%2F,&>>%26){ASCLL码是一种在互联网上最常见的编码,直到UTF-8出现,
它是另一种编码}
现在,回到我们的示列:
如果攻击者输入HTML :

1
<h1>This is a test</h1>

coinbase 实际上会将其渲染为纯文本,但是如果用户提交了URL编码字符:Like This

%3c%68%31%3E%6C%68%69%5A
coinbase 实际上会解码该字符串,并渲染相应的字符,Like This:
This is a test
如果这个用户是恶意的,Coinbase就会渲染一个表单,它将值提交给恶意网站来捕获凭据。

四、重要结论

当你测试一个网站时,要检查它如何处理不同类型的输入,包括纯文本和编码文本。特别要注意一些接受URL编码值,列如:%2f,并渲染解码值的特点,这里是“/”