Mircbugger küldte az alábbi levelet a wap.menetrendek.hu (van aki még WAP-ol?) üzemeltetőjének. Egy elég egzotikus hibáról van szó, amely egy kis továbbgondolással feltehetően kódfuttatásra is alkalmas lehetett volna. A problémát azóta úgy tűnik, már javították:
Tisztelt WebMester!
A wap.menetrendek.hu-val kapcsolatban írnék, mégpedig arról, hogy szerintem a szerveroldali szkriptek valószínűleg sebezhetőek a forráskódban az uid mező átírásával a következőképpen:
Annyit kívülről is látni, hogy az "uid" egy fájlra mutat és ha az nem létezik, hibaüzenetet ír a szkript, melyből ez kiderül, ahogy látható [az alábbi] képen.
Mivel a fájlelérés nincs levédve a könyvtárak közötti visszalépéstől (../../) így egyfelől elképzelhető olyan fájlokhoz való hozzáférés, melyekhez kívülállónak nem szabadna hozzáférnie, másfelől felveti egy DoS támadás lehetőségét, amennyiben a fájlból olvasott érték vagy kódrészlet nincs megfelelően felülvizsgálva és méretre korlátozva. Példa:
<anchor title="Teleplista">OK<go href="wml.cgi" method="post">
<postfield name="action" value="match"/>
<postfield name="uid" value="../../../dev/urandom"/>
<postfield name="beirta" value="$(honnan_i)"/>
</go></anchor>Itt ha a CGI szkriptben egy while(<FILEHANDLE>) ciklussal olvasunk, végtelen ciklus lesz belőle és megvalósul a DoS támadás, ráadásul a memóriát is kitelítheti a program, ha minden olvasott értéket tárolunk. Amennyiben ezutóbbi átírást alkalmazzuk, és a form-ot post-oljuk, a szerver [az alább] látható hibát produkálja és utána nem is áll helyre.
A megoldás: Minden mező beolvasásakor regexppel kell validálni az értékeket, például az uid-nél a regex: [0-9]{10}\.[0-9]{5} és csak akkor szabad tovább folytatni a műveletet, ha megfelelt. Így elképzelhetetlen, hogy a "../../"-t tartalmazó sztringek értelmezésre kerüljenek és az uid mező kéretlen fájlra mutasson.
Ezt a levelet azért írtam, hogy a hiba mielőbb kijavításra kerüljön, a szerverre nem törtem be, nem loptam el semmilyen információt.
Üdvözlettel
Egy informatikus kolléga
Néhány szolg. közlemény a hibajelentésekkel kapcsolatban:
- Sokan küldtetek be eddig ki nem került jelentéseket, ezekről nem feledkeztem meg, előbb-utóbb ki fognak kerülni
- A GPG nyilvános kulcsom letölthető a coming out oldalról
_2501 2011.09.07. 16:32:12
Csiszi91 (törölt) 2011.09.10. 14:30:57
mircbugger 2011.09.15. 11:16:17
buherator · http://buhera.blog.hu 2011.09.15. 11:39:38
_2501 2011.09.15. 14:59:29
1: open FH, "filename";
2: open FH, "<filename";
Az 1. esetben működik amit mondasz bash -c "ls -la". A 2. esetben nem.