Exemplo n.º 1
0
        private string DoAttack(Form form, string attackContent)
        {
            try
            {
                SimpleXssAttackAnnounceItem announceItem = new SimpleXssAttackAnnounceItem(_xAttack, SimpleXssAttackStatus.AttackStarted, _sharedResource, "", DateTime.Now);
                OnAgentAttackAnnounced(announceItem);

                HttpWebRequest request = null;

                if (form.Method == "get")
                {
                    request = WebRequest.Create(form.Action + attackContent) as HttpWebRequest;
                }
                else
                {
                    request = WebRequest.Create(form.Action) as HttpWebRequest;
                }

                request.Timeout           = 100000;
                request.UserAgent         = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)";
                request.AllowAutoRedirect = true;
                request.KeepAlive         = false;

                if (form.Method == "post")
                {
                    request.ContentType = "";
                    byte[] data = Encoding.UTF8.GetBytes(attackContent);
                    request.ContentLength = data.Length;

                    using (Stream stream = request.GetRequestStream())
                    {
                        stream.Write(data, 0, data.Length);
                    }
                }

                using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
                {
                    if (
                        (response.StatusCode != HttpStatusCode.NotFound ||
                         response.StatusCode != HttpStatusCode.BadGateway ||
                         response.StatusCode != HttpStatusCode.BadRequest ||
                         response.StatusCode != HttpStatusCode.Forbidden ||
                         response.StatusCode != HttpStatusCode.GatewayTimeout ||
                         response.StatusCode != HttpStatusCode.Gone ||
                         response.StatusCode != HttpStatusCode.InternalServerError ||
                         response.StatusCode != HttpStatusCode.NotAcceptable) &&
                        (response.ContentType.Contains("text/html"))
                        )
                    {
                        using (StreamReader sr = new StreamReader(response.GetResponseStream()))
                        {
                            string resp = sr.ReadToEnd();

                            _sharedResource.IncrementAttacks();
                            announceItem = new SimpleXssAttackAnnounceItem(_xAttack, SimpleXssAttackStatus.AttackFinished, _sharedResource, "", DateTime.Now);
                            OnAgentAttackAnnounced(announceItem);

                            return(resp);
                        }
                    }
                    else
                    {
                        announceItem = new SimpleXssAttackAnnounceItem(_xAttack, SimpleXssAttackStatus.AttackHalted, _sharedResource, "", DateTime.Now);
                        OnAgentAttackAnnounced(announceItem);
                        return(null);
                    }
                }
            }
            catch (WebException ex)
            {
                SimpleXssAttackAnnounceItem announceItem = new SimpleXssAttackAnnounceItem(_xAttack, SimpleXssAttackStatus.AttackHalted, _sharedResource, "", DateTime.Now);
                OnAgentAttackAnnounced(announceItem);
                return(null);
            }
        }