我們使用一個開源的cms來分析,java sql注入問題適合使用反推,先搜索xml查找可能存在注入的漏洞點-->反推到DAO-->再到實現(xiàn)類-->再通過調(diào)用鏈找到前臺URL,找到利用點,話不多說走起1、idea導(dǎo)入項目Idea首頁 點擊Get from Version Control,輸入https://gitee.com/mingSoft/MCMS.git下載完成,等待maven把項目下載完成!small2、搜索$關(guān)鍵字Ctrl+shift+F 調(diào)出Find in Path,篩選后綴xml,搜索$關(guān)鍵字根據(jù)文件名帶Dao的xml為我們需要的,以IContentDao.xml為例,雙擊打開,ctrl +F 搜索$,查找到16個前三個為數(shù)據(jù)庫選擇,跳過,繼續(xù)往下看到疑似order by 暫時擱置繼續(xù)往下看發(fā)現(xiàn)多個普通拼接,此點更容易利用,我們以此為例深入,只查找ids從前端哪里傳入3、搜索映射對象Mybatis 的select id對應(yīng)要映射的對象名,我們以getSearchCount為關(guān)鍵字搜索映射的對象搜到了IContentDao.java,IContentDaoimpl.java和McmsAction.java,分別對應(yīng)映射的對象,對象的實現(xiàn)類和前端controler,直接跳轉(zhuǎn)到controler類發(fā)現(xiàn)只有categoryIds與目標(biāo)參數(shù)ids相似,需進一步確認,返回到IContentDao.java按照標(biāo)準(zhǔn)流繼續(xù)反推找到ids為getSearchCount的最后一個參數(shù),alt+f7查看調(diào)用鏈調(diào)轉(zhuǎn)到ContentBizImpl,確認前臺參數(shù)為categoryIds返回到McmsAction,參數(shù)由BasicUtil.getString接收,跟進BasicUtil.getString繼續(xù)跳到SpringUtil.getRequest(),前端未做處理,sql注入實錘4、漏洞確認項目運行起來,構(gòu)造sql語句