134 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			134 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| /**
 | |
|  * File: create_risk_assessment.php
 | |
|  * Author: Ryan Prather
 | |
|  * Purpose: File to create a final risk assessment output file
 | |
|  * Created: Oct 20, 2014
 | |
|  *
 | |
|  * Portions Copyright (c) 2012-2015, Salient Federal Solutions
 | |
|  * Portions Copyright (c) 2008-2011, Science Applications International Corporation (SAIC)
 | |
|  * Released under Modified BSD License
 | |
|  *
 | |
|  * See license.txt for details
 | |
|  *
 | |
|  * Change Log:
 | |
|  *  - Oct 20, 2014 - File created
 | |
|  */
 | |
| $cmd = getopt("s:", array("debug::"));
 | |
| 
 | |
| if (isset($cmd['debug'])) {
 | |
|   $path = realpath("/Users/pratherr/workspace/web/exec");
 | |
| }
 | |
| else {
 | |
|   $path = realpath("/xampp/www/exec");
 | |
| }
 | |
| 
 | |
| chdir($path);
 | |
| 
 | |
| set_time_limit(0);
 | |
| set_include_path(get_include_path());
 | |
| 
 | |
| include_once 'database.inc';
 | |
| include_once 'helper.inc';
 | |
| 
 | |
| $db = new db();
 | |
| $log = new Sagacity_Error("Create_Risk_Assessment.log");
 | |
| 
 | |
| $ste = $db->get_STE($cmd['s'])[0];
 | |
| $sys = $db->get_System_By_STE_ID($cmd['s']);
 | |
| $site = $db->get_Site_By_STE_ID($cmd['s']);
 | |
| $tgts = $db->get_Target_Details($cmd['s']);
 | |
| 
 | |
| $xml = new DOMDocument();
 | |
| $pi = $xml->createProcessingInstruction("xml-stylesheet", 'type="text/xsl" href="diacap.xsl"');
 | |
| $xml->appendChild($pi);
 | |
| 
 | |
| $xml->appendChild($report = xml_helper($xml, 'report'));
 | |
| $report->appendChild($ste_node = xml_helper($xml, "ste", null, false, array(
 | |
|   'start_date'           => $ste->get_Eval_Start_Date()->format("Y-m-d"),
 | |
|   'end_date'             => $ste->get_Eval_End_Date()->format("Y-m-d"),
 | |
|   'status'               => $ste->get_Status(),
 | |
|   'ao'                   => $ste->get_AO(),
 | |
|   'proc_checklist_fname' => "Procedural-eChecklist-" . $ste->get_ID() . ".xlsx"
 | |
| )));
 | |
| $ste_node->appendChild(xml_helper($xml, "recommendations", $ste->get_Recommendations(), true));
 | |
| $ste_node->appendChild(xml_helper($xml, "conclusion", $ste->get_Conclusions(), true));
 | |
| $ste_node->appendChild(xml_helper($xml, "constraints", $ste->get_Constraints(), true));
 | |
| $ste_node->appendChild(xml_helper($xml, "assumptions", $ste->get_Assumptions(), true));
 | |
| $ste_node->appendChild(xml_helper($xml, "residual_risk", $ste->get_Residual_Risk(), true));
 | |
| $ste_node->appendChild(xml_helper($xml, "deviations", $ste->get_Deviations(), true));
 | |
| $ste_node->appendChild(xml_helper($xml, "scope", $ste->get_Scope(), true));
 | |
| 
 | |
| $ste_node->appendChild($team = xml_helper($xml, "ste_team"));
 | |
| foreach ($ste->get_STE_Team() as $key => $people) {
 | |
|   $team->appendChild(xml_helper($xml, "member", null, false, array(
 | |
|     'name'     => $people->name,
 | |
|     'org'      => $people->org,
 | |
|     'phone'    => $people->phone,
 | |
|     'position' => $people->position
 | |
|   )));
 | |
| }
 | |
| 
 | |
| $report->appendChild($sys_node = xml_helper($xml, "system", null, false, array(
 | |
|   'name'  => $sys->get_Name(),
 | |
|   'class' => $sys->get_Classification(),
 | |
|   'mac'   => $sys->get_MAC()
 | |
| )));
 | |
| $sys_node->appendChild(xml_helper($xml, "description", $sys->get_Description(), true));
 | |
| $sys_node->appendChild(xml_helper($xml, "executive_summary", $sys->get(), true));
 | |
| 
 | |
| $report->appendchild(xml_helper($xml, "site", null, false, array(
 | |
|   'name'      => $site->get_Name(),
 | |
|   'address'   => $site->get_Address(),
 | |
|   'city'      => $site->get_City(),
 | |
|   'state'     => $site->get_State(),
 | |
|   'zip'       => $site->get_Zip(),
 | |
|   'country'   => $site->get_Country(),
 | |
|   'poc_name'  => $site->get_POC_Name(),
 | |
|   'poc_email' => $site->get_POC_Email(),
 | |
|   'poc_phone' => $site->get_POC_Phone()
 | |
| )));
 | |
| 
 | |
| $report->appendChild($targets = xml_helper($xml, "targets"));
 | |
| 
 | |
| foreach ($tgts as $key => $tgt) {
 | |
|   $os = $db->get_Software($tgt->get_OS_ID())[0];
 | |
|   $targets->appendChild($tgt_node = xml_helper($xml, "target", null, false, array(
 | |
|     'name' => $tgt->get_Name(),
 | |
|     'os'   => $os->get_Man() . " " . $os->get_Name() . " " . $os->get_Version()
 | |
|   )));
 | |
| 
 | |
|   foreach ($tgt->interfaces as $key => $int) {
 | |
|     if (false) {
 | |
|       $int = new interfaces();
 | |
|     }
 | |
|     $tgt_node->appendChild(xml_helper($xml, "interface", null, false, array(
 | |
|       'name'     => $int->get_Name(),
 | |
|       'hostname' => $int->get_Hostname(),
 | |
|       'ipv4'     => $int->get_IPv4(),
 | |
|       'ipv6'     => $int->get_IPv6(),
 | |
|       'fqdn'     => $int->get_FQDN()
 | |
|     )));
 | |
|   }
 | |
| }
 | |
| 
 | |
| $report->appendChild($ia_node = xml_helper($xml, "ia_controls"));
 | |
| 
 | |
| $proc = $db->get_Proc_IA_Controls($ste);
 | |
| foreach ($proc as $key => $ia) {
 | |
|   $ia_node->appendChild($node = xml_helper($xml, "ia_control", null, false, array(
 | |
|     'id'     => $ia->get_Control_ID(),
 | |
|     'name'   => $ia->get_Name(),
 | |
|     'status' => $ia->get_Worst_Status_String()
 | |
|   )));
 | |
| 
 | |
|   $node->appendChild(xml_helper($xml, "vuln_desc", $ia->finding->vul_desc, true));
 | |
|   $node->appendChild(xml_helper($xml, "mitigations", $ia->finding->mitigations, true));
 | |
|   $node->appendChild(xml_helper($xml, "references", $ia->finding->reference, true));
 | |
|   $node->appendChild(xml_helper($xml, "notes", $ia->finding->notes, true));
 | |
| }
 | |
| 
 | |
| $xml->formatOutput = true;
 | |
| $xml->save("../report/" . $sys->get_Name() . "_" . $site->get_Name() . "_" . $ste->get_Eval_Start_Date()->format("Y_m_d") . ".xml");
 |