Questions about this topic? Sign up to ask in the talk tab.

Kolkata

From NetSec
Revision as of 22:03, 27 April 2012 by User (Talk | contribs)

Jump to: navigation, search

<syntaxhighlight lang="perl">

  1. !/usr/bin/perl
  2. @url http://www.blackhatacademy.org/
  3. @author fxm+hats

use strict; use warnings;

  1. use diagnostics;

use LWP::Simple; use Getopt::Long; use YAML::XS; use LWP::UserAgent; use HTTP::Request; use HTTP::Response; use Digest::MD5 qw(md5_hex); use Data::Dumper;

my $opts; my %tree; my $sigtree = \%tree; my $sigdir = '/home/fxm/Desktop/Code/appscan/sigs';

my ($custom,$host,$path,$debug) = undef; my @urls;

&check_args; &load_sigs; &setup_scanner; &do_eet;

sub setup_scanner {

 my @keys = keys %tree;
 if (not defined $custom)
 {
   for my $fp (@keys)
   {
     print "Setting up scanner for fingerprint $fp\n";
     my $fullurl = sprintf("http://%s/%s/%s", $host, $path, $sigtree->{$fp}->{config}[0]{'file_check'});
     push(@urls, $fullurl);
   }
 } else {
   my $fullurl = sprintf("http://%s/%s/%s", $host, $path, $sigtree->{$custom}->{config}[0]{'file_check'});
   push(@urls, $fullurl);
 }

}

sub do_eet {

 die "Not done yet\n";

 foreach my $scan (@urls)
 {
   my $digestobj = Digest::MD5->new;
   my $ua        = new LWP::UserAgent;
   my $content;
   $ua->agent("Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.237 Safari/534.10");
   my $req = new HTTP::Request GET => "$scan";
   my $res = $ua->request($req);
   if ($res->is_error) {
     print $res->status_line;
   }

   if ($res->is_success) {
    $content = $res->content;
    my $md5 = $digestobj->add("$content");
    my $final = $md5->hexdigest;
    find_sum_version($final);
#    print "MD5:\t\t$final\n" if (defined $debug);
#    print "Version:\t$ver_hash{$final}\n\n";
   }
 }

}

sub load_sigs {

 if (defined $custom && -f "$sigdir/$custom.yml")
 {
   print "Loaded custom profile $custom\n";
   $sigtree->{$custom} = YAML::XS::LoadFile("$sigdir/$custom.yml");
 } else {
   opendir(SIGDIR, "$sigdir") or die $!;
   my @fingerprints = grep {
     /\.yml$/
     && -f "$sigdir/$_"
   } readdir(SIGDIR);
   foreach my $yf (@fingerprints)
   {
     my $yfname = $yf;
     $yfname =~ s/\.yml//;
     $sigtree->{$yfname} = YAML::XS::LoadFile("$sigdir/$yf");
     print Dumper $sigtree->{$yfname}->{'config'};
     printf "Loaded '%s' (%s)\n", $sigtree->{$yfname}->{'config'}[0]{'app_name'}, $yf;
   }
 }
 closedir(SIGDIR);

}

sub check_args {

 $opts = GetOptions(
   "custom=s"	=> \$custom,
   "debug"	=> \$debug,
   "host=s"	=> \$host,
   "path=s"	=> \$path
 );
 $host = "localhost" if (not defined $host);
 $path = "" if (not defined $path);

}

sub find_sum_version($) {

 my $val = shift;
 my @keys = keys %tree;
 for my $mod (@keys)
 {
   my @matches = grep { $sigtree->{$mod}->{'sigs'} eq $val } keys %{$sigtree->{'sigs'}};
 }
# delete($tmp_tree);

}

</syntaxhighlight>

Wordpress

---
sigs:
- 2.0: a306a72ce0f250e5f67132dc6bcb2ccb
- 2.1: 4f04728cb4631a553c4266c14b9846aa
- 2.2: 25e1e78d5b0c221e98e14c6e8c62084f
- 2.3: 83c83d0f0a71bd57c320d93e59991c53
- 2.5: 7293453cf0ff5a9a4cfe8cebd5b5a71a
- 2.6: 61740709537bd19fb6e03b7e11eb8812
- 2.7: e6bbc53a727f3af003af272fd229b0b2
- 2.8.5: 56c606da29ea9b8f8d823eeab8038ee8
- 2.9.1: 128e75ed19d49a94a771586bf83265ec
- 3.0.0: 128e75ed19d49a94a771586bf83265ec
- 3.0.1: 0711a6aa3862ac0dd2f9ef1a3d26f809
- 3.0.2: 0711a6aa3862ac0dd2f9ef1a3d26f809
- 3.0.3: 0711a6aa3862ac0dd2f9ef1a3d26f809
- 3.0.4: 0711a6aa3862ac0dd2f9ef1a3d26f809
- 3.0.5: 0711a6aa3862ac0dd2f9ef1a3d26f809
- 3.0.6: 0711a6aa3862ac0dd2f9ef1a3d26f809
- 3.1: c67211f73b63e773e626127aa95338c2
- 3.1.1: 1786644689f0495f07d5ae1737395108
- 3.1.2: 1786644689f0495f07d5ae1737395108
- 3.1.3: 1786644689f0495f07d5ae1737395108
- 3.1.4: 1786644689f0495f07d5ae1737395108
- 3.2: b2c6b6d221c816948248b453046355eb
- 3.2.1: b2c6b6d221c816948248b453046355eb
- 3.3.1: 9754385dabfc67c8b6d49ad4acba25c3
config:
- app_name: Wordpress
- check_file: /wp-includes/js/tinymce/tiny_mce.js

Joomla

---
sigs:
- 1.0.11: 1d28094f16c310591b855982759bc992
- 1.0.14: 9570ccaab7cdac45e6727740515ce69a
- 1.0.15: 9570ccaab7cdac45e6727740515ce69a
- 1.0.4: 1080567bb801a301e3be618805a55125
- 1.0.6: 1080567bb801a301e3be618805a55125
- 1.0.8: 222ab5eb9cb8136619053a4f8358b9a5
- 1.5.1: b891f61dc9b85a9193592c9d13e9c97a
- 1.5.10: 326412fc179cb787500adffada69c4e7
- 1.5.11: 326412fc179cb787500adffada69c4e7
- 1.5.14: 326412fc179cb787500adffada69c4e7
- 1.5.15: 326412fc179cb787500adffada69c4e7
- 1.5.4: 326412fc179cb787500adffada69c4e7
- 1.5.5: 326412fc179cb787500adffada69c4e7
- 1.5.8: 326412fc179cb787500adffada69c4e7
- 1.5.9: 326412fc179cb787500adffada69c4e7
config:
- app_name: Joomla
- check_file: /includes/js/joomla.javascript.js

MediaWiki

---
sigs:
- 1.10.0: 31ef23cbcdf689bd68d957ae0d8b8a19 
- 1.10.2: 31ef23cbcdf689bd68d957ae0d8b8a19
- 1.10.3: 31ef23cbcdf689bd68d957ae0d8b8a19
- 1.13.0: 6781b4412fbc451b792c4cdc88b0a1fa
- 1.13.5: 6781b4412fbc451b792c4cdc88b0a1fa
- 1.14.0: 846eec3b6696476a79548b82bf48e492
- 1.14.1: 846eec3b6696476a79548b82bf48e492
- 1.15.1: b6301262680144f1709d995a6c097db8
- 1.5.2: 2fb3891102f9fe2d37a4bdb47b8f42de
- 1.5.8: 2fb3891102f9fe2d37a4bdb47b8f42de
- 1.8.2: 5d52c4473189e70e4878a5a7b38e3a82
- 1.9.2: 24b79f325b32661fd24c93d7d2e8ccef
- 1.9.4: 24b79f325b32661fd24c93d7d2e8ccef
config:
- app_name: MediaWiki
- check_file: /skins/simple/main.css