suns
system network data news bugtraq
sexy unix security project
bugtraq > raditaji.lv nedienas (papildināts) (12) 23.02.2012 16:47
Pirms kāda laika radās interese papētīt savas mājas tāmi. Tā kā esmu Rīgas namu pārvaldnieka klients, vienīgā iespēja ar to iepazīties bija, izmantojot mājaslapu raditaji.lv. Iepazinos, sabēdājos, ka no jaunā gada vairākām pozīcijām tāmē ir paaugstināti tarifi. Ienāca prātā paskatīties, kādas ir tāmes kaimiņu mājām, un salīdzināt tās ar savējo. Kaitināja arī tas, ka lapā ievietotās līkās javaskripta animācijas dedzina nost manu kompi.


dl.php


Papētot mājaslapu, izrādījās, ka visi faili, kas tajā tiek piedāvāti lejuplādei, ir pieejami, izmantojot skriptu dl.php. Un parametri tam skriptam izskatās sekojoši:

http://www.raditaji.lv/dl.php?id=Li90YW1lcy82NjYucGRm&tok=OCxF60EeGk6W9O9ixgx8TIor2lk1gHfG

Uzreiz gribu atzīmēt, ka testējot, parametrs tok izrādījās butaforija, tam nevajag pievērst uzmanību. Kas attiecas uz parametru id, sākumā šķita, ka tas ir hašs, pie tam nebija ne jausmas, kāds. Tāpēc vienīgais, kas man vēl ienāca prātā - kas notiks, ja hašu apzināti sabojāšu. Tāpēc parametram id pēdējo burtu "m" nomainīju uz "j". Liels bija mans pārsteigums, kad sistēma izmeta kļūdu, ka fails "./tames/666.pdc" netika atrasts. Jau nopriecājos, ka varēs visām tāmēm piekļūt pa tiešo, izmantojot adresi www.raditaji.lv/tames/666.pdf. Diemžēl tāda iespēja bija liegta. Galu galā nedaudz paķimerējos ar id parametra vērtību un nonācu pie secinājuma, ka katram burtam parametrā id atbilst kāds cits burts, simbols vai cipars faila nosaukumā.
Un no tā izriet, ka:

Li90YW1lcy82NjYucGRm

2NjY ir 666. Savukārt, Li90YW1lcy8 ir ./tames/, bet ucGRm ir .pdf. Kādā veidā no 4 simboliem es ieguvu 3 ciparus? Lieta tāda, ka daži cipari tika "šifrēti" ar vienu simbolu, bet daži ar diviem. Turklāt, dažādās vietās dažādi simboli nozīmēja dažādas vērtības un nebija savā sarpā aizvietojami - šajā gadījumā ciparus 6 apzīmēja gan "2", gan "Nj", gan "Y". Te būs tabula, kā tas izskatās dzīvē:

tabula1


Piemēram, ja gribas piekļūt tāmei ar numuru 123, faila dl.php parametra id vertība ir jānomaina uz "Li90YW1lcy8xMjMucGRm". Tie, kuri ir acīgāki, noteikti pamanīs, ka burtiem ir zināma secība. Tā, pirmajam ciparam nobīde ir viens burts, otrajam - 16, bet trešajam - 4. Skripts, kurš lejuplādē visus PDF failus, sākot no 100.pdf, beidzot ar 999.pdf, no mājaslapas www.raditaji.lv ir pieejams šeit. Vienīgais, kas šim skriptam vēl nepieciešams, ir nomainīt sīkdatni (cookie) uz kaut ko, kas strādā. Un vēl ir jāizlabo viena kļūda. Kā to izdarīt, lai paliek pašu ziņā, vienīgi varu piebilst, ka, reģistrējoties raditaji.lv mājaslapā, klienta kods netiek pārbaudīts, un piereģistrēties ar klienta kodu "12345678" nevajadzētu būt problēmām. Vai atbilstošam klientam pienākas redzēt citu māju tāmes, netiek pārbaudīts.


Sensitīvie dati


Kad bija iespēja piekļūt visām tāmēm, bija pamatotas aizdomas, ka piekļūt varēs arī jebkuram rēķinam, kurš ir sistēmā - vienīgā problēma, ka pašam neviena e-rēķina vēl nebija, tāpēc nezināju, kādu faila nosaukumu nepieciešams iegūt. Pieteicos uz rēķinu saņemšanu elektroniski un gaidīju, kad pienāks jaunais rēķins. Tāpat sarunāju ar savu pusmāsu, ka viņa arī piereģistrējas sistēmā, lai no sava konta varu tikt pie viņas rēķina. Tas ar domu, lai man nav jāpiekļūst datiem, kuri man nepienākās, un lai man pēc tam neko nevarētu piešūt.
Kad beidzot pienāca epasts par to, ka raditaji.lv lapā ir publicēts jauns rēķins, viss tiešam izrādījās tāpat, kā ar tāmēm. Parametri rēkina failam šoreiz izskatās šādi:
http://raditaji.lv/dl.php?id=Li9iaWxscy8yMDEyLzAyLzEyMzQ1Njc4LnBkZg==
Šajā gadījumā sanāk, ka "Ey" ir "12" (gads), "Ay" ir "02" (februāris), bet "EyMzQ1Njc4" ir klienta kods - 12345678. Zemāk ir tabula, kurā redzams, kuriem simboliem kādi cipari atbilst:

tabula2


Lieki piebilst, ka no sava konta pusmāsas rēķinu, zinot viņas klienta kodu, lejuplādēju bez problēmām. Skripts, kurš automātiski konvertē ievadītos datus uz raditaji.lv URL, nepieciešams tikai norādīt gadu, mēnesi un klienta kodu, pieejams šeit.


Unikālie klienta kodi


Ir divi veidi, kā noskaidrot klienta kodu. Pirmais variants - kaimiņu klienta kodi, visticamāk, ir kaut kādā secībā (līdzīgi kā tāmes), tāpēc ar kaimiņu rēķiniem var iepazīties, pakāpeniski samazinot vai palielinot savu klienta kodu. Otrais variants ir piezvanīt uz namu pārvaldi un mēģināt no viņiem pēc adreses noskaidrot interesējošā klienta kodu. Mēģināju to izdarīt ar iecirkņiem Daugava un Pļavnieki, pirmajā gadījumā teica, lai ierodos namu pārvaldē ar pasi, bet otrajā, lai saņemtu informāciju, bija jānosauc uzvārds.


ROT


Te var redzēt secinājumus, kas notiek, ja pie programmēšanas ķeras klāt diletanti, kuri no tā neko daudz nesaprot. Varbūt viņiem ar zelta pirkšanu un pārdošanu labāk veicas. Es jau tagad varu iedomāties, kā tur kāds sēdēja ar putām uz lūpām un programmēja to lapu, pie sevis sajūsminoties, ka ir radījis vislabāko "šifrēšanu", kāda jebkad ir bijusi. Tādiem nolūkiem lieto hašus, un neko pat vairs nevajag pašam izgudrot. Tāpat nepieciešams pārbaudīt, vai attiecīgajam lietotājam ir atļauta piekļuve datiem, kurus tas pieprasa.
Ievērojot tradīcijas, vakar par atklātajām nebūšanām informēju mājaslapas izstrādātājus, bet šodien arī Informācijas tehnoloģiju drošības incidentu novēršanas institūciju (cert.lv):
Feb 22 16:46:52 sargon postfix/smtp[26406]: 574619E9E0: to=xxxxxx@raditaji.lv, relay=raditaji.lv[85.31.101.222]:25, delay=2.9, delays=0.28/0/2/0.53, dsn=2.0.0, status=sent (250 OK id=1S0DSz-0006qM-P2)
Feb 23 15:43:17 sargon postfix/smtp[30008]: 3A2DB9E9D4: to=xxxxxx@cert.lv, relay=mx.latnet.lv[92.240.66.33]:25, delay=0.62, delays=0.47/0/0.02/0.13, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as CC5A7C102)


Papildināts 2012/02/24:
Šorīt dl.php skripts beidzot tika nomainīts ar dll.php, tomēr izskatās, ka cilvēks no kļūdām nemācās. Izrādās, ka problēmas ar mājaslapu raditaji.lv jau ir bijušas pirms tam: defense.lv/2011/12/16/raditaji-lv-rekini-pieejami-tresajam-personam/
Ņemot vērā, ka, kā komentāros norādīja Einārs, izmantojot failu dl.php, ir iespējams piekļūt arī citiem failiem, t.sk. pašam dl.php un /inc/utils.inc, nebija sarežģīti noskaidrot, ka jaunais algoritms izskatās sekojoši:
function encodeStr($s)
{
$out='';
$value=25;

for ($i=0; $i<strlen($s); $i++)
{
$out.=chr(ord($s[$i])+$value);
$value=($value+17+$i)%255;
}

return base64_encode($out);
}

