Несоответствие сценариев требованиям безопасности: взлом при отсутствии проверки ввода
# Ha базе IP-адреса подсети (класс A, B, C)задаем # корректные значения переменных. check_end(); $aend=$a2; # Создание массива. while ($al < $aend) (while ($bl < $bend) { while ($cl < $cend) { while ($dl < Sdend) { push (@hosts, "$al.$bl.$cl.$dl">; $dl+=l; check_end(); } $cl+=l; $dl=0; } $bl+=l; $cl=0; } $al+=l; $bl=0; } } } sub portscan (my $target = $_[0]; print "Сканируется порт $target."; local $/; open(SCAN,"nc – vzn – w 2 $target 80 2" &1I"); # Порт открыт $result = <SCAN>; if ($result=~/open/) { print "\tПорт 80 Ha $target открыт. \n"; print OUTFILE "порт 80 открыт\n"; open (HTTP, ">http.tmp"); print HTTP "GET /msadc/msadcs.dll HTTP/1.0\n\n"; close HTTP; open(SCAN2, "type http.tmp I nc – nvv – w 2 $target 80 2>&1 I"); $result2 = <SCAN2>; if (Sresult2=~/Microsoft-IIS4.07) { if ($result2=~/x-varg/){ print " $target уязвима против атаки MDAC."; print OUTFILE "$target может быть уязвима против атаки &MDAC."; } } close SCAN; } } sub check_end { if (($al==$a2) &S ($bl==$b2) & s ($cl==$c2)) { $dend=$d2; } else { $dend=255; } if (($al==$a2) && ($bl==$b2)) { $cend=$c2; } else { $cend=255; } if ($al= =$a2) { $bend=$b2; – } else { $bend=255; } }
При использовании параметра -n команды netcat требуется, чтобы в командной строке явно указывался IP-адрес.