电子教案 web应用与安全防护-11.doc
/学年第学期
教案
课程名称:Web应用安全与防护
课程代码:
任课教师:
教务处印制
课次
11
课程类型
理论
项目(模块)
项目2:典型漏洞利用与防御
----任务2.2文件包含漏洞
教学目标
知识目标:
1.了解文件包含、文件包含漏洞定义
2.理解文件包含漏洞的分类、文件包含函数
3.掌握文件包含漏洞利用,防范措施
能力目标:
1.能运用文件包含漏洞获取敏感信息以及加固方法
情感目标:
1.自主、开放的学习能力
2.良好的自我表现、与人沟通能力
3.良好的团队合作精神
教学重点
文件包含漏洞利用与防御
教学难点
文件包含漏洞利用与防御
教学方法
演示法
教学环境
教学楼
授课日期
2021/4/12
授课班级
19信息安全与管理
教学过程设计
课前准备
通过QQ群发布授课PPT,视频
教学内容
1.1文件包含
在web后台开发中,程序员往往为了提高效率以及让代码看起来更加简洁,会使用包含函数功能,比如会把网页引用的标准页眉(head.php)或菜单文件写进一个文件中,之后某个文件需要调用的时候就直接在文件头中写上一句?phpincludehead.php?.
使用文件包含为开发者节省大量的时间。
--当页眉需要更新时,您只更新一个包含文件就可以了,或者向网站添加一张新页面时,仅仅需要修改一下菜单文件(而不是更新所有网页中的链接)
1.2文件包含漏洞
有些时候,由于网站功能的需求,文件包含的代码文件被写成了一个变量,且这个变量可以由前端用户传进来,由于传入的文件名没有合理的校验,或者校验被绕过,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入,读取系统给敏感文件。
1.3文件包含代码
?php
$file=$_GET[‘file’];#将参数file的值传递给变量$file
include$file;#使用include函数包含文件
?
原因分析:
文件包含函数加载的参数没有经过过滤或者严格的定义,可以被用户控制,包含其他恶意文件,导致了执行了非预期的代码。
1.4PHP文件包含函数
大部分文件包含的漏洞都出现在php的程序中,因PHP语言提供的文件包含功能太强大,太灵活。
(1)include():包含过程中如果出现错误,会抛出一个警告,程序继续正常执行。
(2)include_once():同include,只包含一次。
(3)require():包含过程中如果出现错误,会退出程序的执行。
(4)require_once():同require,只包含一次。使用与在脚本执行期间同一个文件有可能被包括超过一次的情况下,你想确保它只被包含一次以避免函数重定义、变量重定义赋值等问题。
1.5文件包含漏洞分类
根据不同的配置环境,文件包含漏洞分为如下两种情况:
(1)本地文件包含:当被包含的文件在服务器本地
(2)远程文件包含:当被包含的文件在远程服务器
远程文件包含条件:在php.ini文件中
allow_url_fopen=on#默认打开
allow_url_include=on#默认关闭
1.5.1本地文件包含
1.5.2远程文件包含
2.1文件包含漏洞利用
1.本地文件包含
2.远程文件包含
3.文件上传+文件包含综合利用
2.2文件包含漏洞防御
(1)在功能设计上尽量不要将文件包含函数对应的文件放给前端进行选择和操作
(2)过滤各种../../,http://,https://
(3)配置php.ini配置文件
allow_url_fopen=off
allow_url_include=off
magic_quotes_gpc=on
(4)通过白名单策略,仅允许包含运行指定的文件,其他的都禁止
练习与
作业
1.利用本地文件包含漏洞读取目标系统敏感文件
2.利用文件上传+文件包含漏洞写入webshell
课后反思
注:1.一次课(2课时)写一份上述格式教案,课次为授课先后次序,填1、2、3...等。
2.课程类型:理论或实践。
3.教学环境:包含场所(教学楼、机房、实训室、操场等)和教具(实训设备、教学仪器、教学模型)。
4.课后反思要与相应的授课日期、授课班级的授课实际情况相对应。