python pty & magic | 加固shell

时间:2022-07-23
本文章向大家介绍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不能完成代码补全等功能可以像我上面这样操作。

具体操作如上