Compare commits
2 Commits
6422830783
...
570e8f2252
Author | SHA1 | Date | |
---|---|---|---|
570e8f2252 | |||
cd6f64679b |
@ -10,3 +10,7 @@ Pour donner les droits à lanScan sous Linux, installer `sudo` au besoin, puis c
|
|||||||
```
|
```
|
||||||
www-data ALL = NOPASSWD: /usr/bin/nmap
|
www-data ALL = NOPASSWD: /usr/bin/nmap
|
||||||
````
|
````
|
||||||
|
et modifier le fichier `config.php` avec :
|
||||||
|
```php
|
||||||
|
$use_sudo = true;
|
||||||
|
```
|
||||||
|
@ -17,6 +17,7 @@ $HOSTSCAN_OPTIONS = [
|
|||||||
];
|
];
|
||||||
|
|
||||||
$refreshPeriod = 60;
|
$refreshPeriod = 60;
|
||||||
|
$use_sudo = false;
|
||||||
|
|
||||||
$SCANSDIR = 'scans';
|
$SCANSDIR = 'scans';
|
||||||
$DATADIR = '/usr/share/nmap';
|
$DATADIR = '/usr/share/nmap';
|
||||||
|
11
options.php
11
options.php
@ -34,6 +34,15 @@ include_once 'filter_inputs.php';
|
|||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
<main class="ui main container">
|
<main class="ui main container">
|
||||||
|
|
||||||
|
<?php if(isset($errorMessage)) { ?>
|
||||||
|
<div class="ui negative message">
|
||||||
|
<i class="close icon"></i>
|
||||||
|
<div class="header">Erreur</div>
|
||||||
|
<p><?=$errorMessage?></p>
|
||||||
|
</div>
|
||||||
|
<?php } ?>
|
||||||
|
|
||||||
<h1 class="header">Scanner un <?=$host? "hôte" : "réseau" ?></h1>
|
<h1 class="header">Scanner un <?=$host? "hôte" : "réseau" ?></h1>
|
||||||
|
|
||||||
<form id="newScanForm" class="ui form" method="get" action="scan.php">
|
<form id="newScanForm" class="ui form" method="get" action="scan.php">
|
||||||
@ -443,4 +452,4 @@ foreach ($services as $name => [$portid, $protocol]) {
|
|||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
|
20
scan.php
20
scan.php
@ -5,7 +5,9 @@ include_once 'filter_inputs.php';
|
|||||||
|
|
||||||
if (!$targets) {
|
if (!$targets) {
|
||||||
http_response_code(400);
|
http_response_code(400);
|
||||||
die('Paramètre manquant : targets, lan ou host');
|
$errorMessage = 'Paramètre manquant : targets, lan ou host';
|
||||||
|
include_once "options.php";
|
||||||
|
die();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!file_exists($SCANSDIR)) mkdir($SCANSDIR);
|
if (!file_exists($SCANSDIR)) mkdir($SCANSDIR);
|
||||||
@ -14,7 +16,9 @@ $args = '';
|
|||||||
foreach ($inputs as $arg => $value) {
|
foreach ($inputs as $arg => $value) {
|
||||||
if (is_null($value)) {
|
if (is_null($value)) {
|
||||||
http_response_code(400);
|
http_response_code(400);
|
||||||
die("Valeur incorecte pour le paramètre $arg : " . filter_input(INPUT_GET, $arg, FILTER_SANITIZE_FULL_SPECIAL_CHARS));
|
$errorMessage = "Valeur incorecte pour le paramètre $arg : " . filter_input(INPUT_GET, $arg, FILTER_SANITIZE_FULL_SPECIAL_CHARS);
|
||||||
|
include_once "options.php";
|
||||||
|
die();
|
||||||
} else if ($value) {
|
} else if ($value) {
|
||||||
if ($value === true) {
|
if ($value === true) {
|
||||||
if (strlen($arg) <= 2) $args .= " -$arg";
|
if (strlen($arg) <= 2) $args .= " -$arg";
|
||||||
@ -28,19 +32,15 @@ foreach ($inputs as $arg => $value) {
|
|||||||
|
|
||||||
$tempPath = tempnam(sys_get_temp_dir(), 'scan_').".xml";
|
$tempPath = tempnam(sys_get_temp_dir(), 'scan_').".xml";
|
||||||
|
|
||||||
$command = "nmap$args -oX '$tempPath' $targets 2>&1";
|
$command = ($use_sudo? "sudo " : "") . "nmap$args -oX '$tempPath' $targets 2>&1";
|
||||||
|
|
||||||
exec($command, $stderr, $retcode);
|
exec($command, $stderr, $retcode);
|
||||||
|
|
||||||
if ($retcode && strpos(implode($stderr), " root ") !== false) {
|
|
||||||
// Retry with sudo
|
|
||||||
$recode = 0;
|
|
||||||
exec("sudo $command", $stderr, $retcode);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($retcode) {
|
if ($retcode) {
|
||||||
http_response_code(500);
|
http_response_code(500);
|
||||||
die(implode("<br/>\n", $stderr));
|
$errorMessage = implode("<br/>\n", $stderr);
|
||||||
|
include_once "options.php";
|
||||||
|
die();
|
||||||
}
|
}
|
||||||
|
|
||||||
$xml = new DOMDocument();
|
$xml = new DOMDocument();
|
||||||
|
Reference in New Issue
Block a user