Spaces:
Running on CPU Upgrade
Running on CPU Upgrade
| ############################################################################### | |
| # SPDX-License-Identifier: GPL-3.0-only | |
| # PURPOSE: Perform CGI tests | |
| ############################################################################### | |
| sub nikto_cgi_init { | |
| my $id = { name => "cgi", | |
| full_name => "CGI", | |
| author => "Sullo", | |
| description => "Enumerates possible CGI directories.", | |
| hooks => { recon => { method => \&nikto_cgi, }, }, | |
| copyright => "2008 Chris Sullo", | |
| }; | |
| return $id; | |
| } | |
| sub nikto_cgi { | |
| my ($mark) = @_; | |
| my $gotvalid = 0; | |
| my @POSSIBLECGI; | |
| my @CFGCGI = split(' ', $VARIABLES{'@CGIDIRS'}); | |
| if (defined $CLI{'forcecgi'}) { | |
| if ($CLI{'forcecgi'} eq "all") { | |
| nprint("Using all known CGI directories\n", "d"); | |
| } | |
| elsif ($CLI{'forcecgi'} eq "none") { | |
| nprint("- No CGI directories are set\n", "v", "cgi"); | |
| $VARIABLES{'@CGIDIRS'} = ""; | |
| } | |
| else { | |
| nprint("Using CGI dir '$CLI{'forcecgi'}'\n", "d"); | |
| $VARIABLES{'@CGIDIRS'} = $CLI{'forcecgi'}; | |
| } | |
| } | |
| else # or normal testing of each dir | |
| { | |
| foreach my $possiblecgidir (@CFGCGI) { | |
| return if $mark->{'terminate'}; | |
| my ($res, $content, $error, $request, $response) = | |
| nfetch($mark, $possiblecgidir, "GET", "", "", "", "CGI"); | |
| nprint("Checked for CGI dir\t$possiblecgidir\tgot:$res", | |
| "d", ($mark->{'hostname'}, $mark->{'ip'}, $mark->{'displayname'})); | |
| if ($res =~ /^40[135]$/ && !is_404($mark, $possiblecgidir, $response)) { | |
| $gotvalid++; | |
| push @POSSIBLECGI, $possiblecgidir; | |
| } | |
| } | |
| if ($gotvalid == 0) { | |
| nprint( | |
| "+ No CGI Directories found (use '-C all' to force check all possible dirs). CGI tests skipped." | |
| ); | |
| $VARIABLES{'@CGIDIRS'} = ""; | |
| } | |
| elsif (scalar(@CFGCGI) == scalar(@POSSIBLECGI)) { | |
| nprint("+ All CGI directories 'found', use '-C none' to test none"); | |
| $VARIABLES{'@CGIDIRS'} = join(" ", @CFGCGI); | |
| } | |
| else { | |
| $VARIABLES{'@CGIDIRS'} = join(" ", @POSSIBLECGI); | |
| } | |
| } | |
| nprint("- Checking for CGI in: $VARIABLES{'@CGIDIRS'}", "v", "cgi"); | |
| } | |
| 1; | |