代碼審計之雲EC電商系統 v1.2

0x00 cms簡介

雲EC電商系統是由一套基於PHP+MYSQL開源的、免費的電商系統軟件。支付整合了支付寶三端支付(PC、手機、APP),微信三端支付(PC掃碼、微信公眾號、APP),銀聯支付。

模塊化設計,可方便快捷的接入其它第三方功能。

支持阿里短信、騰訊短信、創藍短信等多個接口

物流查詢,批量打印快遞單和發貨單,運費計算設置

銷售統計、排行榜、會員統計等

擁有限時搶購(秒殺)、分銷、優惠券和拼團等豐富的營銷工具

Cms官網地址:https://www.yunec.cn/

Demo地址:http://demo.yunec.cn/

代碼下載地址:http://down.chinaz.com/soft/38561.htm

0x01 代碼審計

①前臺無限制sql注入漏洞

漏洞代碼位於inc/module/news.php第42行

代碼審計之雲EC電商系統 v1.2

這裡存在漏洞的參數為pageid

這裡13行有一處sql語句,但是這裡的sql語句會經過轉義,因此這裡不存在漏洞

41行cids參數是由pageid參數加上child_ids參數拼接而成,然後cids參數進入到42行的get_news_count函數

代碼審計之雲EC電商系統 v1.2

這裡可以看到cids參數在in語句裡面,沒有任何的單引號包裹,因此這裡存在注入漏洞

這裡where參數也是直接拼接,因此判定這裡的cids參數為直接拼接

這裡直接拿官網demo驗證

代碼審計之雲EC電商系統 v1.2

可以看到數據庫用戶名為yec_demo

②前臺用戶收藏商品處sql注入漏洞

這裡共有兩處sql注入,不過是同一個參數,先來分析第一個漏洞

漏洞代碼位於inc/module/user.php第473行開始

代碼審計之雲EC電商系統 v1.2

這裡可以看到gid參數我們可控,並且沒有做intval處理,然後進行foreach循環查詢

其中的值傳給$v這個參數,在第495行中帶入進get_fav參數,跟進!

代碼審計之雲EC電商系統 v1.2

這裡$v參數對應的為$goods_id參數,但是我們看到在584行這裡的goods_id參數為直接拼接,也就造成了最終的sql注入漏洞

$where語句在590行裡也是直接拼接,並沒有做任何處理,因此這裡存在sql注入漏洞

第二處漏洞代碼位於inc/module/cart.php第180行

代碼審計之雲EC電商系統 v1.2

這裡同樣是gid參數傳值給gid_list,然後最終利用foreach遍歷取值到$v當中

在208行可以看到$v參數也是直接進行了拼接,導致了最終的sql注入漏洞!

這裡直接拿官網demo驗證

第一處漏洞

代碼審計之雲EC電商系統 v1.2

可以看到數據庫用戶名為yec_demo

③訂單處存儲型xss漏洞

漏洞代碼位於inc/module/order.php第137行

代碼審計之雲EC電商系統 v1.2

這裡發票的參數為invoice_title和invoice_con

這裡前面是發票抬頭,後一個是發票內容

這裡沒有進行實體化操作,然後我們跟進這兩個參數的傳遞過程

代碼審計之雲EC電商系統 v1.2

這裡可以看到直接賦值給了data裡參數

代碼審計之雲EC電商系統 v1.2

然後可以看到這裡的data直接insert進了數據庫,從頭到尾發票的兩個參數都沒有進行實體化處理,因此判定存在存儲型xss漏洞

這裡直接拿官網demo驗證

這裡模擬購物流程,然後抓包修改發票參數

代碼審計之雲EC電商系統 v1.2

這裡的發票參數出現了問題

代碼審計之雲EC電商系統 v1.2

這裡的invoice_title和invoice_con參數存在xss漏洞

然後我們使用管理員賬號查看訂單信息

代碼審計之雲EC電商系統 v1.2

可以看到這裡的確存在存儲型xss漏洞

④訂單評論處sql注入漏洞

這裡漏洞代碼位於inc/module/comment.php第7行開始

代碼審計之雲EC電商系統 v1.2

這裡itemid參數可以看到沒有任何過濾,然後跟蹤這個參數

代碼審計之雲EC電商系統 v1.2

這裡重要研究item_id參數,46行利用foreach循環遍歷

這裡看54行有一個sql語句,這裡$item_id[$k],$k為鍵值,因此這個$item_id[$k]即為$item_id的值

代碼審計之雲EC電商系統 v1.2

可以看到這裡的sql語句是雙引號進行包裹,因此存在sql注入漏洞

這裡可以看到sql語句為直接拼接,因此也就驗證了此處存在sql注入漏洞

⑤用戶訂單評論處sql注入漏洞

漏洞代碼位於inc/module/user.php第118行

代碼審計之雲EC電商系統 v1.2

這裡是用戶評論的功能,首先我們需要輸入pid和content參數,即為對應的訂單id和評價內容,這裡由於沒有先對訂單進行查詢,因此這裡隨便輸入訂單id即可

接下來檢查用戶是否登錄,這個前臺是開放註冊的,因此沒有任何限制

接下里進入到118行的漏洞代碼,這裡功能是檢查用戶是否評論過於頻繁,我們跟進這個check_comment_reply函數

代碼審計之雲EC電商系統 v1.2

這裡重點關注ip參數,在807行這裡ip參數是由單引號包裹,並且這個cms是有全局過濾的

代碼審計之雲EC電商系統 v1.2

但是全局過濾是針對GET、POST、COOKIE類型,但是跟進我們的getip參數

代碼審計之雲EC電商系統 v1.2

可以看到可以由X-Forwarded-For獲取,也就是說不受全局過濾的影響,可以直接引入單引號,並且沒有數字類型的限制,因此可以插入任意sql語句

這裡直接拿官網demo驗證

代碼審計之雲EC電商系統 v1.2

可以看到數據庫用戶名為yec_demo

0x02 總結

後臺getshell方法是用文件包含的形式,做法就是先上傳一個jpg文件,jpg文件裡寫進php的webshell,然後在後臺尋找require或者include的功能,然後包含進文件即可,這裡當時怎麼找都沒找到,,具體方法在水泡泡師傅的博客裡(https://www.cnblogs.com/r00tuser/p/9014869.html)

這個cms整體使用了360webscan,但是不知怎麼,,這個過濾腳本沒有起到一丁點作用。。實在是迷。。

在沒有360webscan的保護下,尋找漏洞還是非常輕鬆的。。sql注入的話就是直接拼接,或者像order by後面的參數或者in語句裡面的參數,往往這裡在除去常見的漏洞點之後也會出現非常多的問題~

至於其他漏洞,這個就看功能函數具體怎麼寫的,需要再根據可控的條件數和函數提供的功能來組合判斷!

總的來說,,這套cms比較適合一些已經入門的人來審計,,漏洞也不是那麼顯而易見,,但是又不會很難。。

上述如有不當之處,敬請指正~


分享到:


相關文章: