淺談開源web程式後臺的安全性

來源:互聯網
上載者:User

一、前言

不知怎的最近甚是思念校園生活,思念食堂的炒飯。 那時會去各種安全bbs上刷刷帖子,喜歡看別人寫的一些關於安全技巧或經驗的總結;那時BBS上很多文章標題都是:成功滲透XXX,成功拿下XXX。 這裡便以一篇入侵菲律賓某大學的文章引出文章的主題,我們先簡要看一下過程。 大學網站使用了名為joomla的開源web程式,(1)青年使用一個joomla已經公開的漏洞進入web後臺(2)青年使用joomla後臺上傳限制不嚴的缺陷上傳了一個webshell(3)控制主機贈送我國國旗。

原來入侵一台主機如此容易,管理員果斷給web程式打上安全補丁。 管理員的工作是結束了,作為安全從業人員再一想是不是joomla後臺這裡可以上傳webshell是不是有問題呢,如果joomla後臺不能上傳webshell,是不是可以減少入侵的可能和損失。 下面進入本文的主題:web幕後程式的安全性。

二、簡介

國內很多網站都是基於開源論壇、cms搭建的,比如discuz、phpwind、dedecms等。 這些程式都是國內開源web程式中的佼佼者,也比較注重安全性。 平時大家關注比較多的是sql注入、xss這些可以直接竊取使用者資料的漏洞。 網上因為弱口令被入侵的案例數不勝數,此外使用者資料洩漏事件時而發生,單純靠密碼防護的後臺被突破,被社工的可能性越來越大。 獲取一個管理後臺密碼後,再結合幕後程式的任意代碼執行、檔包含或命令注入等漏洞得到一個shell,竊取使用者資料不是什麼難事。 此時幕後程式的安全性成為一個短板。

Discuz是一款流行的論壇程式,筆者這裡就以它的幕後程式為例簡單分析一下其安全性,下面直接看一些漏洞案例(Discuz最新版本已打補丁,請使用者及時升級到最新版-Discuz! X3.1 R20140101)。

三、案例分析

Tips:下文提到的$settingnew是discuz後臺存儲表單資料的變數,後臺使用者可控。

案例一:使用者輸入資料過濾邏輯不當

漏洞檔:X3\source\admincp\admincp_setting.php

分析:

案例二:二次注入

簡單介紹一下二次注入,惡意使用者alice在A處傳入惡意資料並被存儲到資料庫,在A處不直接導致安全問題; B處引用到A處存儲的資料,從而觸發安全問題。

漏洞檔:X3\source\admincp\admincp_setting.php

分析:

案例三:程式升級新增邏輯導致的漏洞

漏洞檔:X3\source\admincp\admincp_adv.php

案例四:漏洞修補不完善

漏洞檔:X3\api\uc.php

分析:

這個問題早在2010年外部已經公開,官方已及時發出補丁

詳情請參考:HTTP://www.oldjun.com/blog/index.php/archives/76/

四、總結

上面這些例子主要是筆者實踐經驗的一些總結,不一定全面,希望能給大家拓展一些思路;比如上述提到的二次注入,$settingnew['seccodedata']['type']這個變數沒過濾,$ settingnew的其他陣列也可能沒過濾,也確實存在多處類似的問題,大家可以自行去嘗試一下。 關於代碼審計的方法主要有兩個大方向:(1)危險函數向上追蹤輸入;(2)追蹤使用者輸入是否進入危險函數;這裡的危險函數關於危險函數主要包括代碼執行相關:eval、assert,檔包含:include、require等, 命令執行:system、exec等,寫檔:fwrite、file_put_contents等;

代碼審計的方法這裡推薦兩篇文章:

HTTPs://code.google.com/p/pasc2at/wiki/SimplifiedChinese

HTTP://wenku.baidu.com/view/c85be95a3b3567ec102d8a12.html

五、反思

1、一切輸入都是有害的;

幕後程式的使用者輸入相比前臺主要增加了後臺表單的資料,此外有些後臺支援上傳檔(如dz1.5的自訂sql),上傳檔的內容也屬於輸入;這些輸入都屬於使用者範圍。 一定要做嚴格的控制和過濾。

2、安全意識;

其實很多漏洞的產生並不是技術問題導致的,而是我們缺乏安全意識,不重視安全而釀成的慘劇。 尤其是第三個和第四個,完全不應該發生;需要對開發人員做安全宣導和基本的安全培訓。

3、漏洞Review;

(1)開發人員收到漏洞後要對漏洞產生的原因做總結,並Review代碼中是否有類似的問題。 有些時候開發人員僅僅是修補了安全人員或白帽子提供的漏洞點,另外一處代碼有類似的問題沒修補繼續爆出漏洞,無窮無盡。 這樣做還會帶來更大的隱患,駭客是非常樂意並擅長總結反思的,每一個補丁其實也是給駭客拓展了思路,如果修補不完全後果很嚴重。

(2)開發人員修補完成後安全人員需要進行測試確認,上述的案例四就是鮮明的例子。 有條件的情況下安全人員應該整理一些常見漏洞修復指引,這樣也可以提高工作效率。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.