反弹shell转为完全交互式shell

本文最后更新于:几秒前

总结

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
echo $TERM

stty -a

python3 -c 'import pty; pty.spawn("/bin/bash")'

ctrl + z挂起

stty raw -echo

fg

reset

export SHELL=bash && export TERM=xterm && stty rows 57 columns 248

在渗透测试亦或者是ctf竞赛的过程中,时常遇到反弹shell后,一些反直觉情况

比如按↑来回溯上一个命令,终端会显示^[[A,删除会变成^H,即使功能还是正常的,但是这样看起来也是十分难受,并且使用vi/vim时也会出现奇奇怪怪的warning,即使凭借肌肉记忆来说还是能正常修改。最令人难以忍受的是按下ctrl+c直接就退出交互了

其根本原因在于创建的反向shell没有分配伪终端PTY,导致某些终端特性无法正常工作

接收端执行echo $TERM以及stty -a收集当前终端的信息

回到我们的反向shell

目标靶机存在python环境

使用python逃逸pty

1
python3 -c 'import pty; pty.spawn("/bin/bash")'

按下ctrl+z挂起

随后输入stty raw -echo令终端进入原始模式,-echo意味着回显关闭,之后的任何输入都不会出现在控制台上,是为了防止前文提到的一些特殊操作导致特殊字符在终端的显示

随后输入fg将挂起的进程调回

输入reset刷新终端

按照最开始收集的攻击机tty信息,设置

1
export SHELL=bash && export TERM=xterm && stty rows 57 columns 248