150 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			150 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * File: orphaned.php
 | |
|  * Author: Ryan Prather
 | |
|  * Purpose: Display the findings for a particular host that are not assigned to any checklist
 | |
|  * Created: Jan 31, 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:
 | |
|  *  - Jan 31, 2014 - File created
 | |
|  */
 | |
| include_once 'config.inc';
 | |
| include_once 'database.inc';
 | |
| include_once 'helper.inc';
 | |
| 
 | |
| $db = new db();
 | |
| 
 | |
| if (!isset($_REQUEST['tgt'])) {
 | |
|   print "Need to know what host you want to look at";
 | |
|   exit;
 | |
| }
 | |
| 
 | |
| $tgt = $db->get_Target_Details($_REQUEST['ste'], $_REQUEST['tgt'])[0];
 | |
| 
 | |
| $findings = $db->get_Finding($tgt, null, null, true);
 | |
| 
 | |
| set_time_limit(0);
 | |
| ?>
 | |
| 
 | |
| <!DOCTYPE HTML>
 | |
| <html>
 | |
|   <head>
 | |
|     <title><?php print $tgt->get_Name(); ?> - Orphan Findings</title>
 | |
|     <style type='text/css'>
 | |
|       #tooltip {
 | |
|         display: none;
 | |
|         z-index: 1000;
 | |
|         background-color: #FFE681;
 | |
|         color: #000;
 | |
|         font-size: 16px;
 | |
|         padding: 4px;
 | |
|         line-height: 1em;
 | |
|         position: absolute;
 | |
|       }
 | |
|       .hidden {
 | |
|         display: none;
 | |
|       }
 | |
|     </style>
 | |
| 
 | |
|     <script src='../style/5grid/jquery-1.10.2.min.js'></script>
 | |
|     <script src='../script/default.js'></script>
 | |
|     <script>
 | |
|       function pdi_popup(pdi_id, orphan_id) {
 | |
|         $('#pdi_popup').attr('src', '../data/pdi.php?pdi=' + pdi_id + '&orphan=' + orphan_id);
 | |
|       }
 | |
|     </script>
 | |
|   </head>
 | |
|   <body onload='javascript:initTip();'>
 | |
|     <div id='tooltip'></div>
 | |
|     <table border=1>
 | |
|       <thead>
 | |
|         <tr>
 | |
|           <th>Orphan ID</th>
 | |
|           <th>VMS ID</th>
 | |
|           <th>Cat</th>
 | |
|           <th>IA Controls</th>
 | |
|           <th>Short Title</th>
 | |
|           <th>Possible Matches</th>
 | |
|         </tr>
 | |
|       </thead>
 | |
|       <tbody>
 | |
|         <?php
 | |
|         foreach ($findings as $key => $finding) {
 | |
|           $pdi = $db->get_PDI($finding->get_PDI_ID());
 | |
|           $nessus = null;
 | |
|           $cve = null;
 | |
|           $iavm = null;
 | |
|           $gd = $db->get_GoldDisk_By_PDI($pdi->get_ID());
 | |
| 
 | |
|           $stigs = $db->get_STIG_By_PDI($pdi->get_ID());
 | |
|           if (!is_a($stigs, 'stig')) {
 | |
|             die("Can't find the STIG for PDI {$pdi->get_ID()}");
 | |
|           }
 | |
| 
 | |
|           if (count($gd) == 1) {
 | |
|             $gd = $gd[0];
 | |
|           }
 | |
|           else {
 | |
|             $gd = null;
 | |
|           }
 | |
| 
 | |
|           $ia = $db->get_IA_Controls_By_PDI($pdi->get_ID());
 | |
| 
 | |
|           print "<tr>" . PHP_EOL .
 | |
|               "<td onmouseout='hideTip();' onmouseover='showTip(event, " . $pdi->get_ID() . ");'>" . $stigs->get_ID() . "<div class='hidden' id='" . $pdi->get_ID() . "'>" . nl2br($finding->get_Notes()) . "</div></td>" . PHP_EOL .
 | |
|               "<td>" . (!is_null($gd) ? $gd->get_ID() : '') . "</td>" . PHP_EOL .
 | |
|               "<td>" . $pdi->get_Category_Level_String() . "</td>" . PHP_EOL .
 | |
|               "<td>" . "</td>" . PHP_EOL .
 | |
|               "<td>" . $pdi->get_Short_Title() . "</td>" . PHP_EOL;
 | |
| 
 | |
|           if (preg_match('/\d{5,6}/', $stigs->get_ID())) {
 | |
|             $nessus = $db->get_Nessus($stigs->get_ID());
 | |
|           }
 | |
|           elseif (preg_match('/CVE\-\d{4}\-\d{4}/', $stigs->get_ID())) {
 | |
|             $cve = $db->get_CVE($stigs->get_ID());
 | |
|           }
 | |
|           elseif (preg_match('/\d{4}\-[ABT]\-\d{4}/', $stigs->get_ID())) {
 | |
|             $iavm = $db->get_IAVM($stigs->get_ID());
 | |
|           }
 | |
|           else {
 | |
| 
 | |
|           }
 | |
| 
 | |
|           $matches = $db->get_Matching_PDIs($pdi, $nessus, $cve, $iavm);
 | |
| 
 | |
|           print "<td>";
 | |
|           foreach ($matches as $key => $match) {
 | |
|             $short_desc = nl2br(htmlentities(substr($match['desc'], 0, 500)));
 | |
|             $short_cont = nl2br(htmlentities(substr($match['check_content'], 0, 1000)));
 | |
| 
 | |
|             print "<div class='hidden' id='" . $match['pdi_id'] . "'>" .
 | |
|                 $short_desc .
 | |
|                 (strlen($match['desc']) > 500 ? " <b>(truncated)</b>" : "") . "<br />" .
 | |
|                 $short_cont .
 | |
|                 (strlen($match['check_content']) > 1000 ? " <b>(truncated)</b>" : "") .
 | |
|                 "</div>";
 | |
| 
 | |
|             print "<a onmouseout='hideTip();'
 | |
|               onmouseover='showTip(event, " . $match['pdi_id'] . ");'
 | |
|               href='javascript:void(0);'
 | |
|               onclick='javascript:pdi_popup(" . $match['pdi_id'] . ",\"" . $stigs->get_ID() . "\");'>" .
 | |
|                 $match['pdi_id'] .
 | |
|                 "</a> (" . $match['score'] . ") " . $match['title'] . "<br />";
 | |
|           }
 | |
|           print "</td>";
 | |
| 
 | |
|           print "</tr>" . PHP_EOL;
 | |
|         }
 | |
|         ?>
 | |
|       </tbody>
 | |
|     </table>
 | |
|     <iframe id='pdi_popup' class='box' style='width: 80%; height: 80%; top: 10%; left: 10%;'></iframe>
 | |
|   </body>
 | |
| </html>
 |