HTTP攻击与防范-PHP客户端脚本攻击
实验目的
了解客户端脚本植入攻击的方式
掌握防范攻击的方法
实验原理
了解客户端脚本植入攻击的方式
掌握防范攻击的方法
实验内容
了解客户端脚本植入攻击的方式
掌握防范攻击的方法
实验环境描述
1、 学生机与实验室网络直连;
2、 VPC1与实验室网络直连;
3、学生机与VPC1物理链路连通;
实验步骤
1.打开虚拟机,输入用户名和密码,用户为admin 密码为 123456
2.学生进入目标主机,(第一次启动目标主机,还需要打开xampp,手动开启Apache与MySQL服务)
3.打开浏览器,输入localhost:8080/example_code/ 如图:
4、点击(3)客户端脚本攻击(script Insertion)。如图:
5、然后点击演示1,如图:
6、在正常的情况下来访者在图3-2的“标题”文本框中输入留言的标题,在“姓名”文本框中输入留言者的姓名,在“电子邮件”文本框中输入留言者的电子邮件信箱,在“问题”文本框中输入留言者的问题。 假如在“问题”文本框中输入:
<h1>我来也</h1>
如图:
7、然后点击提交,如图:
8、开始攻击: 点击攻击1,显示简单的对话框 假如在ex3-1.php网页的“问题”文本框中输入:
<script>alert("吓一跳!");</script>
如图
9、单击【提交】按钮后,会发生什么情况?如图:
之所以会这样,是因为您在留言板的“问题”文本框中输入了上述的一串代码 ,而浏览器遇到script 标签时,就会执行客户端的程序代码(在这里JavaScript).所以单击留言板的【提交】按钮后,就会显示一个对话框。
10、如果点击【提交】按钮后想显示上图所示的对话框,那么请检查下列的两个选项。 (1)检查Intemet Explorer的活动脚本功能是否启动。如果活动脚本功能没有打开,就无法执行网页中的JavaScript代码。 打开打开Internet Explorer的活动脚本功能 在Internet Explorer中选择【工具】一【Inertnet选项】命令,这时会弹出“Inertnet选项”对话框,如图所示:
11、在“Internet选项”对话框中切换到“安全”选项卡,然后单击下方的【自定义级别】按钮,如图
12、“安全设置”对话框中,找到“脚本”项中的“Java小程序脚本”选项。确认“Java小程序脚本”的“启用”项目,这样Internet Explorer才会执行网页中的JavaScript代码。
13、如果点击【确认】按钮后想显示上图所示的对话框,还需要修改另一个参数。
(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。如图:
14、修改php.ini文件后,要重新启动Apache服务器。
点击桌面上的XAMPP Control Panel,然后点击Apache上的stop再start如图:
15、点击防护一,使用trip_tags函数来进行HTML输出过滤如图:
16、点击确认,就不会出现“吓一跳吧!”的对话框了。如图
17、利用数据库来来攻击,前面所讲的是咋留言板的“问题”文本框中输入:
<script>alert("吓一跳吧!");</script>
,点击确认后就会出现一个对话框 但是这只是客户端的黑客行为,只是在自己的浏览器内输入带有攻击效果的JavaScript代码,然后显示在自己的浏览器上而已。对网站而言,根本不会发生什么破坏性的结果。如果说有破坏的话,也只是黑客自己破坏自己的网页而已。 但是要记住,大部分PHP网站所设计的留言板的内容都会保存到MySQL数据库中。也就是说,黑客所录入的具有攻击性的JavaScript代码会被保存到网站的MySQL数据库中。 这样情况就严重了,因为当有权限浏览留言的人打开了具有攻击性的JavaScript代码的留言页面时,就会立即弹出一个对话框。
18、将具有攻击效果的JavaScript代码填入留言板的文本框中。点击攻击2如图:
19、单击表单的【提交】按钮,Web应用程序将录入的这段JavaScript代码插入数据库中。立即弹出一个对话框,让浏览留言页的用户觉得莫名其妙
20、点击查看2:已经新增了55,则说明实验成功。如图:
21、点击防护2,使用trip_tags函数来进行HTML输出过滤。如图:
22、单击确认,就不会出现对话框。如图:
这种攻击形式只是小小的恶作剧罢了,因为在网页中弹出一个对话框并不会造成什么破坏。但是试想,如果攻击性的JavaScript代码会破坏网页,例如莫名其妙地弹出许多新窗口,怎么关也关不完。那么这个网站的服务器也就快宕机了
22、破坏性的攻击手法:显示无穷尽的新窗口 单击演示3,并输入
<script>while(l) (window.open()); </script>
如图:
23、单击确认,如图:
24、点击攻击3,如图:
25、 点击提交后,
while(l) 会让程序进入无穷循环,而: window.open(); 则会打开一个新的浏览器窗口。如图:
26、 点击防护3,
使用strip_tags函数进行HTML输出过滤。如图:
27、引诱性的攻击手法:跳转网址
点击演示4,并在“问题”文本框中输入下列 如图:
28、单击确认,如图:
29、 单击攻击4,并输入如图代码:
30、 点击提交,页面正在跳转,如图;(若跳出如下所示的框,只要点击“添加”即添加该网址为信任网址。添加完成后,点击关闭即可。)
注意:若你本虚拟机不能上网则显示如下图所示的页面,此页面也成功跳转成功。
31、点击查看新加的数据,已经看见我们刚刚添加的hh002,说明已经添加成功,如图:
32、点击防护4,使用htmlspecialchars函数进行HTML输出过滤。如图:
33、单击确定,页面则不会跳转,说明防护成功。如图:
34、实验完毕,关闭虚拟机和所有窗口。
HTTP攻击与防范-PHP客户端脚本攻击的更多相关文章
- HTTP攻击与防范-跨网站脚本攻击
实验目的 1.了解XSS -跨网站脚本攻击带来的危险性. 2.掌握XSS -跨网站脚本攻击的原理与方法 3.掌握防范攻击的方法 实验原理 跨网站脚本攻击之所以会发生,是因为网站的Web应用程序对用户的 ...
- Web攻防系列教程之跨站脚本攻击和防范技巧详解
摘要:XSS跨站脚本攻击一直都被认为是客户端Web安全中最主流的攻击方式.因为Web环境的复杂性以及XSS跨站脚本攻击的多变性,使得该类型攻击很 难彻底解决.那么,XSS跨站脚本攻击具体攻击行为是什么 ...
- 【系统安全性】二、Web攻击与防范
二.Web攻击与防范 1.XSS攻击 跨站脚本攻击(Cross Site Scripting),因为简写CSS,与层叠样式表(Cascading Style Sheets)有歧义,所以取名XSS 原理 ...
- PHP漏洞全解(三)-客户端脚本植入
本文主要介绍针对PHP网站的客户端脚本植入攻击方式.所谓客户端脚本植入攻击,是指将可以执行的脚本插入到表单.图片.动画或超链接文字等对象内.当用户打开这些对象后,黑客所植入的脚本就会被执行,进而开始攻 ...
- XSS脚本攻击漫谈
XSS跨站脚本攻击一直都被认为是客户端 Web安全中最主流的攻击方式.因为 Web环境的复杂性以及 XSS跨站脚本攻击的多变性,使得该类型攻击很难彻底解决.那么,XSS跨站脚本攻击具体攻击行为是什 ...
- 第二百六十五节,xss脚本攻击介绍
xss脚本攻击介绍 Cross-Site Scripting(XSS)是一类出现在 web 应用程序上的安全弱点,攻击者可以通过 XSS 插入一 些代码,使得访问页面的其他用户都可以看到,XSS 通常 ...
- DNS常见攻击与防范
DNS常见攻击与防范 转自:http://www.williamlong.info/archives/3813.html 日期:2015-7-10 随着网络的逐步普及,网络安全已成为INTERNET路 ...
- 破坏之王DDoS攻击与防范深度剖析【学习笔记】
一.DDoS初步印象 1.什么是分布式拒绝服务攻击? 1)首先它是一种拒绝服务攻击 我们可以这么认为,凡是导致合法用户不能访问服务的行为,就是拒绝服务攻击. 注:早期的拒绝服务主要基于系统和应用程序的 ...
- Google Hacking 搜索引擎攻击与防范
Google Hacking,有时也会被称为 Google dorking,是一种利用谷歌搜索的高级使用方式进行信息收集的技术.这个概念最早在2000年由黑客 Johnny Long 提出并推广,一系 ...
随机推荐
- leetcode 264. 丑数 II 及 313. 超级丑数
264. 丑数 II 题目描述 编写一个程序,找出第 n 个丑数. 丑数就是只包含质因数 2, 3, 5 的正整数. 示例: 输入: n = 10 输出: 12 解释: 1, 2, 3, 4, 5, ...
- Java常见对象内存分析
首先要明确Java内存的个位置上放的是啥 类.对象.实例三者的关系: 1.类:是对象的模板,可以实例化对象.(this不能出现在静态方法中) 2.对象:类的个体. 3.实例:实现的对象. 4.对应的引 ...
- 用shell脚本写出检测/tmp/size.log文件,如果存在显示它的内容,不存在则创建一个文件将创建时间写入
1 #!/bin/bash 2 if [ -d "/tmp" ]; then 3 echo "/tmp is exists" 4 else 5 mkdir /t ...
- python网络爬虫-数据储存(七)
数据储存 主要介绍两种数据储存方法: 储存在文件中,包括text文件和csv文件 存储在数据库中,包括MySQL关系型数据库和mongoDB数据库 存储到txt title = "第一个文本 ...
- RPC调用获取参数值
本文以 RPC 获取百度登录password加密值为例: 涉及的知识点有: 1.js调试,寻找加密代码 2. 浏览器本地代码替换 3. js自执行函数 4. 插桩 5. RPC 远程调用 6. pyt ...
- python 小兵(12)模块1
序列化 我们今天学习下序列化,什么是序列化呢? 将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化. 为什么要有序列化模块: 比如,我们在python代码中计算的一个数据需要给另外一段程序使用 ...
- checklist 编写指南
checklist 编写工具 checklist文档格式推荐使用思维导图.比如 MindMaster 和 processon.我喜欢用这些平台或者软件的思维导图大纲模式来编写 checklist. c ...
- 如何在 VS Code 中为 Java 类生成序列化版本号
前言 IDEA 提供自动生成序列化版本号的功能,其实 VS Code 也可以,只是默认关闭了这个功能,下面就来看看如何开启这个功能吧. 配置过程 首先需要保证 VS Code 上安装了提供 Java ...
- 【源码】Redis Server启动过程
本文基于社区版Redis 4.0.8 1. 初始化参数配置 由函数initServerConfig()实现,具体操作就是给配置参数赋初始化值: //设置时区 setlocale(LC_CO ...
- jquery里面的$(this)和this的区别
感谢原文作者:何少旭 原文链接:https://www.cnblogs.com/heshaoxu/p/7672736.html 前言 当你用的是jquery时,就用$(this),如果是JS,就用th ...