public string start(string analysisArtifactsFile)
        {
            var analysisArtifacts = KAnalysisArtifacts.load(analysisArtifactsFile);

            start(analysisArtifacts);
            return("execution completed");
        }
        public string setWebGoatPhaseSettings_example1()
        {
            var analysisArtifacts = KAnalysisArtifacts.load(webGoatAnalysisArtifactsFile);

            analysisArtifacts.phase_1.run = true;
            analysisArtifacts.phase_1.task1_copyAssessmentFiles    = true;
            analysisArtifacts.phase_1.task2_copyProjectConfigFiles = true;
            analysisArtifacts.phase_2.run = true;
            analysisArtifacts.phase_2.task1_SplitFindingsOnTrace = true;
            analysisArtifacts.phase_2.task2_createStrutsMappings = true;
            analysisArtifacts.phase_3.run = true;
            analysisArtifacts.phase_3.task1_handleKnownSinks            = true;
            analysisArtifacts.phase_3.task2_filterFindings              = true;
            analysisArtifacts.phase_3.task3_filter_FindingsWithNoTraces = true;
            analysisArtifacts.phase_3.task4_CalculateStrutsFindings     = true;
            analysisArtifacts.phase_4.run = true;
            analysisArtifacts.phase_4.task1_analyseFindingsWithKnownSinks = true;
            analysisArtifacts.phase_4.task2_AdjustsStrutsFindings         = true;
            analysisArtifacts.phase_5.run = true;
            analysisArtifacts.phase_5.task1_createFinalAssessmentFile = true;

            // save the results in the end
            KAnalysisArtifacts.save((KAnalysisArtifacts)analysisArtifacts, webGoatAnalysisArtifactsFile);
            return(webGoatAnalysisArtifactsFile);
        }
        public string setWebGoatPhaseSettings_example2()
        {
            var analysisArtifacts = KAnalysisArtifacts.load(webGoatAnalysisArtifactsFile);               // loads AnalysisArtifact xml file

            XUtils_AnalysisWorkflow.setAllPhasesAndTasksValue(analysisArtifacts, false);                 // disables all phases and tasks
            analysisArtifacts.phase_3.run = true;                                                        // enable phase #3
            analysisArtifacts.phase_3.task2_filterFindings = true;                                       // enable phase #3's tasks #2
            analysisArtifacts.phase_3.task2_sourceSink.Clear();                                          // remove previous entries

            // note: the SourceSink object should be created with 3 parameters:
            //             - Source
            //             - Sink
            //             - RemoveMatches   : when set will remove the findings that matched the Source/Sink pair from the next queries
            analysisArtifacts.phase_3.task2_sourceSink.Add(new SourceSink("getParameter", "", false)); // add new mappings
            analysisArtifacts.phase_3.task2_sourceSink.Add(new SourceSink("", "org.apache", true));
            analysisArtifacts.phase_3.task2_sourceSink.Add(new SourceSink("getAttribute", "", true));
            analysisArtifacts.phase_3.task2_sourceSink.Add(new SourceSink("", "setAttribute", true));
            analysisArtifacts.phase_3.task2_sourceSink.Add(new SourceSink("", "setProperty", true));
            analysisArtifacts.phase_3.task2_sourceSink.Add(new SourceSink("", "sql", true));
            analysisArtifacts.phase_3.task2_sourceSink.Add(new SourceSink("", "print", true));
            analysisArtifacts.phase_3.task2_sourceSink.Add(new SourceSink("", "io", true));
            analysisArtifacts.phase_3.task2_sourceSink.Add(new SourceSink("", "Cookie", true));
            analysisArtifacts.phase_3.task2_sourceSink.Add(new SourceSink("", "exec", true));
            analysisArtifacts.phase_3.task2_sourceSink.Add(new SourceSink("", "log", true));
            //analysisArtifacts.phase_3.task2_sourceSink.Add(new SourceSink("get","set",true));
            analysisArtifacts.phase_3.task2_sourceSink.Add(new SourceSink("", "external_caller", true));

            KAnalysisArtifacts.save((KAnalysisArtifacts)analysisArtifacts, webGoatAnalysisArtifactsFile);
            return(webGoatAnalysisArtifactsFile);
        }
        // creates a new Artifacts Object file and saves it
        public static bool createAnalysisArtifactFile(string workflowName, string assessmentFile, string targetFolder, string targetAnalysisArtifactsFile)
        {
            var analysisArtifacts = (KAnalysisArtifacts)createAnalysisArtifact(workflowName, assessmentFile, targetFolder);

            setAllPropertiesValue(analysisArtifacts, true);
            KAnalysisArtifacts.save(analysisArtifacts, targetAnalysisArtifactsFile);
            return(File.Exists(targetAnalysisArtifactsFile));
        }
        // creates a new Artifacts Object file
        public static IAnalysisArtifacts createAnalysisArtifact(string workflowName, string assessmentFile, string targetFolder)
        {
            var analysisArtifacts = new KAnalysisArtifacts(workflowName);

            analysisArtifacts.assessmentFilesOrFolderToLoad.Add(assessmentFile);
            analysisArtifacts.targetFolder = targetFolder;
            return(analysisArtifacts);
        }
        public string startAnalysis(string artifactsFile)
        {
            var analysisArtifacts = KAnalysisArtifacts.load(artifactsFile);

            var analysisWorkflow = new Analysis_Workflow();

            return(analysisWorkflow.start(analysisArtifacts));
        }
