默认情况下nginx 只记录http 协议中 get、post 的url 、UA 等信息,不会记录post body 数据,但是一些场景下我们有需要观察post body 数据以确认body 中是否有可疑内容,所以如何开启记录,这是一个问题
网上文章有提到如何开启body 数据记录,但是都不全,这里直接给出lnmp 环境下的开启方法:
- 01-
修改nginx.conf 配置文件
添加日志记录格式字段
sudo vim /usr/local/nginx/conf/nginx.conf
主要是黄色字体部分的 $request_body,其中access 是log格式的名字,供我们后面引用
log_format access '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent $request_body "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
- 02-
引用日志格式
在对应的vhost 中,引用刚才设置的access 日志格式
sudo vim test.com.conf
主要是在最后一行,添加access 即可
- 03-
重启服务器
重启lnmp 试试效果
sudo lnmp restart
发送post 请求到对应的url
- 04-
查看结果
在访问日志中,可以看到最后一条日志的 aaa=phpinfo%28%29%3B 就是我们的body 部分,记录body 数据成功。
127.0.0.1 - - [30/Sep/2022:13:30:46 +0800] "GET /shell.php?aaa=phpinfo HTTP/1.1" 200 31 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"
127.0.0.1 - - [30/Sep/2022:13:31:00 +0800] "GET /shell.php?aaa=phpinfo HTTP/1.1" 200 31 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"
127.0.0.1 - - [30/Sep/2022:13:31:16 +0800] "POST /shell.php HTTP/1.1" 200 31 "http://test.com/shell.php?aaa=phpinfo" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"
127.0.0.1 - - [30/Sep/2022:13:31:20 +0800] "POST /shell.php HTTP/1.1" 200 24866 "http://test.com/shell.php" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"
127.0.0.1 - - [30/Sep/2022:13:45:16 +0800] "GET /shell.php HTTP/1.1" 200 31 - "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36" -
127.0.0.1 - - [30/Sep/2022:13:45:22 +0800] "POST /shell.php HTTP/1.1" 200 24863 aaa=phpinfo%28%29%3B "http://test.com/shell.php" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36" -