Guessaguid.net er blevet hacket…hvordan er det blevet gjort ?

Published 25 March 09 11:33 AM

Jeg fik en besked på Messenger igår eftermiddags, en besked af en Jakob Andersen hvor han, flink som han er, meget sødt fortæller mig at han har lavet et angreb på mit elskede projekt Guessaguid.net! Og ikke nok med det, så sender han mig sørme også koden der muliggjorde angrebet.

Jeg var lammet, chokeret, grædefærdig og meget ked af det! Men så gik det op for mig, at jeg havde været heldig og jeg stadig havde mulighed for at rette op på fejlen (det har jeg dog ikke gjort endnu).

Men jeg synes alligevel jeg vil dele Jakobs kode med jer, for selvom det ikke er alverden, så viser det hvor pokkers nemt det er at lave et bruteforce angreb på et site – især hvis sitet udelukkede bliver brugt af udviklere. Dooooh!!!

class Program
    {
        static void Main(string[] args)
        {
            FileStream fs = File.Create("c:\\testdata\\guids.csv");
            StreamWriter sw = new StreamWriter(fs);
            for (int i = 1000; i < 2000; i++)
            {
                Guid g = Guid.NewGuid();
                string RightCharsRegEx = "color:Lime;\">\\s*([0-9]*)</span>";
                WebClient wc = new WebClient();
                wc.Encoding = Encoding.ASCII;
                var values = new System.Collections.Specialized.NameValueCollection();
                values.Add("field1", "guessaguid" + i + "@mailinator.com");
                values.Add("field2", "2"); //Konkurrence identifier
                values.Add("field3", g.ToString());
                byte[] ret = wc.UploadValues("http://guessaguid.net/Home/Index", "POST", values);
                string response = Encoding.UTF8.GetString(ret);
                var regex = new Regex(RightCharsRegEx, RegexOptions.Multiline);
                Match m = regex.Match(response);
                if (m.Success){
                    string correct = m.Groups[1].Captures[0].Value;
                    sw.WriteLine(correct + " " + g);
                    sw.Flush();
                }else{
                    Console.WriteLine("Error getting num chars!");
                }
            }
            sw.Close();
            fs.Close();
        }
    }

 

hacker

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

# infoblog &raquo; Guessaguid.net er blevet hacket???hvordan er det blevet gjort ? said on March 25, 2009 6:47 AM:

PingBack from http://blog.a-foton.ru/index.php/2009/03/25/guessaguidnet-er-blevet-hacket%e2%80%a6hvordan-er-det-blevet-gjort/

# infoblog &raquo; Guessaguid.net er blevet hacket???hvordan er det blevet gjort ? said on March 25, 2009 6:47 AM:

PingBack from http://blog.a-foton.ru/index.php/2009/03/25/guessaguidnet-er-blevet-hacket%e2%80%a6hvordan-er-det-blevet-gjort/

# Jakob Andersen said on March 25, 2009 7:38 AM:

Det må være straf nok at du poster min grimme kode her ;-) Den glimrer jo ved mangel på brug af f.eks. using og seperation of concern :-)

# Brian said on March 25, 2009 7:46 AM:

Er det ikke lidt af en tilsnigelse at sige, at sitet er blevet hacket? Jakob illustrerer jo blot, at man kan automatisere brugen af dit site.

# Emil said on March 25, 2009 11:45 AM:

Ja jeg sad og troede at han havde kommet ind og rettet i din kode...

# Rasmus Kromann-Larsen said on March 25, 2009 5:36 PM:

Haha, det har jeg godt nok også overvejet en del gange siden jeg så at man fik at vide hvor mange rigtige chars man fik. Smart "brute force" kræver kun 36 * 16 guids for at finde det rigtige i praksis hvis man forsøger et tegn af gangen.. :-) Kudos Jakob ;-)

# Jesper Jensen said on April 29, 2009 5:35 PM:

@Rasmus 36^16 hvilket er væsentligt flere mulige valg.

Hvis du vil gætte 'smart', kunne du prøve med Marc's generiske algoritme: http://www.improve.dk/blog/2009/04/29/implementing-a-simple-genetic-algorithm

Leave a Comment

(required) 
(optional)
(required) 

  
Enter Code Here: Required

This Blog

Syndication

Page view tracker