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


現代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:

14512262668078.jpg

跟進一下框架的異常處理方法。Index.php里注冊了異常處理:

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

這里用的是Symfony框架自帶的異常處理類:use Symfony\Component\Debug\ExceptionHandler;

跟進:

14512262936438.jpg

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

14512263050908.jpg

可見,這個異常類,將異常對象的”args”屬性輸出了。

認真學習過php異常處理類的同學應該知道,異常類的getTrace方法( http://php.net/manual/zh/exception.gettrace.php )是可以獲取到當前上下文中所有變量的。

所以,這里這個debug模式,等於說可以將當前函數中定義的所有變量輸出。那么試想,假設當前函數在出異常前,從數據庫或文件中讀取到了一些『敏感』信息,那么輸出這個異常是不是就可以dump出這個『敏感變量』了呢?

明顯這個猜想是可行的。

那么,我只需要在/api下找到一處出錯的代碼,並且當前函數中有敏感信息的地方,即可觸發成一個『大漏洞』。

很幸運的是我找到了好幾處。最簡單的一處,/api/src/user.php:373

14512263202009.jpg

這個$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 

14512263531475.jpg

0x03 利用方式二,利用社交屬性批量獲取信息

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

14512263722584.jpg

我的id是15670,直接訪問 http://demo.edusoho.com/api/users/15670/followings ,即可獲取我關注的所有人的所有信息,包括密碼等:

14512263801766.jpg

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

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

14512263922457.jpg

其他位置肯定不止,還可能泄露其他信息,我就不一一挖掘了,只為證明問題存在。

這個漏洞已經私下里報給官方了,所以demo站已經修復。但搜索“powered by edusoho” 還是能找到很多存在漏洞的站,在時間上這個漏洞還是屬於一個0day。

比如這個站:

http://mooc.sinepharm.com/api/users/1/followings


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM