Changeset 600


Ignore:
Timestamp:
01/03/2011 05:06:27 AM (2 years ago)
Author:
sullo
Message:

Ticket #173: Terminate a host scan with N in interactive mode

Files:
19 edited

Legend:

Unmodified
Added
Removed
  • documentation/doc.xml

    r586 r600  
    397397        <listitem> 
    398398          <para>q - Quit</para> 
     399        </listitem> 
     400 
     401        <listitem> 
     402          <para>N - Next host</para> 
    399403        </listitem> 
    400404 
  • trunk/nikto.pl

    r585 r600  
    219219    my $elapsed = $mark->{'end_time'} - $mark->{'start_time'}; 
    220220    if (!$CLI{'findonly'}) { 
    221         nprint( 
    222             "+ $NIKTO{'total_checks'} items checked: $mark->{'total_errors'} error(s) and $mark->{'total_vulns'} item(s) reported on remote host" 
    223             ); 
     221        if (!$mark->{'terminate'}) {  
     222                nprint("+ $NIKTO{'total_checks'} items checked: $mark->{'total_errors'} error(s) and $mark->{'total_vulns'} item(s) reported on remote host"); 
     223                } 
     224        else {  
     225                nprint("+ Scan terminated:  $mark->{'total_errors'} error(s) and $mark->{'total_vulns'} item(s) reported on remote host"); 
     226                } 
    224227        nprint("+ End Time:           $time ($elapsed seconds)"); 
    225228    } 
  • trunk/plugins/nikto_apache_expect_xss.plugin

    r486 r600  
    3939 
    4040sub nikto_apache_expect_xss { 
     41    return if $mark->{'terminate'}; 
    4142    my ($mark) = @_; 
    4243    my %headers = ('Expect', '<script>alert(xss)</script>'); 
  • trunk/plugins/nikto_apacheusers.plugin

    r483 r600  
    4646 
    4747sub nikto_apacheusers { 
     48    return if $mark->{'terminate'}; 
    4849    my ($mark, $parameters) = @_; 
    4950    my $apacheusers = 0; 
     
    156157    my @foundusers = (); 
    157158    while (length($text) <= $size) { 
     159        return if $mark->{'terminate'}; 
    158160        if (($ctr % 500) eq 0) { nprint("- User enumeration guess $ctr ($text)", "v"); } 
    159161        ($result, $content) = 
     
    186188    # Now attempt on each entry 
    187189    while (<IN>) { 
     190        return if $mark->{'terminate'}; 
    188191        chomp; 
    189192        s/\#.*$//; 
  • trunk/plugins/nikto_auth.plugin

    r582 r600  
    133133    # Now we have this we can try guessing the password 
    134134    foreach my $entry (@{$REALMS}) { 
     135        return if $mark->{'terminate'}; 
    135136        unless ($realm =~ /$entry->{'realm'}/i || $entry->{'realm'} eq '@ANY') { next; } 
    136137 
  • trunk/plugins/nikto_cgi.plugin

    r483 r600  
    6262    { 
    6363        foreach $possiblecgidir (@CFGCGI) { 
     64            return if $mark->{'terminate'}; 
    6465            ($res, $content) = nfetch($mark, $possiblecgidir, "GET", "", "", "", "cgi dir check"); 
    6566            nprint("Checked for CGI dir\t$possiblecgidir\tgot:$res", "d"); 
  • trunk/plugins/nikto_core.plugin

    r599 r600  
    268268 
    269269    foreach my $file (keys %REQS) { 
     270        return if $mark->{'terminate'}; 
    270271        nprint("- Testing error for file: $file\n", "v"); 
    271272        %headers = (); 
     
    741742    if ($key eq ' ') { 
    742743        status_report(); 
    743         return; 
    744744    } 
    745745    elsif ($key eq 'v') { 
     
    783783        nprint("- Resuming."); 
    784784    } 
     785    elsif ($key eq 'N') { 
     786        nprint("- Terminating host scan."); 
     787        return 'term'; #$mark->{'terminate'}=1; 
     788        } 
    785789    return; 
    786790} 
     
    14581462sub run_hooks { 
    14591463    my ($mark, $type, $request, $result) = @_; 
     1464    return if $mark->{'terminate'}; 
    14601465 
    14611466    foreach my $plugin (@{ $PLUGINORDER{$type} }) { 
     1467        return if $mark->{'terminate'}; 
    14621468        my ($run) = 1; 
    14631469 
     
    20252031    # check for keyboard input 
    20262032    if (($NIKTO{'totalrequests'} % 10) == 0) { 
    2027         check_input(); 
     2033        if (check_input() eq 'term') { $mark->{'terminate'}=1; } 
    20282034    } 
    20292035 
     
    20542060    unless ($flags->{'noprefetch'}) { 
    20552061        (%$request, %$result) = run_hooks($mark, "prefetch", \%request, \%result); 
    2056     } 
     2062        } 
    20572063 
    20582064    # Check cache 
  • trunk/plugins/nikto_dictionary_attack.plugin

    r537 r600  
    3939 
    4040sub nikto_dictionary_attack { 
     41    return if $mark->{'terminate'}; 
    4142    my ($mark, $parameters) = @_; 
    4243 
     
    7071    # Now attempt on each entry 
    7172    while (<IN>) { 
     73        return if $mark->{'terminate'}; 
    7274        chomp; 
    7375        s/\#.*$//; 
  • trunk/plugins/nikto_embedded.plugin

    r592 r600  
    4444 
    4545sub nikto_embedded { 
     46    return if $mark->{'terminate'}; 
    4647    my ($mark) = @_; 
    4748    my $dbarray; 
     
    4950 
    5051    foreach my $item (@$dbarray) { 
     52        return if $mark->{'terminate'}; 
    5153        (my $res, $content) = 
    5254          nfetch($mark, $item->{'uri'}, "GET", "", "", "", "embedded detection"); 
  • trunk/plugins/nikto_favicon.plugin

    r537 r600  
    3737 
    3838sub nikto_favicon { 
     39    return if $mark->{'terminate'}; 
    3940    my ($mark) = @_; 
    4041    my ($RES, $CONTENT) = nfetch($mark, "/favicon.ico", "GET", "", "", "", "favicon"); 
  • trunk/plugins/nikto_headers.plugin

    r582 r600  
    4545 
    4646sub nikto_headers_postfetch { 
     47    return if $mark->{'terminate'}; 
    4748    my ($mark, $parameters, $request, $result) = @_; 
    4849 
     
    6364 
    6465sub nikto_headers_check { 
     66    return if $mark->{'terminate'}; 
    6567    my ($mark, $result, $header, $message, $tid) = @_; 
    6668 
     
    8789 
    8890sub nikto_headers { 
     91    return if $mark->{'terminate'}; 
    8992    my ($mark) = @_; 
    9093    my $dbarray = init_db("db_headers"); 
     
    9699    foreach 
    97100      my $f (qw/\/index.asp \/junk999.asp \/index.aspx \/junk988.aspx \/login.asp \/login.aspx/) { 
     101        return if $mark->{'terminate'}; 
    98102        (my $res, $content) = 
    99103          nfetch($mark, $f, "GET", "", \%transheaders, "", "headers: Translate-f #1"); 
     
    227231    # Try to grab a standard file 
    228232    foreach my $f (qw/\/index.html \/index.htm \/robots.txt/) { 
     233        return if $mark->{'terminate'}; 
    229234        (my $res, $content) = nfetch($mark, $f, "GET", "", \%headers, "", "headers: etag"); 
    230235        last if (defined $headers{'etag'}); 
  • trunk/plugins/nikto_httpoptions.plugin

    r537 r600  
    4242 
    4343sub nikto_httpoptions { 
     44    return if $mark->{'terminate'}; 
    4445    my ($mark) = @_; 
    4546    my %headers; 
     
    100101    # Check for other weirdness 
    101102    # IIS Debug 
    102  
     103    return if $mark->{'terminate'}; 
    103104    ($res, $content) = nfetch($mark, "/", "DEBUG", "", "", "", "httpoptions: DEBUG"); 
    104105    if ($res == 200) { 
     
    113114 
    114115    # IIS PROPFIND HEADER 
     116    return if $mark->{'terminate'}; 
    115117    %headers = ("Host"           => "", 
    116118                "Content-Length" => "0",); 
     
    134136        # Check for all flavours of HTTP 
    135137        foreach my $version (split(/ /, "1.0 1.1")) { 
     138            return if $mark->{'terminate'}; 
    136139            $request{'whisker'}{'version'} = $version; 
    137140            ($res, $content) = 
  • trunk/plugins/nikto_msgs.plugin

    r592 r600  
    4545 
    4646sub nikto_msgs { 
     47    return if $mark->{'terminate'}; 
    4748    my ($mark) = @_; 
    4849    my $dbarray; 
     
    6667 
    6768        # Computer name 
     69        return if $mark->{'terminate'}; 
    6870        my $name = $CONTENT; 
    6971        $name =~ s#(^.*<ComputerName>)([a-zA-Z0-9]*)(</ComputerName>.*$)#$2#; 
     
    8385          nfetch($mark, "/cpqlogin.htm", "GET", "", "", "", "msgs: CompaqHTTPServer"); 
    8486        next unless ($RES == 200); 
     87        return if $mark->{'terminate'}; 
    8588        my $ipaddrs = ""; 
    8689        my $name; 
  • trunk/plugins/nikto_multiple_index.plugin

    r576 r600  
    4242    my ($found, $hashes); 
    4343    foreach my $item (@$dbarray) { 
     44        return if $mark->{'terminate'}; 
    4445 
    4546        # Use nfetch to minimise extra code 
  • trunk/plugins/nikto_outdated.plugin

    r592 r600  
    3737 
    3838sub nikto_outdated { 
     39    return if $mark->{'terminate'}; 
    3940    my ($mark) = @_; 
    4041 
     
    7071        else                                     # must create  sepr 
    7172        { 
    72  
    7373            # use the last non 0-9 . a-z char as a sepr (' ', '-', '_' etc) 
    7474            my $sepr = $mark->{'banner'}; 
     
    120120 
    121121sub vereval { 
    122  
    123122    # split both by last char of @_[0], as it is the name to version separator 
    124123    my $sepr = substr($_[2], (length($_[2]) - 1), 1); 
  • trunk/plugins/nikto_put_del_test.plugin

    r483 r600  
    3838 
    3939sub nikto_put_del_test { 
     40    return if $mark->{'terminate'}; 
    4041    my ($mark) = @_; 
    4142    my $msg; 
  • trunk/plugins/nikto_robots.plugin

    r483 r600  
    4040 
    4141sub nikto_robots { 
     42    return if $mark->{'terminate'}; 
    4243    my ($mark) = @_; 
    4344    my %headers; 
  • trunk/plugins/nikto_subdomain.plugin

    r499 r600  
    3939 
    4040sub nikto_subdomain { 
     41    return if $mark->{'terminate'}; 
    4142    my ($mark) = @_; 
    4243    my $dbarray = init_db("db_subdomains"); 
     
    6162 
    6263    foreach my $item (@$dbarray) { 
     64        return if $mark->{'terminate'}; 
    6365 
    6466        # Use nfetch to minimize extra code 
  • trunk/plugins/nikto_tests.plugin

    r592 r600  
    4242 
    4343sub nikto_tests { 
     44    return if $mark->{'terminate'}; 
    4445    my ($mark, $parameters) = @_; 
    4546 
    4647    # this is the actual the looped code for all the checks 
    4748    foreach my $checkid (sort keys %TESTS) { 
     49        return if $mark->{'terminate'}; 
    4850        if ($checkid >= 500000) { next; }    # skip TESTS added manually during run (for reports) 
    4951                                             # replace variables in the uri 
     
    5254        # Now repeat for each uri 
    5355        foreach my $uri (@urilist) { 
     56            return if $mark->{'terminate'}; 
    5457            my %headers; 
    5558            (my $res, $content, $error) = 
     
    183186 
    184187    foreach my $dir (@DIRS) { 
     188    return if $mark->{'terminate'}; 
    185189        foreach my $file (@PFILES) { 
    186190            next if ($file eq ""); 
     
    190194 
    191195            foreach my $ext (@EXTS) { 
     196                return if $mark->{'terminate'}; 
    192197 
    193198                # dir/file.ext 
     
    238243    foreach my $dir (keys %DIRS) { 
    239244        foreach my $file (keys %FILES) { 
     245            return if $mark->{'terminate'}; 
    240246            testfile($mark, "$dir$file", "all checks", 299999); 
    241247        } 
     
    244250 
    245251sub testfile { 
     252    return if $mark->{'terminate'}; 
    246253    my ($mark, $uri, $name, $tid) = @_; 
    247254    my ($res, $content, $error) = nfetch($mark, "$uri", "GET", "", "", "", "Tests: $name"); 
Note: See TracChangeset for help on using the changeset viewer.