Visar inlägg med etikett hack. Visa alla inlägg
Visar inlägg med etikett hack. Visa alla inlägg

28 april, 2009

Säkerhet/Webbutveckling: Stjäla källkod från PHP/ASP/JSP

Förord
Denna artikel handlar om ett sätt att få tag på källkoden för ett serverbaserat skript som exempelvis PHP, ASP (även .NET) och JSP med flera. Observera dock att det inte går på alla servrar och skript. Det hela går ut på att utvecklaren inte tänker igenom sin uppladdning och redigering av skripten tillräckligt.

Introduktion
Jag har för mig att jag har läst om detta någonstans på Internet i en artikel om just säkerhet vid webbutveckling och nu upptäckte jag det själv av en slump och lite nyfikenhet. Det går att visa källkoden för serverbaserade skript som t.ex PHP, ASP och JSP på några olika sätt och ett av dem tänker jag beskriva lite för er om nu i denna artikeln.

Server Operativsystem
Min testserver Apache2 kör på Ubuntu 8.10 med PHP 5.2.6 och säkerhetsbristen kan fungera även på andra system men det har jag inte prövat. Som textredigerare för skripten använder jag programmet gedit, men i vanliga fall använder jag Zend Studio.

Vad är säkerhetsbristen?
Bristen går ut på att vissa textredigerare sparar en säkerhetskopia av skripten innan de sparas. I Ubuntu 8.10 Intrepid använder jag gedit för teständamål och utan att jag tänkte på det så skapade programmet säkerhetskopior av mina php-skript och placerade dem i samma katalog. Det är ju bra att det gör det automatiskt men ur säkerhetssynvinkel är det dåligt.

Varje säkerhetskopia får suffixet "~" (se exempel 1)
Exempel 1:
index.php redigeras och sparas vilket även skapar filen index.php~
Om man sedan råkar kopiera alla filerna (även inkluderat säkerhetskopiorna) till sin produktionsserver så har man en ganska stor säkerhetsbrist. Detta händer ibland och det räcker med att utvecklaren inte tänker på det och glömmer det en gång. Då sparas en extra kopia med källkoden som kan laddas ned istället för att tolkas av PHP interpretatorn hos Apache.

Laga säkerhetshålet
I programmet gedit som jag använder kan man välja att ställa in så att inga säkerhetskopior skapas före man sparas sina dokument (i vårt fall skript).
gedit > Edit > Preferences > Editor
Ta bort markeringen för "Create a backup copy of files before saving". Se bild 1.

(Klicka på bilden för att förstora) Bild1
Ta bort markeringen för att inte spara några kopior av filerna du redigerar.

Observera att du inte få glömma att radera eventuella säkerhetskopior som redan har sparats vid ett eller flera tidigare tillfällen.

Resultat av säkerhetshål

(Klicka på bilden för att förstora) Bild 2
Skriptet som körs är http://localhost/phpinfo.php


(Klicka på bilden för att förstora) Bild 3
Om man istället går till URL http://localhost/phpinfo.php~ visas källkoden för phpinfo.php från en säkerhetskopia.

Analys
Allt går ut på att utvecklaren är klantig och missar att det även finns gamla säkerhetskopior av skripten i den publika webbkatalogen som är tillgänglig för alla besökare. Om någon besökare är illvillig så kan det hända att han eller hon prövar att lägga till tecknet tilde "~" efter ett filnamn.

Hacket har störst chans att lyckas om det underliggande operativsystemet för servern är någon typ/variant av Linux/Unix (*nix) eller om utvecklaren sitter och programmerar i en sådan miljö lokalt på sin dator (server kan då vara t.ex IIS) och sedan laddar upp alla filer (alla skript inklusive säkerhetskopior) till den publika servern.

Det behöver inte vara "~" (vanligen kallas det för temporär i *nix) som läggs bakom utan även ".bak" som står för backup som är vanligt i Windowssystem.

Slutord
Var försiktiga och tänk noga på att det kan finnas en kopia av din kod som går att ladda ner. Man behöver endast gissa sig till filens filändelse (suffix).

I denna artikeln beskrev jag hur man på ett sätt kunde få tag på källkoden för ett serverbaserat webbskript (t.ex PHP, ASP, JSP, ...) genom att ladda ner publika säkerhetskopior från webbservern.

09 februari, 2008

Hack: Firefox 2.0.0.12 osäker?

Enligt webbsidan www.0x000000.com så är senaste patchen för Mozilla Firefox 2.0.0.12, som släpptes för bara några timmar sedan, osäker. Problemet är att man kan få tillgång till webbläsarens alla filer och inställningar via ett simpelt Javascript. För att informera kan jag säga att det vanligtvis är sökvägen "C:\Program Files\Mozilla Firefox" som då blir åtkomlig i en standardinstallation.

Koden finner man under titeln "Firefox vulnerable by default" på deras webbsida som även beskriver hur det är möjligt. Om ni inte vill råka ut för detta kan ni Googla efter "noscript firefox plugin". Om ni inte vill använda tillägget kan ni avaktivera Javascript via menyn "Verktyg->Inställningar->[flik]Innehåll->[kryssa av]Aktivera Javascript" i Firefox.

17 mars, 2007

Tiberium Wars - Hack

Jag har precis spelat klart Command and Conquer 3 - Tiberium Wars demo och kört några matcher på Skirmish. Jag har redan upptäckt buggar i uppdragen och lite andra häftiga saker.

Spela som NOD i demo:
  1. Gå till "Skirmish".
  2. I menyn där man väljer lag: GDI/NOD/Scrin ska man hålla musen över alternativet NOD.
  3. Klicka med vänster musknapp samtidigt som du trycker på bokstaven N på ditt tangentbord. ('N' som i NOD)
  4. Om det fungerar ser man nu att det står NOD istället för det förvalda GDI.

Möt GDI AI:
  1. Gör samma som ovan fast för datorspelaren (AI).
  2. Istället för N trycker du G.

Man kan också ändra alternativet "Balance" till ett annat. Gör bara som ovan fast använd första bokstaven i ordet + musklick.

OBS!
Detta hack/trick fungerar inte med valet Scrin.

Välkomna till bloggen

Välkomna ska ni vara kära besökare. Jag skriver om IT för att det är kul och för att jag vill dela med mig av information och kunskap. Jag försöker hålla bloggen så kategoriserad som möjligt för att ni enklare ska hitta intressanta länkar och artiklar.