Common Gateway Interface (CGI) är ett vanligt sätt för en webbserver att skicka en webbanvändares begäran till ett körbart program (ett CGI -skript) och få resultaten tillbaka för att visa till användaren. I huvudsak är det en bro mellan en webbserver och externa applikationer. Tillbaka i de tidiga dagarna av webben var CGI det primära sättet att hantera dynamiskt innehåll utöver enkla HTML -sidor.
På grund av dess arkitektur och ålder presenterar CGI emellertid flera betydande webbsårbarheter:
* Kommandoinjektion: Om ett CGI -skript inte sanerar användarinmatning korrekt innan du använder det i skalkommandon (t.ex. med hjälp av `System ()` eller liknande funktioner på språk som Perl, Python eller C), kan en angripare injicera skadliga kommandon. Till exempel, om ett skript konstruerar ett kommando som `ls /tmp /` + `$ _get ['filnamn']", kan en angripare skapa en "filnamn" -parameter för att utföra godtyckliga kommandon på servern och potentiellt få full kontroll.
* Path Traversal: I likhet med kommandoinjektion, om skriptet inte validerar sökvägar som tillhandahålls av användaren, kan en angripare kunna komma åt filer utanför den avsedda katalogen. Till exempel, om ett skript tillåter användare att visa filer med en parameter som "Visa? File =/etc/passwd", kan en angripare prova "Visa? File =../../.. etc/passwd" för att läsa känsliga systemfiler.
* Cross-Site Scripting (XSS): Om ett CGI-skript inte sanerar korrekt användarstödda data som ingår i HTML-utgången, kan det leda till reflekterade eller lagrade XSS-sårbarheter. En angripare kan injicera skadlig JavaScript -kod som kommer att köras i offrets webbläsare, potentiellt stjäla kakor eller annan känslig information.
* buffertöversvämning: Dåligt skrivna CGI -skript kan vara mottagliga för buffertöverskridande sårbarheter. Om en angripare skickar mer data än skriptets buffert kan hantera, kan det orsaka en krasch eller låta angriparen köra godtycklig kod.
* förnekande av service (DOS): Ineffektivt skrivna CGI -skript kan riktas av DOS -attacker. Ett stort antal förfrågningar kan överväldiga skriptet eller serverresurserna, vilket gör webbplatsen otillgänglig.
* Informationsläckage: Ett CGI -skript kan oavsiktligt avslöja känslig information genom felmeddelanden, loggfiler eller hur det hanterar undantag.
* Säkerhet Miskonfiguration: Felaktigt konfigurerade CGI -skript eller deras tillhörande filer (t.ex. felaktiga behörigheter) kan leda till olika sårbarheter.
Varför CGI är mindre vanligt nu:
CGI:s sårbarheter och prestationsbegränsningar har lett till dess nedgång i popularitet. Moderna webbramar som PHP, Pythons Django/kolv, Ruby on Rails, Node.js, etc., erbjuder mycket bättre säkerhet och prestanda genom funktioner som inbyggd ingångsranering, förbättrad felhantering och mer robusta säkerhetsmetoder. Dessa ramverk hanterar interaktionen mellan webbservern och applikationslogiken på ett mycket säkrare och effektivt sätt än CGI.
Sammanfattningsvis, medan CGI var historiskt viktigt, gör dess inneboende sårbarheter det till ett riskabelt val för moderna webbapplikationer. Att använda säkra, väl underhållna och regelbundna uppdaterade ramverk är avgörande för att skydda mot dessa attacker.