small fixes

This commit is contained in:
Adrien MALINGREY 2023-04-29 08:25:51 +02:00
parent e1bde27789
commit c3082c9442
8 changed files with 74 additions and 73 deletions

28
LISEZMOI.md Normal file
View File

@ -0,0 +1,28 @@
# lanScan
Scanne des hôtes avec `nmap`
et affiche le résultat dans une page web.
* Créer un fichier de configuration YAML dans un sous-dossier ./configs/ (voir l'exemple ci-dessous).
Il peut être généré en scannant un réseau avec : `./discover <CIDR>`.
* Scanner avec le script `./scan_all` (utiliser une tâche cron !).
* Voir les résultats en ouvrant `.\index.php` dans le navigateur web.
## Exemple
```yaml
---
site: Nom du site
hosts:
- name: Nom du premier groupe
host:
- address: host1.local
services: [ssh, http]
- address: 192.168.1.100
services: [ftp, https, 5432]
- name: Nom du 2ème groupe
host:
- adress: host3.local
services: [ssh, ftp, 8006]
```

View File

@ -1,14 +1,13 @@
# lanScan # lanScan
Scanne des hôtes spécifiées avec un fichier de configuration en YAML Scan hosts with `nmap` and display results in webpage.
et affiche le résultat dans une page web.
* Créer un fichier de configuration YAML dans un sous-dossier ./configs/ (voir l'exemple ci-dessous). * Create a configuration yaml file in ./configs/ subdirectory (see example below).
Il peut être généré en scannant un réseau (en notation CIDR) avec : `./discover XXX.XXX.XXX.XXX/XX`. It may be generated by scanning a network with `./discover <CIDR>`.
* Scanner avec le script `./scan_all` (utiliser une tâche cron !). * Scan with `./scan_all` (use a cron task!).
* Voir les résultats dans le navigateur web. * Open `.\index.php` in web browser to see results.
## Exemple ## Example
```yaml ```yaml
--- ---
site: Nom du site site: Nom du site

View File

@ -3,17 +3,23 @@
### ###
# #
# Scan un réseau avec nmap pour créer un fichier de configuration # Scan un réseau avec nmap pour créer un fichier de configuration
# Usage : ./discover <network> avec network en notation CIDR XXX.XXX.XXX.XXX/XX # Usage : ./discover <reseau> avec reseau en notation CIDR XXX.XXX.XXX.XXX/XX
# #
### ###
DIR="$(dirname -- "$0")" if [ "$#" -ne 1 ]; then
echo -e "Usage : ./discover <CIDR>\navec <CIDR> l'adresse réseau en notation CIDR (XXX.XXX.XXX.XXX/XX)" >&2
exit 1
fi
pushd "$(dirname -- "$0")" > /dev/null
network="$1" network="$1"
filename="${network/\//_}" site="${network/\//_}"
mkdir -p "$DIR/scans" mkdir -p "scans"
nmap -F -oX "$DIR/scans/$filename.xml" $network nmap -F -oX "scans/$site.xml" $network
mkdir -p "$DIR/configs" mkdir -p "configs"
xsltproc --stringparam network "$network" to_config.xsl "$DIR/scans/$filename.xml" > "$DIR/configs/$filename.yaml" xsltproc --stringparam network "$network" to_config.xsl "scans/$site.xml" > "configs/$site.yaml"
php to_XML.php "$DIR/configs/$filename.yaml" > "$DIR/site/$site.xml" php to_XML.php "configs/$site.yaml" > "site/$site.xml"
popd > /dev/null

View File

@ -1,43 +0,0 @@
<?php
$file = $argv[1];
$site = basename($file, ".yaml");
$__DIR__ = __DIR__;
$conf = yaml_parse_file($file);
$xml = new SimpleXMLElement(<<<XML
<?xml version="1.0"?>
<?xml-stylesheet href='../results.xsl' type='text/xsl'?>
<lanScanConf scanpath="scans/$site.xml"/>
XML
);
$targets = [];
$services = [];
foreach ($conf as $key => $value) {
if ($key == "site") {
$xml->addAttribute("site", $value);
} else {
$xmlGroup = $xml->addChild("group");
$xmlGroup->addAttribute("name", $key);
foreach($value as $hostaddress => $servicesList) {
$xmlHost = $xmlGroup->addChild("host");
$xmlHost->addAttribute("address", $hostaddress);
$targets[$hostaddress] = true;
if ($servicesList) foreach ($servicesList as $service) {
$xmlService = $xmlHost->addChild("service");
$xmlService->addAttribute("name", $service);
$services[$service] = true;
}
}
}
}
$xml->asXML("site/$site.xml");
$targets = join(array_keys($targets), " ");
$services = join(array_keys($services), ",");
echo ("nmap -v -T4 -p $services --script $__DIR__/http-info.nse -oX $__DIR__/scans/.~$site.xml $targets");
?>

View File

@ -10,7 +10,7 @@
<xsl:template match="lanScan"> <xsl:template match="lanScan">
<xsl:text>nmap -v -T4 -p </xsl:text> <xsl:text>nmap -v -T4 -p </xsl:text>
<xsl:apply-templates select="//service[not(.=preceding::*)]" /> <xsl:apply-templates select="//service[not(.=preceding::*)]" />
<xsl:text> --script "$DIR/http-info.nse" -oX "$DIR/</xsl:text> <xsl:text> --script "http-info.nse" -oX "</xsl:text>
<xsl:value-of select="@scanpath"/> <xsl:value-of select="@scanpath"/>
<xsl:text>.tmp" </xsl:text> <xsl:text>.tmp" </xsl:text>
<xsl:apply-templates select="//host"/> <xsl:apply-templates select="//host"/>

18
scan
View File

@ -1,9 +1,15 @@
#!/usr/bin/env bash #!/usr/bin/env bash
export DIR="$(dirname -- "$0")" if [ "$#" -ne 1 ]; then
config="$1" echo "Usage: ./scan <config>" >&2
exit 1
fi
site="$(basename ${config/.yaml/})" pushd "$(dirname -- "$0")" > /dev/null
php to_XML.php "$config" > "$DIR/site/$site.xml" site="$(basename ${1/.yaml/})"
xsltproc nmap_cmd.xsl "$DIR/site/$site.xml" | sh
mv "$DIR/scans/$site.xml.tmp" "$DIR/scans/$site.xml" php "to_XML.php" "configs/$site.yaml" > "site/$site.xml"
eval $(xsltproc "nmap_cmd.xsl" "site/$site.xml")
mv "scans/$site.xml.tmp" "scans/$site.xml"
popd > /dev/null

View File

@ -1,12 +1,15 @@
#!/usr/bin/env bash #!/usr/bin/env bash
DIR="$(dirname -- $0)" pushd "$(dirname -- $0)" > /dev/null
mkdir -p "$DIR"/scans mkdir -p scans
mkdir -p "$DIR"/site mkdir -p site
for config in "$DIR"/configs/*.yaml for config in configs/*.yaml
do do
echo $config site="$(basename ${config/.yaml/})"
./scan "$config" & echo "Scan $site"
./scan "$site" &
done done
popd > /dev/null

View File

@ -5,10 +5,12 @@ $__DIR__ = __DIR__;
$conf = yaml_parse_file($file); $conf = yaml_parse_file($file);
$xml = new DomDocument("1.0"); $xml = new DomDocument("1.0", "utf-8");
$xml->preserveWhiteSpace = false;
$xml->formatOutput = true;
$xml->appendChild($xml->createProcessingInstruction("xml-stylesheet", "href='../results.xsl' type='text/xsl'")); $xml->appendChild($xml->createProcessingInstruction("xml-stylesheet", "href='../results.xsl' type='text/xsl'"));
$root = $xml->appendChild($xml->createElement("lanScan")); $root = $xml->appendChild($xml->createElement("lanScan"));
$root->setAttribute("scanpath", "scans/$site.xml"); $root->setAttribute("scanpath", "./scans/$site.xml");
function appendArray($document, $node, $array) { function appendArray($document, $node, $array) {
foreach ($array as $key => $value) { foreach ($array as $key => $value) {