ctfshow_web4-------日志注入
用data伪协议不好写,应该是被过滤掉了
根据提示进行日志注入,使用Wappalyzer查看一下,使用的中间件是Ngnix
日志包含漏洞的成因还是服务器没有进行严格的过滤 ,导致用户可以进行任意文件读取,
但是前提是服务器需要开启了记录日志的功能才可以利用这个漏洞。
对于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可以配置成任意级别,默认级别是error,用来记录Nginx运行期间的处理流程相关的信息;access.log指的是访问日志,用来记录服务器的接入信息(包括记录用户的IP、请求处理时间、浏览器信息等)。
查询日志
?url=/var/log/nginx/access.log
发现是User-Agent
User-Agent用户代理字符串
这个字符串通常包含了关于客户端软件的类型、版本、所用操作系统或其他环境信息。它在Web服务器的日志中可见。
例子:
1. Web浏览器
例子:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
解读:
Mozilla/5.0: 一般浏览器标识,几乎所有现代浏览器都以此开始。
(Windows NT 10.0; Win64; x64): 客户端运行的操作系统是64位的Windows 10。
AppleWebKit/537.36 (KHTML, like Gecko): 浏览器使用的渲染引擎,此处为WebKit。
Chrome/58.0.3029.110: 客户端是Chrome浏览器,版本是58.0.3029.110。
Safari/537.36: 表明这是基于Safari(WebKit)的浏览器。
2. 移动设备
例子:Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1
解读:
Mozilla/5.0: 通用浏览器标识。
(iPhone; CPU iPhone OS 10_3_1 like Mac OS X): 设备是iPhone,操作系统是iOS 10.3.1。
AppleWebKit/603.1.30 (KHTML, like Gecko): 使用Apple的WebKit渲染引擎。
Version/10.0 Mobile/14E304 Safari/602.1: Safari浏览器的版本和移动版标识。
3. 网络爬虫
例子:Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
解读:
Mozilla/5.0 (compatible;: 尝试模仿通用浏览器。
Googlebot/2.1: 这是Google的网络爬虫。
+http://www.google.com/bot.html: 提供关于这个爬虫的更多信息的链接。
4. 网络安全扫描工具
例子:Mozilla/5.0 (compatible; OWASP ZAP)
解读:
Mozilla/5.0 (compatible;: 模仿通用浏览器的做法。
OWASP ZAP: 这是开源网络安全扫描工具ZAP的请求。
5. 自动化测试工具
例子:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Selenium/3.141.59
解读:
Mozilla/5.0 (Windows NT 10.0; Win64; x64): 一般浏览器标识,Windows 10系统。
Chrome/58.0.3029.110: 使用Chrome浏览器。
Selenium/3.141.59: 这是一个自动化测试工具Selenium的请求
注意
用户代理伪装: 用户代理字符串可以被修改或伪造,因此不能完全依赖于它来作为唯一的安全检查手段。
bp抓包注入一句话木马
在get请求User-Agent最后写入#
放包
连接蚁剑
拿到flag
后来我尝试了一下文件包含也是可以的