python pty & magic | 加固shell
有时候我觉得我是幸福的,因为每一步都有前辈踩过了,所以走得相对轻松
朋友们,我们的冒险要到下一个阶段了:加固shell!
我们看一下nc 反弹的 shell
使用 python 的 pty 来转换为 交互式shell
python3 -c 'import pty; pty.spawn("/bin/bash")'
也可以使用
python3 -c "__import__('subprocess').call(['/bin/bash'])"
可以看到su这种交互式命令已经可以执行了,我们尝试一下代码补全
看来代码补全还是不行,查了资料,可以使用 stty 来进行优化,将哑 shell 转换为全能shell
在 python3 -c 'import pty; pty.spawn("/bin/bash")' 后的shell中输入 Ctrl+z
Linux 中Ctrl + c/d/z 看着都差不多,但是还是有不一样的含义
Ctrl + c 强制中断程序的执行,进程终止
Ctrl + d 发送EOF信号,很多程序接到这个信号后会停止
Ctrl + z 将任务中止,其实就是将这个任务暂停
可以看到,nc反弹的shell放入了后台,界面退回到了攻击主机原本的shell
echo $TERM
获取 term值stty -a
获取 rows 和 columns 的值
stty raw -echo
关闭输入回显fg
进入前台,就是把刚才中止的nc连接捡回来
reset
export SHELL=bash
export TERM=xterm-256color
stty rows 24 columns 80
还是不支持代码补全,感觉被骗了
我觉得是我用 os x 系统的事情,所以我特意去 Kali 下面试了试,是可以支持代码补全的,这里就不放图了,因为我绕过这个问题了
在执行 nc -l 5555 之前,我们先输入 bash, 进入 bash 再进行监听,使整个过程都在 bash 下
可以看到这次可以代码补全了,看看其他功能怎么样,我们输入 Ctrl + c
可以看到, Ctrl + c 已经不能关闭我们的shell了,看看上下按钮可不可以调出来历史命令
上下键可以使用,命令行颜色也可以正常显示,很好!
所以最开始不能代码补全是因为我把os x 的shell 改成了 fish shell,大家如果使用了一些特殊shell不能完成代码补全等功能可以像我上面这样操作。
具体操作如上
往期文章