はてなキーワード: ディレクトリトラバーサルとは
【Webサーバを作る】http://d.hatena.ne.jp/kmaebashi/20130804/p1
use Fcntl;
use strict;
use Socket;
use threads;
use POSIX qw(strftime);
use File::Spec::Functions qw(rel2abs);
my $thread = threads->new(\&serverThread, "");
$thread->join;
my $ret;
my %hashmap=(
"htm" => "text/html",
"txt" => "text/plain",
);
$ret = $hashmap{$_[0]};
if ($ret eq "") {
return "application/octet-stream";
} else {
return $ret;
}
}
my $documentRoot = rel2abs("D:/var/www/html");
my ($line, $path, @tmp, $ext, $data, $absPath);
socket(SERVER, PF_INET, SOCK_STREAM, getprotobyname('tcp'));
bind(SERVER, sockaddr_in("8001", INADDR_ANY)) || die;
listen(SERVER, SOMAXCONN) || die;
while (accept(CLIENT, SERVER)) {
while (<CLIENT>){
$line = $_;
last if ($line eq "" || $line eq "\r\n" || $line eq "\n");
if (index($line, "GET") == 0){
$path = (split(/ /, $line))[1];
@tmp = split(/\./, $path);
$ext = @tmp[$#tmp];
}
}
print CLIENT "HTTP/1.1 200 OK\r\n";
print CLIENT "Date: " .strftime("%a, %d %b %Y %H:%M:%S GMT", gmtime). "\r\n";
print CLIENT "Server: Sever03.java\r\n";
print CLIENT "Connection: close\r\n";
print CLIENT "Content-type: ". getContentType($ext). "\r\n";
$absPath = rel2abs($documentRoot. $path);
if (index($absPath,$documentRoot)==0 && sysopen(FH, $absPath, O_RDONLY | O_BINARY)) {
while ($data = <FH>) {
}
close FH;
}
close CLIENT;
}
}
コアモジュールだけ使った。
元ネタのJavaコードはディレクトリトラバーサルになってたんで、一応対策を盛り込んだ。
といっても絶対に外向けに動かさないように。無いと思うけど。
いろいろツッコミくれるとうれしいです。
ウィルスが勝手に児童ポルノを落として俺オワタ、みたいな話があるけど、ウィルス感染たって経路はそこそこ限られているわけで。
スパム業者にメアドが割れてて、且つ、とても古いoutlookでウィルスを受信したとか。
ろくに Microsoft Update もしないまま IE や IEコンポ使用ブラウザでポルノサイトを見回ったとか。(Gecko の方が脆弱性が多かったらしいけど、実際に攻撃に使われた例はほとんど聞かないよな)
flash のバージョンが古いままポルノサイトを見回ったとか。
ポルノサイトを見てたら「このコーデック入れて⇒ xxx.exe」って言われたから xxx.exe を実行したとか。
えろいのを zip でくれっつったら zip でくれたんだけど、その中にディレクトリトラバーサルが仕込まれていて、スタートアップにウィルスを置かれたりとか。
p2pで「【無臭】ちびっこたちががんばりました.zip .exe」を落としたとか。
限られているわけで。まあそういう事だよね。(もちろんこれだけじゃない。よく利用するショッピングサイトのflashにもウィルスが紛れ込んでいた例はままある)
2003年頃に流行った、ポート135にパケット送りつけるだけで広まるワームの類、要するに「ネットに繋いでいるだけでマジ何もしてないのに感染する」タイプのウィルスって、現存するんだっけ? 寡聞にして知らないのである。……いや現存はするか。まだ135にそういうパケットが飛んでくるもんな。
でも、未だに感染してる奴って何なの?ちんげ?