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

img

?url=/var/log/nginx/error.log

img

尝试读取Linux系统下的用户信息:

?url=/etc/passwd

img

从上面的日志信息可以看出是User-Agent的内容,这里我们在User-Agent里插入一句话木马

由于访问URL时,服务器会对其进行编码,所以我们通过使用burpsuite抓包来进行来注入

img

写入一句话木马之后,使用蚁剑尝试连接

连接url即为日志的地址:http://ec78819f-174d-4e26-82be-7cce55c08b05.challenge.ctf.show/?url=/var/log/nginx/access.log

连接成功

进入后台,找到flag

ctfshow{8df69fe0-d37b-4231-a482-c3d93c89f43c}

  1. Linux常见日志的路径和功能总结

img