This commit is contained in:
Adrien MALINGREY 2024-10-18 02:04:55 +02:00
parent 887e024f27
commit 54116d27d0
2 changed files with 71 additions and 15 deletions

View File

@ -64,7 +64,10 @@ if ($preset && isset($presets[$preset])) {
'--version-intensity' => ['filter' => FILTER_VALIDATE_INT, 'options' => ['min_range' => 0, 'max_range' => 9]], '--version-intensity' => ['filter' => FILTER_VALIDATE_INT, 'options' => ['min_range' => 0, 'max_range' => 9]],
'--version-all' => FILTER_VALIDATE_BOOLEAN, '--version-all' => FILTER_VALIDATE_BOOLEAN,
'--version-trace' => FILTER_VALIDATE_BOOLEAN, '--version-trace' => FILTER_VALIDATE_BOOLEAN,
// SERVICE/VERSION DETECTION: // SCRIPT SCAN:
'-sC' => FILTER_VALIDATE_BOOLEAN,
'--script' => ['filter' => FILTER_VALIDATE_REGEXP, 'options' => ['regexp' => "/^[a-z][a-z0-9\.\/]*$/"]],
// OS DETECTION:
'-O' => FILTER_VALIDATE_BOOLEAN, '-O' => FILTER_VALIDATE_BOOLEAN,
'--osscan-limit' => FILTER_VALIDATE_BOOLEAN, '--osscan-limit' => FILTER_VALIDATE_BOOLEAN,
'--osscan-guess' => FILTER_VALIDATE_BOOLEAN, '--osscan-guess' => FILTER_VALIDATE_BOOLEAN,

View File

@ -325,14 +325,14 @@ Exemples: <?= $_SERVER['REMOTE_ADDR']; ?>/24 <?= $_SERVER['SERVER_NAME']; ?> 10.
<select class="ui dropdown" id="versionIntensitySelect" name="--version-intensity" value="<?= $options["--version-intensity"] ?? ""?>"> <select class="ui dropdown" id="versionIntensitySelect" name="--version-intensity" value="<?= $options["--version-intensity"] ?? ""?>">
<option value="0">0</option> <option value="0">0</option>
<option value="1">1</option> <option value="1">1</option>
<option value="2">Léger</option> <option value="2">2 Léger</option>
<option value="3">3</option> <option value="3">3</option>
<option value="4">4</option> <option value="4">4</option>
<option value="5">5</option> <option value="5">5</option>
<option value="6">6</option> <option value="6">6</option>
<option value="7">Défaut</option> <option value="7">7 Défaut</option>
<option value="8">8</option> <option value="8">8</option>
<option value="9">Tous</option> <option value="9">9 Tous</option>
</select> </select>
</div> </div>
@ -344,6 +344,23 @@ Exemples: <?= $_SERVER['REMOTE_ADDR']; ?>/24 <?= $_SERVER['SERVER_NAME']; ?> 10.
</div> </div>
</div> </div>
<div class="title"><i class="icon dropdown"></i>Scripts</div>
<div class="content">
<div class="inline field">
<div class="ui toggle checkbox">
<input type="checkbox" id="sCCheckbox" name="-sC" <?= $options['-sC'] ?? false ? 'checked' : ''; ?> />
<label for="sCCheckbox" title="-sC">Scripts par défaut</label>
</div>
</div>
<div class="field">
<label for="scriptInput">Scripts</label>
<input id="scriptInput" type="text" name="--script" placeholder="script"
title="<catégories|répertoire|nom|all>" list="scripts" pattern="[a-z][a-z0-9\.\/]*+"
value="<?= htmlentities($options["--script"] ?? "", ENT_QUOTES); ?>">
</div>
</div>
<div class="title"><i class="icon dropdown"></i>Détection du système d'exploitation</div> <div class="title"><i class="icon dropdown"></i>Détection du système d'exploitation</div>
<div class="content"> <div class="content">
<div class="inline field"> <div class="inline field">
@ -453,8 +470,9 @@ foreach (scandir($SCANSDIR) as $filename) {
<option value="<?= $_SERVER['REMOTE_ADDR']; ?>/24"></option> <option value="<?= $_SERVER['REMOTE_ADDR']; ?>/24"></option>
<option value="<?= $_SERVER['SERVER_NAME']; ?>"></option> <option value="<?= $_SERVER['SERVER_NAME']; ?>"></option>
</datalist> </datalist>
<datalist id='servicesList'> <datalist id='servicesList'>
<?php <?php
$nmap_services = file("$DATADIR/nmap-services"); $nmap_services = file("$DATADIR/nmap-services");
$services = []; $services = [];
foreach ($nmap_services as $service) { foreach ($nmap_services as $service) {
@ -464,10 +482,11 @@ foreach ($nmap_services as $service) {
} }
} }
foreach ($services as $name => [$portid, $protocol]) { foreach ($services as $name => [$portid, $protocol]) {
echo " <option value='$name'>$portid</option>\n"; echo " <option value='$name'>$portid</option>\n";
} }
?> ?>
</datalist> </datalist>
<datalist id="flagsList"> <datalist id="flagsList">
<option value="URG"></option> <option value="URG"></option>
<option value="ACK"></option> <option value="ACK"></option>
@ -476,15 +495,48 @@ foreach ($services as $name => [$portid, $protocol]) {
<option value="SYN"></option> <option value="SYN"></option>
<option value="FIN"></option> <option value="FIN"></option>
</datalist> </datalist>
<datalist id="scripts">
<!-- categories -->
<option value="auth"></option>
<option value="broadcast"></option>
<option value="brute"></option>
<option value="default"></option>
<option value="ddiscovery"></option>
<option value="dos"></option>
<option value="exploit"></option>
<option value="external"></option>
<option value="fuzzer"></option>
<option value="intrusive"></option>
<option value="malware"></option>
<option value="safe"></option>
<option value="version"></option>
<option value="vuln"></option>
<!-- names -->
<option value="scripts/"></option>
<?php
foreach (scandir("scripts") as $filename) {
if (substr($filename, -4) === '.nse') {
$name = substr($filename, 0, -4);
echo " <option value='scripts/$name'></option>\n";
}
}
foreach (scandir("$DATADIR/scripts") as $filename) {
if (substr($filename, -4) === '.nse') {
$name = substr($filename, 0, -4);
echo " <option value='$name'></option>\n";
}
}
?>
</datalist>
<script> <script>
class TagsInput extends Tagify { class TagsInput extends Tagify {
constructor(input, delim = ",") { constructor(input, options={}, delim = ",") {
super(input, { options.delimiters = " |,"
delimiters: " |,", options.originalInputValueFormat = tags => tags.map(tag => tag.value).join(delim)
originalInputValueFormat: tags => tags.map(tag => tag.value).join(delim), if (input.list) options.whitelist = Array.from(input.list.options).map(option => option.value)
}) super(input, options)
if (input.list) this.whitelist = Array.from(input.list.options).map(option => option.value)
} }
} }
@ -495,19 +547,20 @@ foreach ($services as $name => [$portid, $protocol]) {
clearable: true clearable: true
}) })
new TagsInput(targetsInput, " ") new TagsInput(targetsInput, {}, " ")
new TagsInput(excludeInput) new TagsInput(excludeInput)
new TagsInput(PSInput) new TagsInput(PSInput)
new TagsInput(PAInput) new TagsInput(PAInput)
new TagsInput(PUInput) new TagsInput(PUInput)
new TagsInput(POInput) new TagsInput(POInput)
var pTagsInput = new TagsInput(pInput) var pTagsInput = new TagsInput(pInput)
new TagsInput(dnsServersInput)
FCheckbox.onchange = () => { FCheckbox.onchange = () => {
pInput.disabled = FCheckbox.checked pInput.disabled = FCheckbox.checked
pTagsInput.setDisabled(FCheckbox.checked) pTagsInput.setDisabled(FCheckbox.checked)
} }
new TagsInput(dnsServersInput)
new TagsInput(scanflagsInput) new TagsInput(scanflagsInput)
new TagsInput(scriptInput, {enforceWhitelist: true})
newScanForm.onsubmit = function(event) { newScanForm.onsubmit = function(event) {
if (this.checkValidity()) { if (this.checkValidity()) {