<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    Nginx越界讀取緩存漏洞(CVE-2017-7529)

    Path nginx/CVE-2017-7529

    漏洞原理

    參考閱讀:

    Nginx在反向代理站點的時候,通常會將一些文件進行緩存,特別是靜態文件。緩存的部分存儲在文件中,每個緩存文件包括“文件頭”+“HTTP返回包頭”+“HTTP返回包體”。如果二次請求命中了該緩存文件,則Nginx會直接將該文件中的“HTTP返回包體”返回給用戶。

    如果我的請求中包含Range頭,Nginx將會根據我指定的start和end位置,返回指定長度的內容。而如果我構造了兩個負的位置,如(-600, -9223372036854774591),將可能讀取到負位置的數據。如果這次請求又命中了緩存文件,則可能就可以讀取到緩存文件中位于“HTTP返回包體”前的“文件頭”、“HTTP返回包頭”等內容。

    復現漏洞

    運行測試環境:

    docker-compose up -d

    訪問http://your-ip:8080/,即可查看到Nginx默認頁面,這個頁面實際上是反向代理的8081端口的內容。

    調用python3 poc.py http://your-ip:8080/,讀取返回結果:

    可見,越界讀取到了位于“HTTP返回包體”前的“文件頭”、“HTTP返回包頭”等內容。

    如果讀取有誤,請調整poc.py中的偏移地址(605)。

    本文章首發在 網安wangan.com 網站上。

    上一篇 下一篇
    討論數量: 0
    只看當前版本


    暫無話題~
    亚洲 欧美 自拍 唯美 另类