《Web安全程序设计与实践》课件项目16_第1页
《Web安全程序设计与实践》课件项目16_第2页
《Web安全程序设计与实践》课件项目16_第3页
《Web安全程序设计与实践》课件项目16_第4页
《Web安全程序设计与实践》课件项目16_第5页
已阅读5页,还剩13页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目16文件包含漏洞【项目描述】本项目对文件包含漏洞和防护进行实训。本项目包含三个任务,首先建立一个具有PHP动态文件包含功能的目标网站,然后利用动态文件包含功能实现对目标网站的攻击,最后通过设置正则表达式实现对包含的动态文件实现过滤以防护文件包含攻击。通过本项目实训,可以解释和分析PHP文件包含功能的作用、文件包含漏洞产生的原理和危害,能够应用正则表达式过滤方式实现对非法文件包含的防护【知识储备】文件包含的概念文件包含是网页程序设计语言的基本功能。使用文件包含功能,可以将一个网页文件插入到另一个网页文件中。这意味着可以为所有页面创建并包含标准页头、页脚或者菜单文件,比如在需要更新页头时只需更新包含的页头文件即可,使得网站设计省去大量的重复工作。按照被包含文件的位置,PHP文件包含可以分为本地文件包含和远程文件包含。本地文件包含指被包含的文件在服务器本地;远程文件包含指被包含的文件在第三方服务器。按照是否支持参数方式,PHP文件包含包括静态文件包含和动态文件包含两类。静态文件包含在PHP脚本文件中使用文件包含函数将需要包含的网页文件路径写入,动态文件包含则将需要包含的文件路径以Get方式接收文件包含漏洞的原理如果文件包含的对象是预先设计的静态固定文件,则不会出现文件包含问题,比如前面的项目中大量使用的include_once"functions.php"语句。但是PHP可以非常灵活的通过在URL地址中使用Get方式引入需要包含的文件,如果对文件来源没有进行限制,攻击者则可以使其包含一些特殊文件,造成系统信息泄漏,甚至运行用户上传的恶意文件等。PHP的文件包含功能有个特点,那就是不管被包含的文件是什么类型(图片、txt等),都会被直接作为PHP文件进行解析。文件包含功能本身不是漏洞,ASP和JSP等网页设计语言也有文件包含功能。但如果包含进来的文件不可控,就会被利用文件包含功能执行恶意操作,产生文件包含漏洞。只有动态文件包含才可能有漏洞被攻击者利用。按照被包含文件的位置,PHP文件包含漏洞分为本地文件包含漏洞和远程文件包含漏洞文件包含漏洞的危害如果网站存在文件包含漏洞,轻则会泄漏系统信息,比如服务器路径、日志内容等,重则可以结合文件上传功能运行PHP网页木马,进而控制整个系统【任务16-1】建立文件包含功能的网站本任务在项目15的基础上建立动态文件包含功能的网站,并测试文件包含功能16-1-1任务实现在Apache2.4的网站根目录C:\Apache24\htdocs\下新建一个文件夹include作为本项目网站的根目录,并将项目15的resolution目录下所有的文件拷贝到进来,包括resolution目录下uploads目录。本项目不需要另外建立数据库。本任务需要新建一个未登录主页文件index.php、一个页头文件header.html、一个页脚文件footer.html和一个CSS样式文件main.css。使用PHP的文件包含功能,在index.php文件中将页头、页脚或者菜单文件等包含进来,以实现统一的页面布局。另外还需要修改登录后的页面welcome.php的布局,并根据用户点击的功能使用文件包含显示相应页面内容。新建CSS样式文件main.css新建页头文件header.html新建页脚文件footer.html新建网站主页index.php修改welcome.php其它需要修改的页面16-1-2文件包含功能测试使用Firefox浏览器打开http://localhost/include/index.php,然后依次进行登录等操作,界面效果如图16-1和图16-2所示从以上界面效果可以看出,使用文件包含功能可以实现节省代码量、提高开发效率、保持界面风格一致等。当然,以上界面效果还可以继续进行优化以提高易用性【任务16-2】文件包含漏洞测试在本任务,利用文件包含漏洞分别进行获取系统信息、结合文件上传功能运行木马,并对远程文件包含漏洞进行讨论,最后对文件包含漏洞进行分析。为了测试文件包含漏洞对系统中其它文件的访问,先注释掉第14-3-1节设置的php.ini文件中的open_basedir一行16-2-1获取系统信息如果包含的参数是一个地址,比如当前路径./,上一级路径../,或者上上一级路径../../等,会在页面出现错误提示信息,同时暴露了所在的目录从以上警告信息暴露的路径告诉我们,关闭Apache和PHP的错误或者警告功能可以大大降低系统风险。因此,在生产环境运行的系统,必须关闭错误和警告提示功能。可以将这些信息记录在日志文件中以便分析网站代码的Bug除了暴露路径,还可以查看文件内容此外,在低版本的PHP还可以利用错误日志构造形如<?php@eval($_POST['pass'])?>的一句话木马如果是在Unix或Linux系统部署的Web服务,通过文件包含漏洞还可以查看系统的用户账号信息的/etc/passwd文件、保存用户密码的/etc/shadow文件等极其敏感的信息。查看系统信息不属于错误或者警告信息的范畴,因此屏蔽错误或者警告提示信息是解决不了这个问题的16-2-2结合上传功能运行木马PHP文件包含功能的特点是,不管包含的文件是什么类型(图片、txt等),都会被直接作为PHP文件进行解析。因此,即使是JPG图片类型的文件,只要其中含有PHP语句都可以被执行新建一个文本文档1.txt保存在桌面,文档内容为<?phpphpinfo()?>。将此文档的扩展名直接改成jpg,通过文件上传功能上传到服务器,然后在浏览器打开如下网址:http://localhost/include/index.php?page=./uploads/1.jpg可以发现,该文件可以被PHP解析如果将一个功能比较强大的PHP网页文件修改了扩展名,同样可以被PHP解析运行16-2-3远程文件包含PHP的文件包含不仅可以在服务器本地进行,也支持远程文件包含。比如使用如下的方式进行远程文件包含:http://localhost/include/index.php?page=/show.php在本书使用的PHP7版本,php.ini中的配置选项allow_url_include默认设置为off,即关闭了远程文件包含功能,因此该漏洞已经不在存在。但是在旧版本的PHP4,远程文件包含默认是打开的,因此如果没有加以限制,可以很轻松的在目标网站运行恶意PHP文件16-2-4测试分析PHP的动态文件包含功能提供了灵活的功能,提高了开发效率。但是,该功能也会被攻击者滥用,对系统造成严重威胁,因此必须对动态包含的文件进行过滤和限制。从以上攻击过程发现,可以对动态包含的文件进行黑名单方式或者白名单方式进行限制。白名单方式是将作为参数的文件名限制为指定的某几个文件。黑名单方式则是在文件名参数中不能包含某些路径下的文件。对比两种手段,黑名单方式存在被绕过的风险,因此白名单方式更简单,安全性更高一些【任务16-3】文件包含漏洞防护在本任务,使用php的open_basedir安全选项,结合文件名黑名单的方式利用正则表达式实现对非法文件包含的过滤,并测试防护效果。如果动态包含的文件是确定的,推荐使用白名单的方式16-3-1设置open_basedir重新启用第14-3-1节设置的php.ini文件中的open_basedir,去掉前面的分号注释。如果Apache服务器同时运行多个网站,推荐在Apache的虚拟主机配置文件httpd-vhosts.conf里设置访问限制。重新打开图16-4所示的地址,发现没有访问权限,如图16-7所示。但是,open_basedir不能限制访问当前PHP文件所在目录或子目录中的其它文件,重复图16-6所示的攻击,发现仍然可以运行。因此open_basedir安全选项不能彻底解决文件包含漏洞16-3-2正则表达式过滤接下来使用黑名单的方式利用正则表达式实现对非法文件包含的过滤,同时不影响正常功能的使用。根据本项目所建立网站的特点,包含的只能是在当前的网站目录下的网页文件,不能是目录,也不能跳转到其它目录。因此,需要过滤掉如下符号:.开头、.结束、含有..、含有/、含有\、含有%。其中,由于正常包含的文件也有点号,所以不能直接过滤点号,点号在中间是正常情况,而点号在开头或者在结束的都不是正常文件。过滤百分号是为了避免通过URL编码方式绕过过滤限制。故正则表达式可以表示为:"/^\.|\.$|(\.\.)|\/|\\\\|%/"此外,还需要判断包含的文件是否存在,如果不存在可以定位到登录界面重复图16-6所示的攻击过程,发现不能成功当打开不存在的文件,或者为"?page=."、"?page=1."、"?page=.abc"等畸形参数时,均可以起到防护作用,请自行验证。另外,也可以在传递PHP文件名参数时,只传递主文件名而不传递扩展名,把扩展名.php以字符串的方式拼接到被包含的文件字符串中【项目总结】参数化的动态文件包含是文件包含漏洞产生的原因

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论