예제 #7
0
        public string  runPhase5()
        {
            var testAnalysisArtifacts = KAnalysisArtifacts.load(testAnalysisArtifactsFile);
            var result          = runPhase5(testAnalysisArtifacts);
            var finalO2Findings = XUtils_Findings_v0_1.loadFindingsFile(finalAssessmentFile);

            XUtils_Findings_v0_1.openFindingsInNewWindow(finalO2Findings);
            return(result);
        }
        public string start(string folderWithAssessments, string folderWithProjectFiles, string targetFolder)
        {
            var projectName       = Path.GetFileName(folderWithAssessments); // get the project name from the name of the folderWithAssessments
            var analysisArtifacts = new KAnalysisArtifacts(projectName);

            analysisArtifacts.assessmentFilesOrFolderToLoad.Add(folderWithAssessments);
            if (false == string.IsNullOrEmpty(folderWithProjectFiles))
            {
                analysisArtifacts.projectFilesOrFolder.Add(folderWithProjectFiles);
            }
            analysisArtifacts.targetFolder = targetFolder;
            return(start(analysisArtifacts));
        }
예제 #9
0
 // run sequence of filters on findings (note that (if 4th param == true) saveQuery will remove the matched
 // findings from tracesToFilter
 public void task2_filterFindings(KAnalysisArtifacts analysisArtifacts, List <IO2Finding> tracesToFilter, string targetFolder, string fileName)
 {
     foreach (var sourceSink in analysisArtifacts.phase_3.task2_sourceSink)
     {
         XUtils_Analysis.saveQuery(tracesToFilter, targetFolder, fileName, sourceSink.Source, sourceSink.Sink, sourceSink.RemoveMatches);
     }
     // save what was left (i.e. findings that didn't match the above filters) in a separate file
     if (tracesToFilter.Count > 0)
     {
         O2Cmd.log.write("After task2 filters there were {0} findings that matched no filter", tracesToFilter.Count);
         var targetFile = Path.Combine(targetFolder, "__NO FILTER__" + " - " + fileName + ".ozasmt");
         XUtils_Findings_v0_1.saveFindings(tracesToFilter, targetFile);
     }
 }
        public string createWebgoatArtifactsFile()
        {
            File.Delete(webGoatAnalysisArtifactsFile);
            Assert.That(false == File.Exists(webGoatAnalysisArtifactsFile), "webGoatAnalysisArtifactsFile should not exists at this stage: " + webGoatAnalysisArtifactsFile);
            string workflowName   = "webgoat (from O2 Unit test)";
            string assessmentFile = webGoatAssessmentFile;
            string targetFolder   = Path.Combine(demoDataFolder, workflowName);
            string targetAnalysisArtifactsFile = webGoatAnalysisArtifactsFile;
            // create it
            var analysisArtifacts = (KAnalysisArtifacts)XUtils_AnalysisWorkflow.createAnalysisArtifact(workflowName, assessmentFile, targetFolder);

            // save it
            KAnalysisArtifacts.save(analysisArtifacts, targetAnalysisArtifactsFile);
            // make sure it exists
            Assert.That(File.Exists(webGoatAnalysisArtifactsFile), "webGoatAnalysisArtifactsFile was not created: " + webGoatAnalysisArtifactsFile);
            return(webGoatAnalysisArtifactsFile);
        }
        public string manual_phases(string analysisArtifactsFile, string phase)
        {
            O2Cmd.log.write("\n\n*********   O2 Analysis Workflow : Manual Phase execution **********\n\n");
            O2Cmd.log.write("\n: analysisArtifactsFile = {0}", analysisArtifactsFile);
            O2Cmd.log.write("\n: phase = {0}", phase);

            var analysisArtifacts = KAnalysisArtifacts.load(analysisArtifactsFile);

            O2Cmd.log.write(analysisArtifacts.getAnalysisDetails());

            if (phase.IndexOf("1") > -1)
            {
                new Analysis_Workflow_Phase_1().runPhase1(analysisArtifacts);
            }

            if (phase.IndexOf("2") > -1)
            {
                new Analysis_Workflow_Phase_2().runPhase2(analysisArtifacts);
            }

            if (phase.IndexOf("3") > -1)
            {
                new Analysis_Workflow_Phase_3().runPhase3(analysisArtifacts);
            }

            if (phase.IndexOf("4") > -1)
            {
                new Analysis_Workflow_Phase_4().runPhase4(analysisArtifacts);
            }

            if (phase.IndexOf("5") > -1)
            {
                new Analysis_Workflow_Phase_5().runPhase5(analysisArtifacts);
            }

            return("manual phase  execution completed");
        }
        public string  runPhase4()
        {
            var testAnalysisArtifacts = KAnalysisArtifacts.load(testAnalysisArtifactsFile);

            return(runPhase4(testAnalysisArtifacts));
        }