前言~
提權,顧名思義就是提高自己在伺服器中的權限,當我們通過各種方法滲透進入一台伺服器的内部,往往我們能的到的權限是很低的,當我們得到一個低權限的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成功從一個低權限使用者成功提升至管理者,實驗成功結束
小結~
學習并做了一段時間的網絡滲透,給我直覺的感受就是思路問題和耐心,滲透不像技術研究,隻需要對一個點進行研究,滲透涉及的方面太多太多,遇到問題後不能從單方面找問題,而是要從多個方面思考,看出其中的錯誤之處,然後再想考為什麼會錯誤,看問題到底出在哪裡,然後思考的滲透思路,隻要思路正确,有足夠有耐心,總會有所突破。