コード例 #1
0
        public void analyzeFindingsOfVulnType_SqlInjection(List <IO2Finding> o2Findings, bool removeFindingsFromSourceList)
        {
            // extract the Sql Injection ones
            var sqlInjectionFindings = XUtils_Analysis.getFindingsWithVulnType(o2Findings, "Vulnerability.Injection.SQL", removeFindingsFromSourceList);

            if (sqlInjectionFindings.Count == 0)
            {
                return;
            }
            // var fileWithSqlInjections = Path.Combine(folderWithArtifacts_Phase4, "Findings_with_SQL_Injection");
            //XUtils_Findings_v0_1.saveFindings(sqlInjectionFindings, fileWithSqlInjections);

            //Assert.That(File.Exists(fileWithSqlInjections), "fileWithSqlInjections was not created");
            var sqlInjectionValidators = new List <string> {
                "java.lang.Integer.<init>(int):void",
                "java.lang.Integer.valueOf(int):java.lang.Integer",
                "java.lang.String.valueOf(int):java.lang.String",
                ":java.util.DateTime"
            };
            var nonExploitable   = new List <IO2Finding>();
            var maybeExploitable = new List <IO2Finding>();

            foreach (O2Finding o2Finding in sqlInjectionFindings)
            {
                var validatorFound = "";
                foreach (var validator in sqlInjectionValidators)
                {
                    if (XUtils_Analysis.doesFindingHasTraceSignature(o2Finding, validator))
                    {
                        validatorFound = validator;
                        break;
                    }
                }
                // modify finding
                if (validatorFound != "")
                {
                    o2Finding.context = string.Format("found validator: {0}   ,   {1}", validatorFound, o2Finding.context);
                    nonExploitable.Add(o2Finding);
                    o2Finding.vulnType  += ".NotExploitable";
                    o2Finding.severity   = 3;
                    o2Finding.confidence = 1;
                }
                else
                {
                    maybeExploitable.Add(o2Finding);
                    o2Finding.vulnType  += ".MaybeExploitable.InternalMethod";
                    o2Finding.severity   = 0;
                    o2Finding.confidence = 2;
                }
            }

            var fileWith_NonExploitable = Path.Combine(folderWithArtifacts_Phase4, "NonExploitable_Findings_with_SQL_Injection.ozasmt");

            XUtils_Findings_v0_1.saveFindings(nonExploitable, fileWith_NonExploitable);

            var fileWith_MaybeExploitable = Path.Combine(folderWithArtifacts_Phase4, "MaybeExploitable_Findings_with_SQL_Injection.ozasmt");

            XUtils_Findings_v0_1.saveFindings(maybeExploitable, fileWith_MaybeExploitable);

            //XUtils_Findings_v0_1.openFindingsInNewWindow(nonExploitable).Join();
            //XUtils_Findings_v0_1.openFindingsInNewWindow(maybeExploitable).Join();
        }