外掛AMP for WordPress易遭注入惡意碼
- 發布單位:TWCERT/CC
- 更新日期:2019-04-03
- 點閱次數:487
內文
Google設計的加速行動網頁(Accelerate Mobile Pages),簡稱AMP,是開源專案項目,WordPress亦開發專屬外掛程式AMP for WordPress,讓行動裝置用戶能更快速瀏覽網頁,目前安裝應用逾十萬次,據資安公司WebARX分析指出,該plugin潛藏嚴重破綻,原因是函數ampforwp_save_steps_data( )原始設計缺乏連線帳號鑑定機制,未判斷操作者是否具相應授權,即儲存所作設定變更,故任何用戶無論其帳號角色為何,皆能直接使用ajax hook功能,比照admin user,惡意插入HTML / JavaScript程式碼,竄改外掛表現,添加廣告或頁首、頁尾內容(探勘實務詳影片),官方已更新AMP for WordPress,WordPress架站網管應儘速安裝,尤其是無防火牆保護之server。
●編註:
(1)弱點分析
(1-1)探勘容易
由WordPress官方所開發的AMP外掛,提供極方便的功能,任何人均可登錄ajax hook,然後直接循 ../wp-admin/admin-ajax.php?action=action_name 的URL方式呼叫函數,只要是註冊過的用戶,無論其帳號角色有無管理者權限,皆能獲得授權操作ajax hook,插入惡意HTML或JavaScript程式碼,變更plugin設定值,癥結在於函數ampforwp_save_steps_data( )之原始設計,未稽核用戶權限,且該函數在初始安裝階段負責儲存組態參數,亦登錄成ajax hook屬性。
(1-2)修補技巧
WordPress的nonce概念不同於一般認知,wpnonce非數字而是英數混雜的hash,也不是用一次就丟棄,而是配賦給固定用戶,在wpnonce生命週期結束前,用於辨識特定使用者。
針對ampforwp_save_steps_data( )原始碼,增補必要判斷式,一律檢查wpnonce以鑑別帳號權限等級,僅放行admin user更改plugin設定。
(2)關於Ajax
(2-1)非同步JavaScript與XML技術
Ajax代表Asynchronous JavaScript and XML,是一套綜合了多項技術的瀏覽器端網頁開發技術,傳統Web應用允許用戶端填寫form,送出表單同時向伺服器送一個請求,伺服器接收表單後送回一個新網頁,因為前後兩個page中大部分HTML碼很雷同,此做法浪費許多頻寬,由於溝通都需要向伺服器傳送請求,回應時間依賴伺服器效能,導致使用者介面回應慢於本機應用,而AJAX僅向伺服器傳送並取回必須資料,在用戶端採JavaScript處理伺服器回應,大量減少資料交換,故伺服器回應更快,負荷也減少。
Ajax最大優點,就是不需更新整個頁面即可維護資料,使Web應用程式更迅捷回應用戶,並避免傳送未改變的資訊;負評就是能破壞瀏覽器的後退與加入書籤功能,瀏覽器僅能記載歷史記錄中的靜態頁面,在動態更新頁面的情況下,無法單擊後退按鈕回到前頁。
(2-2) Ajax hook
ajax-hook可攔截所有ajax請求,修改request數據和response數據,實際上用於自動協議解析、介面統計等目的。
影響產品
解決辦法
相關連結
- https://www.youtube.com/watch?v=G7y4ecT_ifg&feature=youtu.be
- https://www.webarxsecurity.com/amp-plugin-vulnerability/
- https://thehackernews.com/2018/11/amp-plugin-for-WordPress.html
- https://codex.wordpress.org/WordPress_Nonces
- https://zh.wikipedia.org/wiki/AJAX
- https://www.jianshu.com/p/7337ac624b8e
- https://www.ampproject.org/
- https://technews.tw/2016/11/04/google-may-be-stealing-your-mobile-traffic/
- https://tw.wordpress.org/plugins/amp/#description
- https://themefuse.com/wp-content/uploads/2017/06/AMP-wordpress-plugin.jpg