Changeset 151
- Timestamp:
- 08/12/2009 11:19:21 PM (4 years ago)
- Location:
- trunk/plugins
- Files:
-
- 2 edited
-
nikto_core.plugin (modified) (1 diff)
-
nikto_headers.plugin (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/plugins/nikto_core.plugin
r150 r151 1953 1953 foreach my $c (@{$result{'whisker'}->{'cookies'}}) 1954 1954 { 1955 nprint("+ $request{'whisker'}->{'uri'} sent cookie: $c"); 1955 nprint("+ $uri sent cookie: $c"); 1956 } 1957 } 1958 1959 # If headers is defined, copy the whisker headers to the hash 1960 if (defined $headers) 1961 { 1962 # First clear the hash 1963 foreach my $header (keys %$headers) 1964 { 1965 delete($headers->{$header}); 1966 } 1967 while (my ($key, $value) = each(%result)) 1968 { 1969 if ($key ne "whisker" && $key ne "connection") 1970 { 1971 $headers->{$key}=$value; 1972 } 1956 1973 } 1957 1974 } -
trunk/plugins/nikto_headers.plugin
r139 r151 43 43 my $dbarray = initialise_db("db_headers"); 44 44 my @interesting_headers = qw /microsoftofficewebserver ms-author-via dasl dav daap-server/; 45 my %headers; 45 46 # Standard headers, whisker is added to stop false positives 46 47 # Host Pragma … … 51 52 foreach my $f (qw/\/index.php \/junk999.php \/ \/index.php3 \/ \/junk999.php3 \/index.cfm \/junk999.cfm \/index.asp \/junk999.asp \/index.aspx \/junk988.aspx/ ) 52 53 { 53 (my $RES, $CONTENT) = fetch($f, "GET");54 if (defined $ result{'x-powered-by'}) { $xpb{ $result{'x-powered-by'} } = 1; }54 (my $RES, $CONTENT) = nfetch($f, "GET", "", \%headers); 55 if (defined $headers{x-powered-by}) { $xpb{ $headers{x-powered-by} } = 1; } 55 56 } 56 57 … … 68 69 ####################################################################### 69 70 # Servlet-Engine info 70 if (defined $ result{'servlet-engine'})71 { 72 my $x = $ result{'servlet-engine'};71 if (defined $headers{servlet-engine}) 72 { 73 my $x = $headers{servlet-engine}; 73 74 $x = ~s/\(.*$//; 74 75 $x =~ s/\s+//g; … … 146 147 147 148 # First let's hit something we know should return something 148 my ($res, $content)= fetch("/","GET");149 my ($res, $content)=nfetch("/","GET","",\%headers); 149 150 150 151 foreach my $header (@interesting_headers) 151 152 { 152 if ($ result{$header} ne '')153 { 154 my $x = $ result{$header};153 if ($headers{$header} ne '') 154 { 155 my $x = $headers{$header}; 155 156 $x =~ s/\s+.*$//; 156 157 push(@BUILDITEMS, $x); 157 add_vulnerability($mark,"Retrieved $header header: $ result{$header}",999986,0);158 add_vulnerability($mark,"Retrieved $header header: $headers{$header}",999986,0); 158 159 } 159 160 } … … 161 162 ####################################################################### 162 163 # Look for any non-standard headers 163 foreach my $header (sort keys % result)164 foreach my $header (sort keys %headers) 164 165 { 165 166 my $found = 0; … … 174 175 if ($found == 0) 175 176 { 176 my $x = $ result{$header};177 my $x = $headers{$header}; 177 178 $x =~s/\s+.*$//; 178 179 push(@BUILDITEMS, $x); 179 add_vulnerability($mark,"Non-standard header $header returned by server, with contents: $ result{$header}",$reportnum,0);180 add_vulnerability($mark,"Non-standard header $header returned by server, with contents: $headers{$header}",$reportnum,0); 180 181 $reportnum++; 181 182 } … … 188 189 foreach my $f (qw/\/index.html \/index.htm \/robots.txt/) 189 190 { 190 (my $RES, $CONTENT) = fetch($f, "GET");191 } 192 191 (my $RES, $CONTENT) = nfetch($f, "GET","", \%headers); 192 } 193 193 194 # Now we have a header, let's check ETag for inode 194 if (defined $ result{etag})195 { 196 my $etag=$ result{etag};195 if (defined $headers{etag}) 196 { 197 my $etag=$headers{etag}; 197 198 $etag =~ s/"//g; 198 199 my @fields = split("-",$etag);
Note: See TracChangeset
for help on using the changeset viewer.