昨天出了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