天天看點

記錄一次後滲透提權

前言~

提權,顧名思義就是提高自己在伺服器中的權限,當我們通過各種方法滲透進入一台伺服器的内部,往往我們能的到的權限是很低的,當我們得到一個低權限的shell時,就需要進行進一步操作,即提權。想要提權就需要進行資訊收集,如果不能清除的了解一個網站的完整架構,哪下一步就無法行動,是以我們需要了解這個shell的主機是做什麼的,我們擁有什麼樣的權限,面對的是怎樣一個系統等。通過一些簡單地資訊收集,可以對我們所面對的環境,作出詳細資訊評估,也能根據作業系統所存在的缺陷(漏洞)進行提權

就比如在windows中本身登入的使用者是guest(來賓使用者),然後我們可以通過提權後就變成超級管理者,擁有了管理Windows的所有權限(system)

實驗開始~

實驗場景:

通過某種方法,我得到了一個網站的背景,這時候後我就可以通過檔案上傳或者其它的手段把我們的webshell上傳至服務端,然後通過遠端工具(如蟻劍)去悄無聲息的操控受害者的伺服器

一.尋找上傳點

通過尋找,我找到了可以上傳一句話腳本的上傳點,而且通過wappalyzer 插件的回報資訊,可以确定此站的伺服器架構一個windows server 下的 iis web伺服器,而且使用的動态開發語言為asp

記錄一次後滲透提權

通過bat合并,得到了一個圖檔馬

Bat指令:

copy *.jpg /b + *.asp /a 1.jpg

先把這串代碼複制到記事本裡,然後把字尾名改為bat即可

記錄一次後滲透提權

二. 上傳一句話getshell

把制作好的圖檔馬上傳,然後蟻劍連結

記錄一次後滲透提權

連結失敗……

記錄一次後滲透提權

回憶了一下,可能因為伺服器上面并沒有檔案包含是以上傳的jpg圖檔馬檔案沒被解析,因為字尾是圖檔格式的,是以伺服器會當做一張圖檔去讀取,而不是代碼。

就如同把一個圖檔字尾改為TXT然後打開裡面的東西都會當文本讀取而不是圖檔,想到wappalyzer 插件資訊裡面寫了iis6.0的中間件,回想了下iis6.0的解析漏洞,記得上傳.cer檔案,iis6.0會解且執行。

Bp抓包改字尾

記錄一次後滲透提權

浏覽器檢視驗證

記錄一次後滲透提權

可以清楚看到圖檔被iis解析了

接着蟻劍連結shell

記錄一次後滲透提權

成功進來了,但是權限太低,隻能随便瞧瞧,連c盤都看不了,這樣可不行,但是以現在擁有的權限,還不足以打開c盤中的檔案,而C槽中的檔案往往都是比較重要的,是以,我需要提升自己的權限

三.提權

想了想,那麼怎麼提升我的權限呢?突然想到了指令行工具!沒錯,就是它,cmd指令行自帶了很多的系統指令,其中包括添加使用者/添加使用者組等等,這不正好合适嗎?添加一個新使用者身份,然後再把這個使用者添加到管理者組,再用在管理者組的這個使用者去登陸伺服器,這不就有權限了嗎

1.上傳cmd

網盤找了個cmd,接着再次打開蟻劍,上傳cmd

記錄一次後滲透提權

上傳成功後,順手修改一下時間和日志,稍微的處理一下痕迹…

右擊剛剛上傳的cmd然後選擇打開終端

記錄一次後滲透提權

….又失敗了,蟻劍有時候會出點bug, 換菜刀上

打開菜刀,連結遠端一句話,成功執行cmd指令,還是菜刀靠譜,但是現在隻是一個普通使用者身份,按道理來說是沒有權限建立使用者的,但是都到這一步了,不試試怎麼行

記錄一次後滲透提權

接着嘗試建立一個使用者并把它添加到管理者組去

這裡解釋一下Net User 的參數及作用

Net User
  作用:添加或更改使用者帳号或顯示使用者帳号資訊。
  指令格式:Net user [username [password | *] [options]] [/domain]
  有關參數說明:
  ·鍵入不帶參數的Net user檢視計算機上的使用者帳号清單
  ·username添加、删除、更改或檢視使用者帳号名
  ·password為使用者帳号配置設定或更改密碼
  ·提示輸入密碼
  ·/domain在計算機主域的主域控制器中執行操作。該參數僅在 Windows NT Server 域成員的 Windows NT Workstation 計算機上可用。預設情況下,Windows NT Server 計算機在主域控制器中執行操作。注意:在計算機主域的主域控制器發生該動作。它可能不是登入域。
  例如:Net user xhh檢視使用者xhh的資訊。
    例如利用CMD指令添加使用者與組
    
    Net   user   xhh    123    /add 
    函數   參數    使用者名  密碼    參數(添加)
    Net localgroup administrators 使用者名 /add
    函數  參數(對組進行操作) 目标組名  目标id  參數(添加)
           

