昨天出了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】 可以轉載,注明出處.