Nginx日志注入:
日志包含漏洞的成因还是服务器没有进行严格的过滤 ,导致用户可以进行任意文件读取,但是前提是服务器需要开启了记录日志的功能才可以利用这个漏洞。
对于Apache,日志存放路径:/var/log/apache/access.log
对于Ngnix,日志存放路径:/var/log/nginx/access.log 和 /var/log/nginx/error.log
中间件的日志文件会保存网站的访问记录,比如HTTP请求行,User-Agent,Referer等客户端信息,如果在HTTP请求中插入恶意代码,那么恶意代码就会保存到日志文件中,访问日志文件的时候,日志文件中的恶意代码就会执行,从而造成任意代码执行甚至获取shell。
Nginx中的日志分两种,一种是error.log,一种是access.log。error.log可以配置成任意级别,默认级别是error,用来记录Nginx运行期间的处理流程相关的信息;access.log指的是访问日志,用来记录服务器的接入信息(包括记录用户的IP、请求处理时间、浏览器信息等)。
一、 基础知识
- /etc/nginx/nginx.conf:该文件是Nginx的配置的文件,该文件保存着能够影响服务器运行的配置信息。有时会泄露敏感信息。该文件支持php解析。
- /var/log/nginx/access.log:该文件是Nginx的访问日志文件,Nginx会把每个用户访问信息记录到指定的日志文件里。该文件支持php解析。
我们尝试读取它的日志文件:
?url=/var/log/nginx/access.log
?url=/var/log/nginx/error.log
尝试读取Linux系统下的用户信息:
?url=/etc/passwd
从上面的日志信息可以看出是User-Agent的内容,这里我们在User-Agent里插入一句话木马
由于访问URL时,服务器会对其进行编码,所以我们通过使用burpsuite抓包来进行来注入
写入一句话木马之后,使用蚁剑尝试连接
连接url即为日志的地址:http://ec78819f-174d-4e26-82be-7cce55c08b05.challenge.ctf.show/?url=/var/log/nginx/access.log
连接成功
进入后台,找到flag
ctfshow{8df69fe0-d37b-4231-a482-c3d93c89f43c}