指令行輸入:net user xhh 123 /add

記錄一次後滲透提權

果然,再次失敗,不急,調整好心态,再次百度查問題,度娘的答案是: 我們之是以能通過菜刀連結webshell并且在菜刀界面顯示目标伺服器的目錄,是因為asp動态語言通過wscript.shell 執行cmd指令去調用查詢到的系統權限,常理來說,我們是通過調用它的方式來進行執行cmd,但是,反彈shell 的權限會比普通shell要,而且socks運作空間層級更高 ,巴拉巴拉一大堆,歸根到底就一句話:權限不夠,要提權!!

但是如果要使用cmd,那得需要用到外部接口wscript.shell。但是wscript.shell仍然在C槽,而C槽以我的身份仍舊無法通路,這可咋辦?按照思路來說,那麼就隻能再上傳一個wscript.shell 的exp利用腳本了,每個程式運作的權限不同,這個exp通過取得wmiprvse.exe的system權限,執行我們的指令。

記錄一次後滲透提權

這裡解釋一下wscript.shell

Wshshell是一個對象,存放在windows系統中的wshom.ocx檔案中,可供在windows上運作的程式調用。他可對windows的外殼程式進行通路。(來自百度~~)

記錄一次後滲透提權

再次打開菜刀上傳wscript.shell 的exp,接着打開終端調用wscript.shell.exe輸入wscript.shell.exe “whoami” 檢視目前使用者,驗證是否成功提權

因為我們得到的是一個低權限的shell,執行不了高權限使用者的指令,是以需要調用wscript.shell.exe 來執行cmd指令 ,要用雙引号包含要執行的指令并且在要執行的指令前面加上wscript.shell.exe 來調用

記錄一次後滲透提權

程式回饋了很多資訊,這裡用幾個簡單的步驟解釋一下回饋的資訊

1.尋找目标程序(擁有系統權限)
2.進行程序注入
3.拿到程序的系統憑證
4.用它的憑證執行我們的指令
           

但從其中的 this exploit gives you a local system shell,從這段語句中不難看出它已經賦予我system(系統)的指令行權限,在windows中,system比管理者的權限還要高,管理者做的事,system能做,system能做的事情,管理者不一定能做,這和linux中的root有些差别

2.接着嘗試建立一個使用者

指令行輸入:wscript.shell.exe “net user xhh 123 /add” 建立一個使用者(xhh)并設定密碼為123

接着用net user xhh指令檢視了xhh使用者的資訊,發現它現在隻是普通使用者,緊接着再把它添加到管理者組變成管理者使用者

記錄一次後滲透提權

3.建立使用者添加到管理者組

指令行輸入:

wscript.shell.exe "net localgroup Administrators xhh /add"調用wscript.shell.exe把xhh使用者添加到管理者使用者組裡

net user xhh 檢視目前的使用者組

記錄一次後滲透提權

成功提權為管理者使用者,接着檢視伺服器是否開啟遠端桌面連接配接,友善我們再次光臨

4.遠端連接配接

指令行輸入:tasklist -svc 檢視伺服器所開啟的服務

記錄一次後滲透提權

發現伺服器開啟了termservice(遠端桌面服務)而且該服務pid是2460,知道pid就好辦了,接着指令行輸入netstat -ano | findstr 2460來檢視pid相對應的端口

記錄一次後滲透提權

可以看出Pid為2460對應的端口号是3389,也就是說遠端桌面服務的端口号是3389,并且它正處于監聽狀态,随時都可以通過遠端桌面連接配接上去

win + r 輸入mstsc打開遠端桌面,然後輸入之前建立的使用者名和密碼

記錄一次後滲透提權

成功連接配接,這時候終于進到伺服器裡來了,cmd看一下目前使用者,然後再久違的去c盤瞧瞧

記錄一次後滲透提權

毫無阻攔,到此,借用上傳的wscript.shell.exe和cmd成功從一個低權限使用者成功提升至管理者,實驗成功結束

小結~

學習并做了一段時間的網絡滲透,給我直覺的感受就是思路問題和耐心,滲透不像技術研究,隻需要對一個點進行研究,滲透涉及的方面太多太多,遇到問題後不能從單方面找問題,而是要從多個方面思考,看出其中的錯誤之處,然後再想考為什麼會錯誤,看問題到底出在哪裡,然後思考的滲透思路,隻要思路正确,有足夠有耐心,總會有所突破。

繼續閱讀