微信小程式漏洞:可下載任意微信小遊戲原始碼
本文轉載自【小專欄平臺】公眾號,由獨立開發者朱鵬飛投稿。如果大家想要微信跳一跳小遊戲以及其他十幾個小遊戲原始碼,大家可以關注【小專欄平臺】公眾號,回覆“微信小遊戲”即可獲取到。
截止原作者目前推送文章的時候( 2018年1月1日23:50分 ),微信官方已經修復了這個漏洞,但是我感覺文章還是可以分享出來給諸位開發者,安全問題真的不容忽視呢。
另外說兩點:
1、據說有些老版本的微信還是可以抓包獲取包地址;
2、如果你喜歡小程式並且是小程式的開發者,可以關注我的github資源:https://github.com/justjavac/awesome-wechat-weapp 點選文章末尾的閱讀原文
一、發現
一大早起來刷 V2EX,看到一個帖子《微信跳一跳 可以直接更改分數, POST 請求沒有校驗…》 https://www.v2ex.com/t/419056 好奇點進去看了。
發現不但跳一跳小遊戲可以直接改分數,甚至連微信小程式、小遊戲的原始碼都可以直接下載,只需要知道 appid 和 版本號,就可以直接構造 URL 下載字尾為 wxapkg 的原始碼包,不需要任何驗證。
雖然下載來的原始碼包是加密的,但是解密方法已經被 V2EXer 發現,並且寫了一個解密的 Python 指令碼,執行即可把原始碼包解開為資料夾。
二、重現
第一步,我先試著用帖子作者拼接好的跳一跳原始碼包地址測試,發現能夠下載,不需要任何驗證,只需要知道這個地址,直接任意瀏覽器或者下載工具開啟都可以下載。
第二步,再用帖子中的解包 Python 指令碼把原始碼包解壓成原始碼。
第三步,在本地微信開發者工具中新建一個空白的小程式或小遊戲的專案,不要選擇快速啟動模板。
第四步、把剛才解壓出來的原始碼複製到剛剛建立的專案目錄中,開發者工具會提示編譯出錯,這個只需要新建一個game.json檔案即可。
檔案內容不能為空,寫一對大括號進去,或者加上deviceOrientation的配置,這句話的意思是遊戲豎屏玩。
儲存後你發現遊戲還是編譯不通過,還需要修改最後一項,點選開發者工具右上角詳情按鈕,把除錯基礎庫改成game。
好了,執行起來了:
如果有同學對微信官方的小遊戲原始碼感興趣,想要研究學習,那麼可以在本微信公眾號回覆“微信小遊戲”,在確保不違法情況下,我可以發給你用於研究學習。