J'ai besoin de faire un scan, par exemple avec http-sql-injection.nse script nmap.
Je sais déjà que je devrais utiliser --script-args
pour définir des arguments, mais ma question n'est pas à ce sujet.
Comment puis-je regarder sur l'ensemble du paquet d'arguments, que ce script (ou n'importe lequel des scripts de nmap) peut prendre?
Conformément à la documentation nmap dans "Exemple 9.2. Aide de script", le paramètre de nmap qui affiche l'aide sur le script est:
nmap --script-help <filename.nse>
À savoir:
nmap --script-help http-sql-injection.nse
Si vous regardez documentation NSE écrit par le propre créateur de Nmap:
3.1. Champ de description
Le champ de description décrit ce qu'un script teste et toutes les notes importantes dont l'utilisateur doit se méfier. Selon la complexité du script, la description peut varier de quelques phrases à quelques paragraphes. Le premier paragraphe doit être un bref résumé de la fonction de script adaptée à une présentation autonome à l'utilisateur. D'autres paragraphes peuvent fournir beaucoup plus de détails sur le script.
Fyodor explique que le champ "description" est utilisé pour tout décrire sur la complexité que le script lui-même pourrait avoir. Alors, allez-y et examinez plus en détail la façon dont le script a été créé:
$ vi /usr/share/nmap/scripts/http-sql-injection.nse
...
11 description = [[
12 Spiders an HTTP server looking for URLs containing queries vulnerable to an SQL
13 injection attack. It also extracts forms from found websites and tries to identify
14 fields that are vulnerable.
15
16 The script spiders an HTTP server looking for URLs containing queries. It then
17 proceeds to combine crafted SQL commands with susceptible URLs in order to
18 obtain errors. The errors are analysed to see if the URL is vulnerable to
19 attack. This uses the most basic form of SQL injection but anything more
20 complicated is better suited to a standalone tool.
21
22 We may not have access to the target web server's true hostname, which can prevent access to
23 virtually hosted sites.
24 ]]
Cela explique pourquoi le http-sql-injection.nse
le script n'affiche pas les "options d'utilisation", que ce soit ce que vous attendiez.
Les scripts NSE ont la tradition d'inclure des "options d'utilisation" dans les commentaires. Une telle chose qui a été documentée dans la section " 8.1 La tête ":
Viennent ensuite les informations NSEDoc. Ce script ne contient pas les balises @usage et @args courantes car il est si simple, mais il a une balise NSEDoc @output:
--- --@output -- 21/tcp open ftp ProFTPD 1.3.1 -- |_ auth-owners: nobody -- 22/tcp open ssh OpenSSH 4.3p2 Debian 9etch2 (protocol 2.0) -- |_ auth-owners: root -- 25/tcp open smtp Postfix smtpd -- |_ auth-owners: postfix -- 80/tcp open http Apache httpd 2.0.61 ((Unix) PHP/4.4.7 ...) -- |_ auth-owners: dhapache -- 113/tcp open auth? -- |_ auth-owners: nobody -- 587/tcp open submission Postfix smtpd -- |_ auth-owners: postfix -- 5666/tcp open unknown -- |_ auth-owners: root
Comme la documentation ne montre pas explicitement l'utilisation de "@usage", regardez-vous dans /usr/share/nmap/scripts/
:
$ grep -iR -A5 "@usage" /usr/share/nmap/scripts/
/usr/share/nmap/scripts/ajp-brute.nse:-- @usage
/usr/share/nmap/scripts/ajp-brute.nse--- nmap -p 8009 <ip> --script ajp-brute
/usr/share/nmap/scripts/ajp-brute.nse---
/usr/share/nmap/scripts/ajp-brute.nse--- @output
/usr/share/nmap/scripts/ajp-brute.nse--- PORT STATE SERVICE
/usr/share/nmap/scripts/ajp-brute.nse--- 8009/tcp open ajp13
...
J'utilise d'abord locate nse | grep scripts
pour lister tous les scripts
J'ai simplement cat
et grep
sur les arguments pour le script que je veux utiliser:
cat /usr/share/nmap/scripts/whatever-script.nse | grep args
Cela devrait vous montrer tous les arguments disponibles pour le script spécifique.