Собсно, вопросец такой: Есть пак доменов, нужно это дело отсканить на наличие нужного плагина Как пример: Плагин WP. Как вообще можно понять что он установлен на сайте? По косвенным признакам? Есть там WPScan, но он не работает со списком доменов. Есть ли такой софт в природе(паблике), или нужно писать?
Не особо сложно написать такое самому. Самое простое если с плагином идет картинка, достаточно просто проверить есть эта картинка или нет на сайте. ну или вообще если эти плагины какие то файлы создают то достаточно просто этот файл проверить. js или css файл.
В каждом плагине WP должен идти файлик readme.txt в котором есть обязательные атрибуты, к примеру: _ttp://garden.bnp.co.il/wp-content/plugins/contact-form-7/readme.txt тут в качестве атрибута или контрольного слова я в своем примере использовал Contributors Под него и пишем скриптик, переписал свою старую наработку на перл под данный случай Вот собственно и сам код: Code: #!/usr/bin/perl use LWP::UserAgent; #use HTTP::Request::Common qw(GET); use LWP::Simple; $ua = LWP::UserAgent->new(); $ua->agent("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Ubuntu/10.10 Chromium/12.0.703.0 Chrome/12.0.703.0 Safari/534.24"); #$ua->timeout(30); my $url = $ARGV[0]; my $plugin = $ARGV[1]; &help unless @ARGV==2; open(ifile, "<$url") || die "Couldn't open file\n"; my @dirs =<ifile>; close("ifile"); &fun_cheak; sub trim { my($string)=@_; for ($string) { s/^\s+//; s/\s+$//; } return $string; } sub help{ print "Usage:\n"; print "cms.pl <file> <plugin> || cms.pl list.txt contact-form-7\n"; print ""; exit; } sub fun_cheak{ print "..::START::..\n"; print "--------------\n"; foreach my $urls(@dirs){ my $query=trim($urls)."/wp-content/plugins/$plugin/readme.txt"; my $resp = $ua->get($query); #print "$query\n"; #parsing if($resp->content =~ /Contributors/){ #Контрольное слово print "[$plugin]::$urls\n"; open(TXTS,"+>>good.txt"); print TXTS $urls; close(TXTS); } } print "\n--------------\n"; print "..::FINISH::.."; }
Можно с помощью любого скриптового языка сделать из файла выборку доменов нужных и по ним сгенерить цикл, где каждый домен будет wpscan проверятся. Примерно так Code: foreach($domains as $domain) { system("wpscan -u $domain >> result.txt"); }