昨天出了grafana的LFI
payload
GET /public/plugins/welcome/../../../../../../../../etc/passwd HTTP/1.1 Host: localhost:3000 Connection: close
当然payload的方法有很多,本文重点不在于payload。重点在于grafana或其他业务基本上都是通过nginx去进行反向代理出去的,所以通过nginx访问会返回400。
nginx或者apache这些常见反向代理中间件会对url进行normalize的操作,简单来说就是会在转发前将'../'这些去掉,而当去掉后的路径超出web根目录的限制就会直接返回400错误而不会把请求转发到grafana,因此就会导致复现失败(引用公众号:赛博回忆录)
nginx 主要参考文章(https://www.codenong.com/cs110392483/)
所以漏洞稍微变得鸡肋了一些,今天刚好在朋友圈看到chybeta发的nginx 400反代绕过,学习了一些姿势,进行记录
在payload前面加上,即可,个人感觉是让nginx以为走前端路由,绕过了normalize(猜测,未实证)
学习一波,记录一下,后续的其他payload构造还是有很大帮助的,
最后官网也临时做了升级:
https://grafana.com/blog/2021/12/07/grafana-8.3.1-8.2.7-8.1.8-and-8.0.7-released-with-high-severity-security-fix/
也可以进行升级了
资料:
https://t.zsxq.com/I6ujE6q
https://mp.weixin.qq.com/s/dqJ3F_fStlj78S0qhQ3Ggw
【版权所有@Sevck 博客地址http://www.cnblogs.com/sevck】 可以转载,注明出处.