作者:LoRexxar’@知道創宇404實驗室
0x01 前言
WordPress是一個以PHP和MySQL為平台的自由開源的博客軟件和內容管理系統。WordPress具有插件架構和模板系統。Alexa排行前100萬的網站中有超過16.7%的網站使用WordPress。到了2011年8月,約22%的新網站採用了WordPress。WordPress是目前因特網上最流行的博客系統。
在zoomeye上可以搜索到的wordpress站點超過500萬,毫不誇張的說,每時每刻都有數不清楚的人試圖從wordpress上挖掘漏洞…
由於前一段時間一直在對wordpress做代碼審計,所以今天就對wordpress做一個比較完整的架構安全分析…
0x02 開始
在分析之前,我們可能首先需要熟悉一下wordpress的結構
├─wp-admin
├─wp-content
│ ├─languages
│ ├─plugins
│ ├─themes
├─wp-includes
├─index.php
├─wp-login.php
- admin目錄不用多說了,後台部分的所有代碼都在這裡。
- content主要是語言、插件、主題等等,也是最容易出問題的部分。
- includes則是一些核心代碼,包括前台代碼也在這裡
除了文件目錄結構以外,還有一個比較重要的安全機制,也就是nonce,nonce值是wordpress用於防禦csrf攻擊的手段,所以在wordpress中,幾乎每一個請求都需要帶上nonce值,這也直接導致很多類似於注入的漏洞往往起不到預期的效果,可以說這個機制很大程度上減少了wordpress的漏洞發生。
0x03 nonce安全機制
出於防禦csrf攻擊的目的,wordpress引入了nonce安全機制,只有請求中_wpnonce
和預期相等,請求才會被處理。
我們一起來從代碼里看看
當我們在後台編輯文章的時候,進入/wp-admin/edit.php line 70
這裡不討論這個,直接跳過前面的步驟到漏洞核心原理的部分
wp-includes/meta.php line 365行
這裡我們可以找到漏洞代碼
事實上,在wordpress插件目錄中,wordpress本身並沒有做任何的處理,當你的用戶權限為超級管理員時,wordpress默認你可以對自己的網站負責,你可以修改插件文件、上傳帶有後門的插件,這可以導致後台幾乎可以等於webshell。
而在實際生活中,wordpress的漏洞重點集中在插件上面…在wordpress的插件上多做注意可能最重要的一點。
转载请注明:IAMCOOL » WordPress安全架構分析