文件日志包含漏洞
日志包含漏洞原因:
某php文件存在本地文件包含漏洞,但无法上传文件,利用包含漏洞包含Apache(看服务器是Apache还是nginx)日志文件也可以获取WebShell
注意:需要开启服务器记录日志功能
访问日志的位置和文件名在不同的系统上会有所差异
apache一般是/var/log/apache/access.log。:
nginx的log在/var/log/nginx/access.log和/var/log/nginx/error.log
Apache运行后一般默认会生成两个日志文件,这两个文件是access.log(访问日志)和error.log(错误日志),Apache的访问日志文件记录了客户端的每次请求及服务器响应的相关信息。
127.0.0.1 - - [02/Dec/2019:22:18:28 +0800] "GET / HTTP/1.1" 200 5615
127.0.0.1 - - [02/Dec/2019:22:18:28 +0800] "GET /wampthemes/classic/style.css HTTP/1.1" 200 2415
127.0.0.1 - - [02/Dec/2019:22:18:29 +0800] "GET /wampthemes/classic/img/gifLogo.gif HTTP/1.1" 200 3525
当访问一个不存在的资源时,Apache日志同样会记录 例如访问http://127.0.0.1/<?php phpinfo();?>。Apache会记录请求“<?php phpinfo();?>”,并写到access.log文件中,这时候去包含access.log就可以利用包含漏洞
但并不能直接利用,原因是直接访问URL后,一句话木马在日志文件中被编码了 需要通过burpsuite拦截直接访问http://127.0.0.1/<?php phpinfo();?> 就能生成包含一句话木马的access.log文件
下面我们来本地演示(使用的是phpstudy的apache)
复现漏洞:
1、文件包含漏洞代码
<?php
echo 'file inlcude test';
if(isset($_GET['rj45'])){
include($_GET['rj45']);
}
?>
2、写入phpinfo()
3、写入一句话
查看日志
相关ctf练习题
ctfshow -web-4