4. Nesaugi tiesioginė prieiga prie objektų
Web aplikacijos dažnai naudoja objekto vardą ar raktą, kuomet generuojamas Web puslapis. Neretai pamirštama šių objektų pasiekiamumą apsaugoti nuo vartotojo įvesties manipuliacijų. Paprastas tokio pažeidžiamumo pavyzdys yra Web scenarijus, tiesiogiai atvaizduojantis vartotojo pasirinktą bylą (file inclusion[28] tipo pažeidžiamumai). Šio tipo pažeidžiamumo Damn Vulnerable Web App modulyje naudojamas URL atrodo taip:
http://127.0.0.1:8080/dvwa/vulnerabilities/fi/?page=include.php
Tarkime, kad byloje C:/slaptazodziai.txt yra saugoma konfidenciali informacija (vartotojai ir jų slaptažodžiai), bandome vykdyti šią URL užklausą:
http://127.0.0.1:8080/dvwa/vulnerabilities/fi/?page=c:slaptazodziai.txt
Rezultate gaunamas puslapis su įtrauktu bylos turiniu:
Žemiau pateiktas dar vienas pavyzdys (iš OWASP), kuomet SQL užklausai formuoti yra naudojami nepatikrinti duomenys:
String query = "SELECT * FROM accts WHERE account = ?"; PreparedStatement pstmt = connection.prepareStatement(query , ... ); pstmt.setString( 1, request.getParameter("acct")); ResultSet results = pstmt.executeQuery();
Norint išnaudoti šį pažeidžiamumą, tereikia pakeisti parametro ‘acct’ reikšmę į pasiekti norimos sąskaitos numerį, pavyzdžiui:
http://bank.com/viewAcct.jsp?acct=1
Saugantis nuo tokio pobūdžio atakų, Web aplikacija turėtų visada patikrinti autentifikuoto vartotojo prieigos teises į užklaustą objektą. Tai gali būti įgyvendinama
integruojant atitinkamus prieigos mechanizmus su sesijos ar vartotojo objektais (netiesioginė prieiga). Kai kuriais atvejais baltojo sąrašo (whitelisting) apsisaugojimo
technika taip pat gali būti naudinga.