实验目的与要求

了解客户端脚本植入攻击的方式

掌握防范攻击的方法

预备知识

所谓客户端脚本植入( Script Insertion)攻击,是指将可以执行的脚本插入到表单、图片、动画或超链接文字等对象内。当用户打开这些对象后,黑客所植入的脚本就会被执行,进而开始攻击。

可以被用做脚本植入攻击的HTML标签包括以下5个方面。

(1)以<script>标签标记的JavaScript和VB Script等页面脚本程序。在<script>标签内可以指定JavaScript程序代码,也可以在src属性内指定JavaScript文件的URL路径。

(2)以<object>标签标记的对象。这些对象通常是Java Applet、多媒体文件及ActiveX控件等。通常在data属性内指定对象的URL路径。

(3)以<embed>标签标记的对象。这些对象通常是多媒体文件,例如Macromedia Flash。通常在src属性内指定对象的URL路径。

(4)以<applet>标签标记的对象。这些对象是Java Applet。通常在codebase属性内指定对象的URL路径。

(5)以<form>标签标记的表单。通常在action属性内指定要处理表单数据的Web应用程序的URL路径。

举个简单的例子,现在有许多PHP网站中都提供让访问者留言的功能。这些被输入的留言,通常会被保存在站点的MySQL数据库中。网站管理员可以浏览这些留言,也有可能开放给其他来访者浏览。

正常显示的留言内容应该是不会有像<script>这样的HTML标签存在,而不够细心的网站会直接将留言的内容显示出来。这时候不怀好意的黑客就可以利用这个漏洞,在留言中输入JavaScript程序代码。

如果网站没有过滤就直接显示留言的内容,这时候植入留言中的JavaScript程序代码就会被执行。当网站的管理员或是其他用户在浏览这些留言时,就会遭到植入脚本的攻击。

点击(3)客户端脚本攻击(Script Insertion)。如图:

然后点击演示1,如图:

在正常的情况下来访者在图3-2的“标题”文本框中输入留言的标题,在“姓名”文本框中输入留言者的姓名,在“电子邮件”文本框中输入留言者的电子邮件信箱,在“问题”文本框中输入留言者的问题。

假如在“问题”文本框中输入:<h1>我来也</h1>,如图:

然后点击提交,如图:

开始攻击:

点击攻击1,显示简单的对话框

假如在ex3-1.php网页的“问题”文本框中输入:

<script>alert("吓一跳吧!");</script>如图:

单击【提交】按钮后,会发生什么情况?如图:

之所以会这样,是因为您在留言板的“问题”文本框中输入:<script>alert("吓一跳吧!");</script>

而浏览器遇到<script>标签时,就会执行客户端的程序代码(在这里JavaScript).所以单击留言板的【提交】按钮后,就会显示一个对话框。

如果点击【提交】按钮后想显示上图所示的对话框,那么请检查下列的两个选项。

(1)检查Intemet Explorer的活动脚本功能是否启动。如果活动脚本功能没有打开,就无法执行网页中的JavaScript代码。

   打开打开Internet Explorer的活动脚本功能

在Internet Explorer中选择【工具】一【Inertnet选项】命令,这时会弹出“Inertnet选项”对话框,如图所示:

在“Internet选项”对话框中切换到“安全”选项卡,然后单击下方的【自定义级别】按钮,如图:

“安全设置”对话框中,找到“脚本”项中的“Java小程序脚本”选项。确认“Java小程序脚本”的“启用”项目,这样Internet Explorer才会执行网页中的JavaScript代码。

如果点击【确认】按钮后想显示上图所示的对话框,还需要修改另一个参数。

(2)检查PHP的php.ini文件中,magic_quotes_gpc的当前值是否是Off.如果magic_quotes_gpc的当前值是On,那么alert("吓一跳吧!")中的双引号“"”就会被改成转义字符“\"”,而让这个JavaScript代码无法执行。

所以我们需要将magic_qutes_gpc的值改为off

打开php.ini文件,这个文件位置在C:\Windows文件夹内。在php.ini中找到magic_quotes_gpc选项,如图3-7所示。将magic_quotes_gpc的值设置成Off。如图:

