一 代碼執行漏洞
在后台模板處修改任意模板添加php代碼即可執行。
youdiancms8.0\App\Core\Lib\Template\ThinkTemplate.class.php
97行,其使用include包含了模板文件
證明:
在后台模板管理處寫入phpinfo
2 刷新首頁,phpinfo執行了
二 XXE漏洞
后台模板管理處存在XXE漏洞,包括電腦模板管理,手機模板管理兩處
寫入
點擊設置會觸發XXE
接收到了請求
代碼審計:
1 /App/Lib/Action/Admin/TemplateAction.class.php:68
當攻擊者通過/index.php/Admin/template/Modify?file=/config.xml頁面修改xml文件后,通過此模塊功能進行保存,可以看到其對文件名進行驗證,對內容進行相關解碼但並未進行任何惡意代碼的過濾,使得攻擊者的惡意代碼可以順利保存。
2 /App/Lib/Action/Admin/TemplateAction.class.php:307
此為xxe漏洞的觸發頁面,當上述惡意代碼寫入config.xml並保存后通過此功能進行觸發。可以看到,代碼判斷config.xml文件存在時,實例一個YdTemplateConfig()對象,並調用getAttribute方法
三 文件上傳漏洞
CMS會在后台處設置允許上傳文件的格式白名單,且在代碼中有一串黑名單,當上傳文件時會對后綴驗證是否處在此黑名單。但是由於白名單可認為控制添加,黑名單存在繞過,所以出現了此漏洞
添加pht或phtml格式
任意上傳點都行
返回包中顯示了文件路徑
連接即可
代碼審計:
App/Lib/Action/BaseAction.class.php
可以看到作者添加了很多黑名單后綴,但是pht 和phtml未在其中,且可以執行php代碼。
四 任意文件上傳
CMS存在模板壓縮包上傳功能,但是未能對其中文件數量和內容進行控制,所以在壓縮包中添加任意文件即可
此為我添加在壓縮包中的后門文件
代碼審計:
App/Lib/Action/AdminBaseAction.class.php
代碼只對壓縮包進行了重名驗證,有效驗證,無任何安全性處理,所以存在此漏洞。