Леший Posted May 12, 2010 Report Share Posted May 12, 2010 (edited) Iepriekšējais koderis ir uzlicis MySQL root paroli un, protams, to paroli nav pierakstījis. DB var ienākt ar lietotaju, kuram ir praktiski visas permīcijas, tas ir, pašu root paroles hešu dabūt izdevās. Pameklēju tūļus recoverošanai - neatradu. Uzrakstīju pats, bet ir samērā lēns. Ja atļautie simboli ir a-z0-9 un paroles garums ir 5 simboli, tad parole tiek meklēta vidēji 3 minūtes. Protams, ar garāku paroli, un ja vēl pielikt klāt A-Z, būs vēl ilgāk. Līdz ar to lūgums: palīdziet ar optimizāciju. <? function pass($in) { $p=sha1($in,true); $p=sha1($p); return "*".strtoupper($p); } function checkPass($depth = 0, $pass = ''){ global $letters; global $char; global $hash41; global $symbolCount; if ($depth == $letters){ if (pass($pass) == $hash41) { die("FOUND: ".$pass); } return; } if (!isset($offset)){ $offset = 0; } while ($offset < $symbolCount) { $pass = substr($pass, 0, $depth).$char[$depth][$offset]; checkPass($depth+1, substr($pass, 0, $depth+1)); $offset++; } } $letters = 5; $char = array(); $hash41 = '*00A51F3F48415C7D4E8908980D443C29C69B60C9'; #hash parolei 12345 for ($i = 0; $i < $letters; $i++){ $char[$i] = array_merge(range('a', 'z'), /*range('A', 'Z'),*/ range(0,9)); shuffle($char[$i]); } $symbolCount = count($char[0]); checkPass(); ?> EDIT: Samainīt paroli, protams, var, bet šajā gadījumā tieši ir jāatjauno. Edited May 12, 2010 by Леший Quote Link to comment Share on other sites More sharing options...
Pentiums Posted May 12, 2010 Report Share Posted May 12, 2010 mm. kāpēc šajā gadījumā jāatjauno? :> Quote Link to comment Share on other sites More sharing options...
php newbie Posted May 12, 2010 Report Share Posted May 12, 2010 nezinu kā tajā mysql lietas darās, bet nu man liekas ka jābūt kkadam salt. Nevar tak vienkārši sha1(pass) glabāt. Neizskatās ka vispār varēs to atgūt Quote Link to comment Share on other sites More sharing options...
Леший Posted May 12, 2010 Author Report Share Posted May 12, 2010 Tāpēc, ka te praktiski nekas nav dokumentēts, un velns viņu zin, kas izmanto DB. Te ir ne tikai webi. Quote Link to comment Share on other sites More sharing options...
Леший Posted May 12, 2010 Author Report Share Posted May 12, 2010 php newbie, pārbaudīju, izveidoju test user ar paroli 12345, paņēmu hash no mysql.user tabulas (bija tāds pats, kā SELECT PASSWORD('12345')). Mans kods to ir atkodis, bet gaidīju vidēji 3 minutes, testēju 5 reizes. Quote Link to comment Share on other sites More sharing options...
php newbie Posted May 12, 2010 Report Share Posted May 12, 2010 (edited) dīvaini ka tik vienkārši glabā bez salt, bet nu labi varbūt ir vērts mēģināt kaut kādas password bibliotēkas vari iepostot http://forum.antichat.ru/forum76.html bet rēķinies ar to ka to paroli visi zanās un tā būs viņu db) un tur arī ir password vardīcas Edited May 12, 2010 by php newbie Quote Link to comment Share on other sites More sharing options...
ohmygod Posted May 12, 2010 Report Share Posted May 12, 2010 (edited) Amm, neder variants vienkārši nomainīt mysql root pswd? Kāda OS? Ja iepriekšējais koderis nav bijis dikti glups - root pswd nekam citam nevajadzētu lietot un uz linuksīgām OS to nomainīt ir vairāk kā elementāri. Protams, lietotājam, ar attiecīgām permīcijām. btw - ja jau dabūji root pswd hashu - varbūt vari to arī nomainīt? Uzveidot jaunu... Tas būtu vēl vienkāršāk kā startēt mysql bez permisijām, mainīt pswd un tad atkal startēt ar visām permisijām. Edited May 12, 2010 by ohmygod Quote Link to comment Share on other sites More sharing options...
fest Posted May 12, 2010 Report Share Posted May 12, 2010 (edited) Kad man vajadzēja kaut ko līdzīgu (nu ok, tas bija pārbaudījums sev), atradu netā gatavu kodu, ko nedaudz pielāgoju: http://faili.wot.lv/tmp/cracker.py Princips tāds pats kā tavam algoritmam, taču var saspawnot vairākus thread'us, katru savam garumam vai simbolu kopai. 8 simbolu a-z paroli piemeklēja ~1-2 dienas, ar vienu thread'u. Ja vajag nesāpīgi, skaties uz John the ripper- http://www.openwall.com/john/doc/ tam AFAIK pat bija MySQL hashu algoritms iebūvēts. Es gan provētu skatīties (kaut vai ar wireshark'u), kas pie datubāzes slēdzas klāt (pieņemot, ka slēdzas caur tcp/ip), un meklēt kaut kur tur paroli. Edited May 12, 2010 by fest Quote Link to comment Share on other sites More sharing options...
Klez Posted May 12, 2010 Report Share Posted May 12, 2010 iesaku papētīt password.c failu no mysql sourcēm ... /* MySQL 4.1.1 password hashing: SHA conversion (see RFC 2289, 3174) twice applied to the password string, and then produced octet sequence is converted to hex string. The result of this function is used as return value from PASSWORD() and is stored in the database. SYNOPSIS my_make_scrambled_password() buf OUT buffer of size 2*SHA1_HASH_SIZE + 2 to store hex string password IN password string pass_len IN length of password string */ void my_make_scrambled_password(char *to, const char *password, size_t pass_len) { SHA1_CONTEXT sha1_context; uint8 hash_stage2[sHA1_HASH_SIZE]; mysql_sha1_reset(&sha1_context); /* stage 1: hash password */ mysql_sha1_input(&sha1_context, (uint8 *) password, (uint) pass_len); mysql_sha1_result(&sha1_context, (uint8 *) to); /* stage 2: hash stage1 output */ mysql_sha1_reset(&sha1_context); mysql_sha1_input(&sha1_context, (uint8 *) to, SHA1_HASH_SIZE); /* separate buffer is used to pass 'to' in octet2hex */ mysql_sha1_result(&sha1_context, hash_stage2); /* convert hash_stage2 to hex string */ *to++= PVERSION41_CHAR; octet2hex(to, (const char*) hash_stage2, SHA1_HASH_SIZE); } saprotams ka lai viņu atkodētu ir jāveic pretējais šim te ... Quote Link to comment Share on other sites More sharing options...
Леший Posted May 12, 2010 Author Report Share Posted May 12, 2010 Nu saparalelizēju nedaudz, palaižot 4 procesus, jo viena httpd instance neredz vairākus kodolus. Ap 17 bija izprovēta puse no 6 simbolu kombinācijam. Simboli pašlaik ir a-zA-Z0-9 un "_". Nedaudz pilnveidoju, lai inkrementē $letters, kad ir izprovētās visas variācijas ar noteikto simbolu skaitu. Paralelizēju, aprobežojot un sadalot variantus priekš 1. un 2. simbola. Rīt ziņošu par rezultātiem. Quote Link to comment Share on other sites More sharing options...
Klez Posted May 13, 2010 Report Share Posted May 13, 2010 a kapēc php nelaid no konsoles ? Quote Link to comment Share on other sites More sharing options...
Kaklz Posted May 13, 2010 Report Share Posted May 13, 2010 Atkārtošu jau uzdotu jautājumu, kāpēc tu gribi uzlauzt, nevis vienkārši reseto paroli ar mysql līdzekļiem? ( http://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html ) Quote Link to comment Share on other sites More sharing options...
Леший Posted May 13, 2010 Author Report Share Posted May 13, 2010 Kaklz, rakstīju augstāk. Klez, tiesi no konsoles arī tika laists. Quote Link to comment Share on other sites More sharing options...
Klez Posted May 13, 2010 Report Share Posted May 13, 2010 tad kāds te vēl sakars ar httpd ?????? Quote Link to comment Share on other sites More sharing options...
Леший Posted May 13, 2010 Author Report Share Posted May 13, 2010 Sajaucu, ne httpd, bet php. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.