1. 程式人生 > 其它 >WordPress REST API 內容注入漏洞

WordPress REST API 內容注入漏洞

通過ichunqiu的實驗平臺學習了這個漏洞的原理和利用

WordPress是一種PHP語言開發的部落格平臺,REST API 是 WordPress 面向開發人員的功能,對於非開發人員,它可以啟用塊編輯器和現代外掛介面,而不會影響網站的安全性和隱私

該漏洞主要影響4.7.0-4.7.1版本

漏洞原理

圖片是轉載的

這個update_item_permissions_check()函式檢測了文章是否存在和檢查使用者有無許可權編輯:

  • $post=get_post($request['id']);這一行判斷的是提交的id有無文章
  • 幾個if判斷的是發生錯誤的型別,如果都不滿足這些if就返回true,使用者有許可權的意思;

要使 if 不執行,就要使$post為空,再看get_post()函式

看最後 return null,那麼如何滿足這個條件?就要看$_post,順藤摸瓜就要看get_instance()函式,要使$_post為假,就是return false,當我們傳入的id不是全由數字構成的時候會返回false

經過上面的一系列操作後,$post為null,update_item_permissions_check()函式返回true,成功繞過該函式。

再執行方法upload_item()中,由於型別轉換,使使用者傳送的任意請求,如?id=2ddddd,就會轉換為,就能對為2的文章進行更新修改了

利用方向

在ichunqiu中實驗的時候,只是簡單修改了文章。但這樣的話,感覺也沒什麼用處。後來想到,如果藉由這個來新增超連結,進行釣魚或刷流量;或者構造csrf攻擊連結。結合其他的攻擊方法,就會有很大影響。

看了別人的復現,說可以利用wordpress功能可解析html以及javascriot,那麼能做到的事情就更多了

在復現中使用的命令:curl 172.16.12.2 | grep entry-title

python title_wp_rest_api.py http://172.16.12.2/ ichunqiu

修復:

對於該漏洞,主要修復在get_instance()函式中