修改php.ini文件后,要重新启动Apache服务器。

点击桌面上的XAMPP Control Panel,然后点击Apache上的stop再start如图:

点击防护一,使用trip_tags函数来进行HTML输出过滤如图:

点击确认,就不会出现“吓一跳吧!”的对话框了。如图

利用数据库来来攻击,前面所讲的是咋留言板的“问题”文本框中输入:<script>alert("吓一跳吧!");</script>,点击确认后就会出现一个对话框

但是这只是客户端的黑客行为,只是在自己的浏览器内输入带有攻击效果的JavaScript代码,然后显示在自己的浏览器上而已。对网站而言,根本不会发生什么破坏性的结果。如果说有破坏的话,也只是黑客自己破坏自己的网页而已。

但是要记住,大部分PHP网站所设计的留言板的内容都会保存到MySQL数据库中。也就是说,黑客所录入的具有攻击性的JavaScript代码会被保存到网站的MySQL数据库中。

这样情况就严重了,因为当有权限浏览留言的人打开了具有攻击性的JavaScript代码的留言页面时,就会立即弹出一个对话框。

将具有攻击效果的JavaScript代码填入留言板的文本框中。点击攻击2如图:

单击表单的【提交】按钮,Web应用程序将录入的这段JavaScript代码插入数据库中。立即弹出一个对话框,让浏览留言页的用户觉得莫名其妙

点击查看2:已经新增了pp,则说明实验成功。如图:

点击防护2,使用trip_tags函数来进行HTML输出过滤。如图:

单击确认,就不会出现对话框。如图:

这种攻击形式只是小小的恶作剧罢了,因为在网页中弹出一个对话框并不会造成什么破坏。但是试想,如果攻击性的JavaScript代码会破坏网页,例如莫名其妙地弹出许多新窗口,怎么关也关不完。那么这个网站的服务器也就快宕机了

破坏性的攻击手法:显示无穷尽的新窗口

单击演示3,并输入<script>while(l) {window.open();} </script>如图:

单击确认,如图:

点击攻击3,如图:

点击提交后,while(l){)

会让程序进入无穷循环,而: window.open();则会打开一个新的浏览器窗口。如图:

点击防护3,使用strip_tags函数进行HTML输出过滤。如图:

引诱性的攻击手法:跳转网址

点击演示4,并在“问题“文本框中输入下列JavaScript代码:

<script>location.href="http://cn.yahoo.com";</script>如图:

单击确认,如图:

单击攻击4,并输入<script>location.href="http://cn.yahoo.com";</script>,如图:

点击提交,页面正在跳转,如图;(若跳出如下所示的框,只要点击“添加”即添加该网址为信任网址。添加完成后,点击关闭即可。)

 

页面已经跳转到yahoo首页:(点击“添加”即添加为信任网站即可。)

注意:若你本虚拟机不能上网则显示如下图所示的页面,此页面也成功跳转成功。

点击查看新加的数据,已经看见我们刚刚添加的hh002,说明已经添加成功,如图:

点击防护4,使用htmlspecialchars函数进行HTML输出过滤。如图:

单击确定,页面则不会跳转,说明防护成功。如图:

