-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathfilesDetection.py
More file actions
80 lines (66 loc) · 2.84 KB
/
filesDetection.py
File metadata and controls
80 lines (66 loc) · 2.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#encoding: utf8
import requests
import argparse
import re #librería para manejo de regex
#robots.txt le dice a los bots de los motores de busqueda a que directorios no pueden acceder
#phpinfo.php contiene informacion del sistema, versiones de sistema, mysql, php... rutas del servidor
def robotsDetection(url):
fileName = "/robots.txt"
try:
connection = requests.get(url= url+fileName) #conectarse a la url por metodo get
except:
print("No se pudo conectar a la url")
return False
if connection.status_code == 200: #codigo 200 quiere decir conexion satisfactoria
print("Archivo {} encontrado!".format(fileName))
lines = connection.text.split("\n")
return lines
else:
print("No se encontro el archivo {}".format(fileName))
def phpinfoDetection(url):
fileName = "/phpinfo.php"
try:
connection = requests.get(url= url+fileName) #conectarse a la url por metodo get
except:
print("No se pudo conectar a la url")
return False
if connection.status_code == 200: #codigo 200 quiere decir conexion satisfactoria
print("Archivo {} encontrado!".format(fileName))
regexPhp = '(<tr class="h"><td>\n|alt="PHP Logo" /></a>)<h1 class="p">(.*?)</h1>'
regexSystem = 'System </td><td class="v">(.*?)</td></tr>'
responseBody = connection.text
findPhp = re.search(regexPhp, responseBody)
findSystem = re.search(regexSystem, responseBody)
systemInformation = list()
if findPhp:
systemInformation.append(findPhp.group(2)) #El 2 hace referencia a el segundo valor capturado en l regexPhp
else:
print("No se pudo detectar la versión de PHP")
if findSystem:
systemInformation.append(findSystem.group(1))
else:
print("No se pudo detectar la versión del sistema")
return systemInformation
else:
print("No se pudo encontrar el archivo {}".format(fileName))
return False
def main():
parser = argparse.ArgumentParser(description= "Script para detectar archivos sensibles")
parser.add_argument(
"-u", "--url", dest="website_url", help="Especifica la URL completa", required=True
)
arguments = parser.parse_args()
if arguments.website_url:
robotsResponse = robotsDetection(arguments.website_url)
if robotsResponse: #Si la lista tiene contenido retorna True
for line in robotsResponse:
if line.startswith("Disallow:"):
print(line)
phpRespose = phpinfoDetection(arguments.website_url)
if phpRespose:
print("Version de PHP : {}".format(phpRespose[0]))
print("Version del sistema : {}".format(phpRespose[1]))
else:
print("No hay url a la cual conectarse")
if __name__ == '__main__':
main()