vad är en RCE-Attack (Remote Code Execution)?
exekvering av fjärrkod används för att exponera en form av sårbarhet som kan utnyttjas när användarinmatning injiceras i en fil eller sträng och hela paketet körs på programmeringsspråkets parser. Detta är inte den typ av beteende som visas av utvecklaren av webbapplikationen. En fjärrkörning av kod kan leda till en fullskalig attack som skulle äventyra en hel webbapplikation och webbservern. Du bör också notera att praktiskt taget alla programmeringsspråk har olika kodutvärderingsfunktioner.
en kodutvärdering kan också inträffa om du tillåter användaringångar att få tillgång till funktioner som utvärderar kod på samma programmeringsspråk. Denna typ av åtgärd kan avsiktligt genomföras för att få tillgång till programmeringsspråkets matematiska funktioner eller av misstag eftersom den användarstyrda ingången är utformad av utvecklaren för att vara inne i någon av dessa funktioner. Det är inte tillrådligt att utföra denna handlingslinje. Många tycker att det är skadligt att ens använda kodutvärdering.
exempel på kod
Låt oss ta en titt på ett exempel på en kodutvärderingsattack.
det kan verka som en bättre ide att ha dynamiskt genererade variabelnamn för varje användare och lagra deras registreringsdatum. Detta är ett exempel på hur du kan göra det är gjort i PHP
eval("$$user = '$regdate');As long as the username is controlled by the user's input, an attacker may create a name like this:x = 'y';phpinfo();//
PHP-koden som genereras skulle likna detta:
$x = 'y';phpinfo();// = 2016';
du kan nu se att variabeln kallas x men har värdet y. när angriparen kan tilldela variabeln ett annat värde kommer han att kunna skapa ett nytt kommando med hjälp av ett semikolon (;). Han kan nu fylla i resten f strängen. På så sätt får han inga syntaxfel i sitt arbete. Så snart han kör den här koden kommer utmatningen från phpinfo att visas på sidan. Du bör alltid komma ihåg att det är möjligt i PHP och andra språk med funktioner som kan bedöma input.
ordna fjärrkörning av kod efter Ursprung
majoriteten av de utmärkta RCE-svagheterna beror på vissa grundläggande orsaker som kan följas tillbaka till utgångspunkten. Grupperingen av Fjärrkodkörning genom början undersöks enligt följande.
dynamisk kodkörning
dynamisk kodkörning är av alla konton den mest erkända grundläggande orsaken som uppmanar en kodkörning. Många programmeringsdialekter planeras i en sådan utsträckning att de kan producera kod med en annan kod och köra den direkt. Den här tanken är en fantastisk som hanterar olika komplexa problem. Hur som helst, en illvillig angripare kan kontrollera denna ide för att förvärva RCE-åtkomst och kapacitet.
vanligtvis beror koden som produceras snabbt på viss klientinmatning. Vanligtvis innehåller koden den information som har kommit ihåg för en specifik struktur. När en malign aggressor förstår att den kraftfulla kodåldern kommer att använda viss information, kan det göra en väsentlig kod som en typ av åtkomst för att separera applikationen. Om kundernas bidrag inte granskas kommer koden att utföras på sitt mål.
när du väljer att titta noga är dynamisk kodkörning ansvarig för två typer av RCE-baserade övergrepp; omedelbar och kretslös.
direkt
när man hanterar en illustration av direkt unikt hyllningsutförande inser aggressorn att deras feedback skulle användas för att producera kod.
indirekt
på ett avvikande sätt är det oroat över den kraftfulla kodåldern med klientingångar. Klientinmatningen är vanligtvis föremål för minst ett lager. En del av lagren kan vara ansvarig för att ändra bidraget innan det slutar med dynamisk kodålder. Dessutom kan dynamisk kodålder vara en efterföljande inverkan och inte omedelbart utnyttjande av informationen. Det är anledningen till att det kanske inte är klart för klienten som ger den information som kommer att fylla i som ett strukturblock i ett kodskrot som skulle utföras avlägset.
deserialisering
deserialisering är en otrolig guide för att skildra den nuvarande omständigheten. Ingen kraftfull kodålder borde inträffa under deserialisering. Intermittent är detta den situation som händer när det serialiserade objektet innehåller råa informationsfält eller objekt av jämförbar sort. Saker blir mer förvirrade när elementen i artikeln serialiseras. Deserialisering skulle också innehålla en viss grad av dynamisk kodålder.
det kan verka som kraftfulla dialekter är de enda som påverkas av arbetsserialisering. Förutsatt att detta är sant skulle frågan vara mycket begränsad. Hur som helst, denna situation är också till stor hjälp i statiska dialekter. Det är svårare att åstadkomma med det statiska språket men det är verkligen inte möjligt.
intermittent hanterar genomförandet av denna ide deserialiseringsproducerad mellanliggande kapacitet. Åldersobjekt vid körning är bara tänkbara med dynamisk kodålder. Detta innebär att om informationen som kommer att deserialiseras görs i en uppmaning som görs avlägset, kan en illvillig angripare kommandera och justera den. Runt planerade kodbitar kan också bekanta sig med stunt den kraftfulla kodåldern för att utföra kapaciteten när den införlivas som en del av deserialiseringen.
Minnessäkerhet
ytterligare en grundläggande orsak till RCE-övergrepp identifierar med minnessäkerhet eller API-säkerhet. Memory wellbeing hänvisar till motverkan av kod från att komma till grundläggande bitar av minne som det inte instate. Det är vanligt att förvänta sig att brist på minnessäkerhet skulle leda till obehörig åtkomst till information. I vilket fall som helst är arbetsramen och utrustningen beroende av minne för att lagra körbar kod. Metadata som identifierar med kodkörning hålls i minnet. Åtkomst till denna del av minnet kan leda till ACE och RCE. På detta sätt, Vad är en del av orsakerna till problem med minnesvälbefinnande?
bristerna i produktens plan
brister i produktkonfigurationen är en typ av minnesvälbefinnande svaghet som händer där det finns ett planeringsfel i en viss dold del. Intermittent kan den bristande delen vara en kompilator, översättare, virtuell maskin eller till och med arbetsramdelen eller biblioteket. Det finns olika fläckar i denna klass. En del av inkorporeringen;
buffertspill
buffertspill dessutom hänvisade till som buffertöverläsning, kan användas för att hänvisa till en grundläggande och känd metod som används för att bryta minnesvälbefinnande. Detta angrepp utnyttjar en specifik planfel eller en bugg för att hålla kontakten med minnescellerna som ligger mot minneskuddens slut. Stödet skulle komma tillbaka från ett autentiskt samtal till offentligt API. Vagga anspelar dock bara på en startplats Hot används för att registrera de faktiska minnesplatserna för en viss artikel eller programräknare. Deras separation från vaggan är anmärkningsvärd eller kan utan tvekan spekuleras. Att undersöka koden när den görs tillgänglig eller felsöka hela programkörningen vid körning kan bli användbar för en aggressor som behöver titta på relativa positioner.
detta innebär att en vagga översvämning skulle tillåta att det i viss mån otillgängliga minnet ändras. Vaggan kan hittas i platsutrymmet för ytterligare en maskin och den kommer att ändras genom att ringa ett avlägset API. Detta kommer att göra tillträde till minnet på fjärrmaskinen. Det finns många sätt att utnyttja denna typ av tillgång för att göra en RCE dubbelhandel. Det finns en övergripande misstanke om att förutsatt att det finns en kuddflödessvaghet, är ett RCE-baserat angrepp inte av korten. Detta innebär att kodinnehavare åberopas för att snabbt fixa sina stödflöden innan ett RCE-angrepp inträffar.
Utrustningsdesignfel
Minnesvälbefinnande övergrepp kan också bero på utrustningskonfigurationsfel. De är inte lika normala som programmeringsattacker och är mycket svårare att känna igen. Ändå påverkar denna typ av övergrepp enormt ramverket.
konsekvenser av sårbarhet för utvärdering av fjärrkod
en angripare som kan utföra en Fjärrkodbaserad attack på ett system med framgång skulle kunna utföra andra kommandon genom att utnyttja programmeringsspråket eller webbservern. På många programmeringsspråk skulle angriparen kunna beordra systemet att skriva, läsa eller ta bort filer. Det kan till och med vara möjligt att ansluta till olika databaser med det attackerade systemet.
varför startar angripare RCE-attacker?
även om det inte finns någon särskild anledning till att angripare väljer att utnyttja RCE-exploatering för att attackera en webbapplikation, finns det ingen särskild anledning. Det är bara att vissa skadliga tycker att det är lätt att dra nytta av denna kodkörning för att få tillgång till dina system.
Hur Förhindrar Du Fjärranslutna Kodkörningsattacker?
till att börja med bör du undvika användning av användarinmatning i utvärderad kod. Det bästa alternativet i denna situation skulle vara att helt undvika att använda funktioner som eval. Det anses vara en form av dålig praxis och kan lätt undvikas. Det rekommenderas också att du aldrig ska låta en användare redigera innehållet i filer som kan ha analyserats av det aktuella programmeringsspråket. Ofta inkluderar detta att låta en användare skapa namn och filtillägg som han vill ladda upp eller skapa i webbapplikationen.
det här är några av de saker du inte bör göra för att undvika RCE-baserade attacker. De inkluderar:
- sanering användarinmatning. Ofta är detta svårt att uppnå eftersom det finns en stor mängd förinstallerade förbikopplingar och begränsningar.
- Låt en användare bestämma eller skapa tillägget eller innehållet i filer som ska användas på webbservern. Han / hon måste använda många säkra metoder när han hanterar filöverföringar eller riskerar att viktig information hamnar i fel händer.
- passera alla användarstyrda input i systemet återuppringning eller utvärderingsfunktioner
- aktivt svartlista några speciella tecken eller funktionsnamn. Detta bör undvikas precis som sanering av användarinmatning. Men det är oerhört svårt att genomföra.