Script Insertion -客户端脚本植入攻击相关推荐

  1. 读《白帽子讲Web安全》之客户端脚本安全(一)

    2019独角兽企业重金招聘Python工程师标准>>> [第2章  浏览器安全] 1.同源策略(Same Origin Policy)是一种约定,它是浏览器最核心也最基本的安全功能. ...

  2. 如何防止跨站点脚本 (XSS) 攻击完整指南

    跨站点脚本 (XSS) 攻击的完整指南.如何防止它以及 XSS 测试. 跨站点脚本 (XSS) 是每个高级测试人员都知道的最流行和易受攻击的攻击之一.它被认为是对 Web 应用程序最危险的攻击之一,也 ...

  3. 在asp.net中使用客户端脚本

    我们常常在asp.net中需要使用到客户端脚本,在asp.net中使用客户端脚本很容易,使用到Page的RegisterClientScriptBlock方法就行了.下面是我写的一段C#代码,用来打开 ...

  4. [转]MSDN - 在客户端脚本中为 UpdateProgress 控件编程

    本文转自: http://msdn.microsoft.com/zh-cn/library/bb386518.aspx 在本教程中,将通过编写 ECMAScript (JavaScript) 代码来扩 ...

  5. Asp.Net 2.0中的客户端脚本

    在使用 ASP.NET 的时候,我们仍然在许多情况下需要使用客户端脚本.以下是笔者根据自己的经验和一些粗浅的研究,对此作一个简要的总结. 一.在 HTML 里直接写脚本 这个方法是最简单的,直到如今我 ...

  6. 新瓶旧酒ASP.NET AJAX(6) - 客户端脚本编程

    [索引页] [×××] 新瓶旧酒ASP.NET AJAX(6) - 客户端脚本编程(Sys.WebForms命名空间下的类Sys.Serialization命名空间下的类) 作者:webabcd 介绍 ...

  7. 想在客户端脚本中引用CHECKBOXLIST中的CHECKBOX项?

    有时候,我们需要在客户端验证客户是否勾选上了CHECKBOXLIST中的某一项或者验证客户端是否未选择CHECKBOXLIST的任何项 我们通常需要为这种验证撰写客户端脚本并保证其在触发回传前调用 问 ...

  8. ECMAScript:客户端脚本语言的标准

    * ECMAScript:客户端脚本语言的标准1. 基本语法:1. 与html结合方式1. 内部JS:* 定义<script>,标签体内容就是js代码2. 外部JS* 定义<scri ...

  9. ASP.NET AJAX入门系列(7):使用客户端脚本对UpdateProgress编程

    原文链接:http://www.cnblogs.com/Terrylee/archive/2006/11/12/ASPNET_AJAX_UpdateProgress_Part2.html 在本篇文章中 ...

最新文章

  1. TAB(Nav)导航菜单
  2. linux中vim常用命令总结
  3. C++实践参考——数组类运算的实现
  4. ehcache 默认大小_简单的使用ehcache
  5. 弹弹堂sf发布网_私服冒险岛,新开私服冒险岛,心动sf冒险岛发布网,最新开的私服冒险岛应该如何快速的获取魅力呢?...
  6. 贷款利息及公积金知识点
  7. Java中String, StringBuilder和StringBuffer
  8. 2016西安教师职称计算机考试,2016教师职称计算机考试模块.doc
  9. matlab直方图 | 不用imhist循环实现,imhist检验
  10. php主页备案号底部中间,如何获取公安备案号?如何将公安备案号放到网站底部?...
  11. 10w单词库(含释义)(包含sql,csv)
  12. 说说3D打印培训课程在我国的开展的现状——3D打印培训宁波清车
  13. 你有在为大学时选的专业后悔吗?
  14. 【无线芯片解读】2.4G专题:(SI24R1简版)Ci24R1
  15. 计算机无法加载这个项目,Windows系统中出现无法加载这个硬件的设备驱动程序(代码39)的解决方法介绍 win7...
  16. Linux虚拟内存空间分布
  17. 【金融项目】尚融宝项目(二)
  18. 全球计算机病毒损失报告,世界十大计算机病毒 CIH的危险被公认,第二经济损失26亿美元...
  19. 阅读笔记0001之聊聊数据分析现状
  20. 店铺与品牌的关键字搜索——wand(wead and)算法简介与改造

热门文章

  1. 学生管理系统(web版)
  2. CAN 与 CANFD数据报文格式解读
  3. python excel按月累计_基金定投只有高手才能玩?不,你用Excel就可以品职Python小白入门课堂...
  4. Linux系统下rar软件的安装以及如何解压文件
  5. 用python实时监控A股股票的波动并发送预警邮件
  6. 常用的企业管理软件有哪些?
  7. 第8周项目5定期存款利息计算器
  8. 小区物业管理系统设计与开发论文
  9. 为何要转换为GERBER文件交PCB厂制板
  10. 计算机网络题库——第4章 网络层