Pirms base64 kodēšanas, burtiem tiek mākslīgi pielikta nobīde, sākumā 25, ar katru nākamo simbolu par 17, 18, 19 utt. Nekādas pārbaudes, vai lietotājam drīkst piekļūt savam rēķinam joprojām netiek veiktas. Te būs daži interesanti linki:
/inc/utils.inc: http://raditaji.lv/dll.php?id=R1mlvcanAxkmQmM6kbPG
/inc/env.inc: http://raditaji.lv/dll.php?id=R1mlvcan8xMzBFl6iw==
/inc/../dll.php: http://raditaji.lv/dll.php?id=R1mlvcanvNPsOlx4VrXL8g==
Interesanti, kas ir failā /inc/db.inc...
/ petruha - http://petruha.bsd.lv/ /
comments
Einārs <einars(at)spicausis.lv>:
Mistiskais kods ir parastākais base64.
Li90YW1lcy82NjYucGRm, kā jau tu minēji, ir ./tames/666.pdf, un raisa interesantus jautājumus par to, vai/kur vēl šādi var ielīst ar dl.php, ../ārpus tāmju mapītēm, utt.
petruha:
Einār, paldies, tev, protams, ir taisnība.
petruha:
dl.php tiešām nepārbauda pilnīgi neko, pirms dl.php tika noņemts no servera, bija iespējams piekļūt arī visiem php failiem.
Lietotājs <Sistematik(at)inbox.lv>:
Nu un ko tu panāci? Vai tu par šo pakalpojumu maksā? Pats rakstīji, ka vienīgā vieta, kur apskatīties tāmi ir šī lapa. Nu aizklapēs to lapu, varēsi kājām staigāt uz iecirkni un prasīt to tāmi un e-rēķinus kādai ūsainai vecenei. Stulbs tu esi, vienvārdu sakot.
diletants <diletants(at)somemailbox.lv>:
Ja durvis stāv vaļā, ienākot dzīvoklī un paņemot 100Ls no galda - tāpat tā būs zagšana.

Kāpēc lai nepatērētu spēkus tam, lai kaut ko radītu pašam? Zināšanas ir.
Dīvaini, ka principā talantīgs cilvēks nevar atrast citu veidu kā izpausties.
Mārcis -> Diletants <marcis.lielturks(at)gmail.com>:
Interesanta pieeja. Tātad, ja kaimiņš zvana un saka, ka Tu neesi aizslēdzis savu dzīvokli un pat atstājis durvis pusvirus, tad tu viņu pasūti un saki, lai atrod labākas veidu kā izpausties?

Šajā gadījumā lapa nav kvalitatīvi izstrādāta un labi, ka tā nav e-vēlēšanu platforma vai vēl kaut kas nopietnāks. Cerams, ka izstrādātājs nākotnēm no kļūdām mācīsies.
petruha:
Lietotājs & diletants,

http://en.wikipedia.org/wiki/Full_disclosure
Ja par citiem gadījumiem vēl var strīdēties, šajā gadījumā FD pilnīgi noteikti ir vislabākais, ko darīt - galvenokārt tā iemesla dēļ, ka problēmas netiek atrisinātas (vispirms faili pieejami pa tiešo, pēc tam slēpti izmantojot base64, pēc tam ar kaut kādu stulbu nobīdi, tā vietā, lai vienreiz to izdarītu normāli). Pilnīgi bezdatbildīga attieksme pret svešu cilvēku privātiem datiem. Un par to jau tā kā būtu jāsoda.
petruha:
"Vai tu par šo pakalpojumu maksā? Pats rakstīji, ka vienīgā vieta, kur apskatīties tāmi ir šī lapa."
Nav ne jausmas, vai tā ir labdarība, vai arī par to ir samaksājis Rīgas namu pārvaldnieks.
BlackHalt:
Es brīnos, ka tā raditaji.lv lapele vēl joprojām nav slēgta.
To uz otkatiem balstīto "izstrādājumu" bija jāslēdz jau tad, kad tos failus varēja nolasīt pa taisno.
Labāk es skrienu ar rēķinu pie ūsainās tantes, nekā mani dati klīst apkārt pa internetu.

A ja kāds atkal kārtējo reizi piemin to stulbo salīdzinājumu ar atvērtajām durvīm, man smiekli vairs nenāk.

Es ceru, ka tos padebīļus, kas "izstrādāja" to lapeli raditāji.lv paņems pie dziesmas. Sliktākajā gadījumā atlaidīs no darba.

Kam man jāraksta iesniegums, lai to raditāji.lv nekavējoties slēgtu?
lietotajs <sistematik(at)inbox.lv>:
Sev uzraksti. Negribi, lai tavi dati klīst pa internetu, neizmanto internetu vispār.
Vika <Elementra(at)inbox.lv>:
"Vai tu par šo pakalpojumu maksā?
http://bauskasdzive.diena.lv/reklamraksti/velosipedi-visai-gimenei-par-draudzigam-cenam-154012?
Vika <bicyclers(at)inbox.lv>:
https://credit24.com/lv/aizdevumu-veidi/sms-kredits/
add comment*
author:
email:
piecpadsmit:
comment:


* ja iztiksi bez spama, offtopika un muljkjiibaam, iespeejams, ka tavs koments netiks izdzeests.
« back

valid xhtmlvalid css