文章详情

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

请输入下面的图形验证码

提交验证

短信预约提醒成功

html注入是什么意思

2024-04-02 19:55

关注

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

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

本教程操作环境:windows7系统、HTML5版、Dell G3电脑。

什么是HTML注入?

HTML注入(Hypertext Markup Language Injection)中文意思是“超文本标记性语言注入”,众所周知HTML含有各种标签,如果Web应用程序对用户输入的数据没进行彻底的处理的话,那么一些非法用户提交的数据可能含有HTML其他标签,而这些数据又恰好被服务器当作正常的HTML标签显示,那么最终的结果是非法标签被解析(可以应用于钓鱼、社会工程学等),对其他用户造成很大影响。

攻击者可以伪造自己的有效负载,并通过易受攻击的字段将恶意HTML代码注入应用程序,从而修改网页内容,甚至获取一些敏感数据。

HTML注入与XSS的区别

XSS(Cross-site Scripting)中文翻译是“跨站脚本攻击”,XSS本质上是HTML注入攻击,但又不同于HTML注入,XSS利用脚本标记运行JavaScript等脚本程序,可以通过JavaScript获取机密数据和一些列危险操作,而HTML注入只是使用HTML标签修改页面内容。

HTML Injection - Reflected (GET)

反射型HTML注入(GET方式)

First name填入< p style=“color:red”>html< /p>,Last name填入test,发现html字母变成红色,说明我们写入的html代码成功执行了,此网站存在html注入。

html注入是什么意思

HTML Injection - Reflected (POST)

反射型HTML注入(POST方式)

注:GET方式提交数据后浏览器地址栏会把提交的数据显示出来,POST则不会显示。

与上面GET方式一样
Firstname填入

html2

,Last name填入test,发现html2字母变成绿色,说明我们写入的html代码成功执行了,此网站存在html注入。
html注入是什么意思

HTML Injection - Reflected (Current URL)

反射型HTML注入(Current URL)

首先,我们分析下源码
核心代码

 <div id="main">

    <h2>HTML Injection - Reflected (URL)</h2>

    <?php echo "<p align=\"left\">Your current URL: <i>" . $url . "</i></p>";?>

</div>

这段代码中有一段PHP代码,执行html语句,输出一段“Your current URL:”字符,并调用$url变量,将输出的内容跟在后面。

防护代码

$url= "";

        
switch($_COOKIE["security_level"])
{

    case "0" :

        // $url = "http://" . $_SERVER["HTTP_HOST"] . urldecode($_SERVER["REQUEST_URI"]);
        $url = "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];                  //$url= ''接受的参数来自请求头HOST和URL
break;

    case "1" :

        $url = "<script>document.write(document.URL)</script>";
        break;

    case "2" :

        $url = "http://" . $_SERVER["HTTP_HOST"] . xss_check_3($_SERVER["REQUEST_URI"]);
        break;

    default :

        // $url = "http://" . $_SERVER["HTTP_HOST"] . urldecode($_SERVER["REQUEST_URI"]);
        $url = "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];               
        break;

}


<select name="security_level">
            
            <option value="0">low</option>
            <option value="1">medium</option>
            <option value="2">high</option> 
            
        </select>

阅读防御代码可以了解到根据设置的难度不通,调用的防御代码也不同。

(1)LOW

将等级设置为Low时,执行下面的语句

$url = "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];

这里的 $_SERVER[“HTTP_HOST”]表示获取当前域名
这里的 $_SERVER[“REQUEST_URI”]”是获取域名后面的完整的地址路径

通过burp抓包修改host参数,可以发现页面上发生了变化


html注入是什么意思
html注入是什么意思

(2)medium

将等级设置为medium时,执行下面的语句

$url = "<script>document.write(document.URL)</script>";

这里的document对象代表整个HTML文档,可用来访问页面中的所有元素;

document.write()是动态向页面写入内容
document.URL是设置URL属性从而在同一窗口打开另一页面

(3)high

将等级设置为high时,执行下面的语句

$url = "http://" . $_SERVER["HTTP_HOST"] . xss_check_3($_SERVER["REQUEST_URI"]);

这里调用了xss_check_3函数对host后面的部分进行了过滤处理,使得无法进行注入。

HTML Injection - Stored (Blog)

存储型HTML注入

注:反射型页面刷新后就不存在了,而存储型是写入了服务器数据库,刷新后照样存在。

因此,存储型危害性大大大于反射型。

在文本域输入<p style=”color:red”>HTML </p>即可成功解析p标签,说明存在HTML注入。
html注入是什么意思

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

阅读原文内容投诉

免责声明:

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

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

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-前端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