新型php漏洞挖掘之debug導致的安全性漏洞(Edusoho)

來源:互聯網
上載者:User
【過年了,每天發一篇以前的存貨,一共七篇。】

現代cms架構(laraval/symfony/slim)的出現,導致現今的php漏洞出現點、原理、利用方法,發生了一些變化,這個系列希望可以總結一下自己挖掘的此類cms漏洞。

今天這個漏洞是Edusoho的一個user表dump漏洞。

首先,我簡要說明一下漏洞原理。

【漏洞源碼下載: https://mega.nz/#!4chVWCAB!xBVyC9QqxMCmeuLu3rGx__PwgkLe_a5NWUITLS3QzuM 】

0x01 開啟DEBUG模式造成的隱患

Edusoho開啟偵錯模式以後將會在程式出錯後輸出debug資訊,其中包括當前環境中所有變數的值。預設的index.php是不開啟debug的,但/api/index.php將會開啟debug:

跟進一下架構的異常處理方法。Index.php裡註冊了異常處理:

ErrorHandler::register();ExceptionHandler::register();

這裡用的是Symfony架構內建的異常處理類:use Symfony\Component\Debug\ExceptionHandler; 跟進:

調用了set_exception_handler註冊的異常處理方法。不斷跟進,發現該類的getContent方法是輸出錯誤內容的方法:

可見,這個異常類,將異常對象的”args”屬性輸出了。 認真學習過php異常處理類的同學應該知道,異常類的getTrace方法( http://php.net/manual/zh/exception.gettrace.php )是可以擷取到當前上下文中所有變數的。 所以,這裡這個debug模式,等於說可以將當前函數中定義的所有變數輸出。那麼試想,假設當前函數在出異常前,從資料庫或檔案中讀取到了一些『敏感』資訊,那麼輸出這個異常是不是就可以dump出這個『敏感變數』了呢?

明顯這個猜想是可行的。

那麼,我只需要在/api下找到一處出錯的代碼,並且當前函數中有敏感資訊的地方,即可觸發成一個『大漏洞』。 很幸運的是我找到了好幾處。最簡單的一處,/api/src/user.php:373

這個 $follwers 變數是一個未定義的變數呀,所以一定會觸發錯誤。

正好,當前函數中有 $user 、 $follwings 兩個變數, $user 變數是指定的使用者, $follwings 是它關注的使用者。

所以,在報錯輸出調試資訊以後,將會完全列印出這兩個變數的值。而這兩個變數都是從資料庫user表裡取出的資料,其中包含使用者的所有資訊(郵箱、密碼hash、交易密碼hash、salt、session、IP地址、暱稱、登入時間等)。

另外, $follwings 變數裡也有這些資訊,我只要批量關注所有人,這個漏洞就變成了一個dump資料庫user表的漏洞。

0x02 利用方式一,直接擷取任意使用者user表資訊。

訪問 http://demo.edusoho.com/api/users/{使用者id}/followings 即可,如 http://demo.edusoho.com/api/users/5/followings

0x02 利用方式二,利用社交屬性批量擷取資訊

利用方式二,首先關注你想擷取密碼的人,比如我關注了這四個,分別是Id為1、2、3、4的使用者,其中1、4是管理員:

我的id是15670,直接存取 http://demo.edusoho.com/api/users/15670/followings ,即可擷取我關注的所有人的所有資訊,包括密碼等:

諸如此處的地方還有一個。

http://demo.edusoho.com/api/users/1/friendship?toIds[]=a 通過傳入數組製造warning:

其他位置肯定不止,還可能泄露其他資訊,我就不一一挖掘了,只為證明問題存在。 這個漏洞已經私下裡報給官方了,所以demo站已經修複。但搜尋“powered by edusoho” 還是能找到很多存在漏洞的站,在時間上這個漏洞還是屬於一個0day。 比如這個站: http://mooc.sinepharm.com/api/users/1/followings

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.