ЖЖ и страшные слова - часть II

| Comments () | No TrackBacks
Ко вчерашнему.

Некоторые могли обратить внимание, что если пойти на http://community.livejournal.com/ru_politics, будучи незалогиненым, то ЖЖ честно покажет "This journal has been suspended.". А если пойти залогиненым, то ВСЕ ОПЯТЬ ПОВИСНЕТ, АААА!!!! Псы Тоталитарного Режима отслеживают невинных пользователей, интересующихся крамольным коммьюнити, и берут на карандашик!!! Страшно?

Разберемся.
Когда мы залогиненными идем на http://community.livejournal.com/ru_politics, ЖЖ нас перенаправит на URL вида http://community.livejournal.com/ru_politics/__setdomsess?dest=http://community.livejournal.com/ru_politics&k=ljdomsess.community.ru_politics&v= ....
Вот так вот у ЖЖ хитрО устроена схема авторизации.

Попробуем подсократить. Не логинясь, пойдем на http://community.livejournal.com/ru_politics/ - в конце ULR слеш. Опять все висит. Вот оно. Становится понятней.

Проверям (невалидным HTTP запросом, его валидность нам не важна):
$ telnet  204.9.177.18 80
Trying 204.9.177.18...
Connected to 204.9.177.18.
Escape character is '^]'.
GET /ru_politics

Параллельно запускаем tcpdump:
# tcpdump -S -nl -s0 host 204.9.177.18 and port 80
19:59:58.223493 IP 89.108.83.67.36117 > 204.9.177.18.80: S 516335794:516335794(0)
win 5840 <mss 1460,sackOK,timestamp 19335704 0,nop,wscale 0>
19:59:58.443826 IP 204.9.177.18.80 > 89.108.83.67.36117: S 845985459:845985459(0)
ack 516335795 win 4380 <mss 1460,nop,wscale 0,nop,nop,timestamp 1054158263 19335704,
nop,nop,sackOK>
19:59:58.443858 IP 89.108.83.67.36117 > 204.9.177.18.80: . ack 845985460 win 5840
<nop,nop,timestamp 19335726 1054158263>
20:00:00.316302 IP 89.108.83.67.36117 > 204.9.177.18.80: P 516335795:516335813(18)
ack 845985460 win 5840 <nop,nop,timestamp 19335914 1054158263>
20:00:00.636080 IP 204.9.177.18.80 > 89.108.83.67.36117: . ack 516335813 win 4398
<nop,nop,timestamp 1054160456 19335914>
Все пролезло, к нам прилетел ACK.

Пробуем со слешом:
$ telnet  204.9.177.18 80
Trying 204.9.177.18...
Connected to 204.9.177.18.
Escape character is '^]'.
GET /ru_politics/
Опять смотрим tcpdump'ом:
# tcpdump -S -nl -s0 host 204.9.177.18 and port 80
20:00:15.680079 IP 89.108.83.67.36119 > 204.9.177.18.80: S 535122460:535122460(0)
win 5840 <mss 1460,sackOK,timestamp 19337450 0,nop,wscale 0>
20:00:15.900485 IP 204.9.177.18.80 > 89.108.83.67.36119: S 1002706682:1002706682(0)
ack 535122461 win 4380 <mss 1460,nop,wscale 0,nop,nop,timestamp 1054175719 19337450,
nop,nop,sackOK>
20:00:15.900507 IP 89.108.83.67.36119 > 204.9.177.18.80: . ack 1002706683 win 5840
<nop,nop,timestamp 19337472 1054175719>
20:00:20.709008 IP 89.108.83.67.36119 > 204.9.177.18.80: P 535122461:535122480(19)
ack 1002706683 win 5840 <nop,nop,timestamp 19337953 1054175719>
20:00:21.794070 IP 89.108.83.67.36119 > 204.9.177.18.80: P 535122461:535122480(19)
ack 1002706683 win 5840 <nop,nop,timestamp 19338062 1054175719>
20:00:23.974075 IP 89.108.83.67.36119 > 204.9.177.18.80: P 535122461:535122480(19)
ack 1002706683 win 5840 <nop,nop,timestamp 19338280 1054175719>
20:00:28.334092 IP 89.108.83.67.36119 > 204.9.177.18.80: P 535122461:535122480(19)
ack 1002706683 win 5840 <nop,nop,timestamp 19338716 1054175719>
20:00:37.054082 IP 89.108.83.67.36119 > 204.9.177.18.80: P 535122461:535122480(19)
ack 1002706683 win 5840 <nop,nop,timestamp 19339588 1054175719>
А вот и ретрансмиты.

Судя по всему, атака не прекратилась, но ЖЖ стал умнее и теперь режет пакеты по строчкам 'GET /ru_politics/', 'POST /ru_politics/' и т.д. Причем, строчка должна быть в самом начале TCP-payload. Т.е. пост с этими строчками проходит (правда, с накоторой вероятностью может обломаться).

В общем, жжшным сисадминам за борьбу с DDoS'ом четверка. Была бы пятерка, если б они так сделали сразу.

This entry was originally posted in my livejournal

No TrackBacks

TrackBack URL: http://net-geek.org/cgi-bin/mt/mt-tb.cgi/35

About this Entry

This page contains a single entry by Daniel Ginsburg published on June 5, 2007 8:03 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.

Archives