Python Penetration Testing: come controllo più server Linux da un unico dispositivo
R.Eric Kiser
Mi sforzo costantemente di semplificare i miei processi e ottimizzare l'efficienza. L'esecuzione di compiti banali e ripetitivi può diventare rapidamente noiosa e noiosa. Occasionalmente, i clienti richiedono valutazioni complete che richiedono uno sfruttamento approfondito e la raccolta di dati su vari sistemi. Sebbene stabilire un punto d'appoggio utilizzando strumenti come impacket sia in genere semplice, la raccolta manuale dei dati da più sistemi può richiedere molto tempo e non è interessante. Tuttavia, do la priorità a fornire risultati di alta qualità in conformità con le aspettative del cliente. In questo articolo, ti mostrerò come utilizzo Python e Ansible per gestire più server Linux e raccogliere dati sensibili da un'unica posizione.
Se non hai mai sentito parlare di Ansible, ti suggerisco di dargli un'occhiata più da vicino. Questo strumento di gestione Linux open source è semplice e intuitivo. Ansible utilizza playbook, che sono scritti nel linguaggio YAML, rendendoli molto leggibili e di facile comprensione.
Per prima cosa importeremo il modulo subprocess che consente di eseguire i comandi della shell dall'interno del nostro script Python.
import subprocess
subprocess.call(["sudo", "apt-get", "update"])
subprocess.call(["sudo", "apt-get", "install", "ansible"])
servers = input("Enter server names or IPs (comma separated): ").split(",")
filetype = input("Enter file type to search for: ")
command = f"ansible {' '.join(servers)} -m find -a 'path=/ recurse=yes patterns={filetype}'"
result = subprocess.check_output(command, shell=True)
save_to_file = input("Do you want to save the discovered files to a file location? (y/n) ")
if save_to_file == "y":
file_path = input("Enter file path to save the discovered files: ")
with open(file_path, "w") as f:
f.write(result.decode())
else:
print(result.decode())
import subprocess
# Install Ansible
subprocess.call(["sudo", "apt-get", "update"])
subprocess.call(["sudo", "apt-get", "install", "ansible"])
# Prompt for server names or IPs
servers = input("Enter server names or IPs (comma separated): ").split(",")
# Prompt for the file type to search for
filetype = input("Enter file type to search for: ")
# Run Ansible playbook to search for files on servers
command = f"ansible {' '.join(servers)} -m find -a 'path=/ recurse=yes patterns={filetype}'"
result = subprocess.check_output(command, shell=True)
# Prompt to save the discovered files to a file location
save_to_file = input("Do you want to save the discovered files to a file location? (y/n) ")
if save_to_file == "y":
# Prompt for file path to save the discovered files
file_path = input("Enter file path to save the discovered files: ")
with open(file_path, "w") as f:
f.write(result.decode())
else:
# Print the full path of the discovered files in the terminal
print(result.decode())

![Che cos'è un elenco collegato, comunque? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































