Pagsulay Alang sa SQL Injection Vulnerabilities

Ang mga pag-atake sa SQL Injection nagpahamtang og dakong risgo sa mga aplikasyon sa web nga nagsalig sa backend sa database aron makamugna og dinamikong sulod. Sa niini nga matang sa pag-atake, ang mga hack nagmaniobra sa usa ka aplikasyon sa web sa pagsulay sa pag-inject sa ilang kaugalingong mga SQL nga mga sugo ngadto sa mga gi-isyu sa database. Alang sa usa ka pananglitan, tan-awa ang artikulo nga SQL Injection Attacks sa Databases. Niining artikuloha, atong susihon ang daghang mga paagi nga masulayan nimo ang imong aplikasyon sa web aron mahibal-an kon sila ba huyang sa pag-atake sa SQL Injection.

Automated SQL Injection Scanning

Ang usa ka posibilidad mao ang paggamit sa usa ka automated web application vulnerability scanner, sama sa HP's WebInspect, IBM's AppScan o Cenzic's Hailstorm. Kini nga mga himan sa tanan nga paghalad sa sayon, automated nga mga paagi sa pag-analisar sa imong mga aplikasyon sa web alang sa potensyal nga SQL Injection kahuyangan. Apan, kini mahal kaayo, nga nagdagan sa $ 25,000 kada lingkoranan.

Manual SQL Injection Tests

Unsa ang usa ka kabus nga aplikante nga aplikante nga buhaton? Mahimo ka nga makadagan sa pipila ka batakang mga pagsulay aron mahibal-an ang imong mga aplikasyon sa web alang sa mga kahuyangan sa SQL Injection gamit ang wala'y usa ka web browser. Una, usa ka pulong sa pasidaan: ang mga pagsulay nga akong gihulagway nangita lamang sa sukaranan nga SQL Injection flaws. Sila dili makamatikod sa mga advanced nga mga pamaagi ug mga medyo lisud gamiton. Kon makabayad ka niini, adto uban sa usa ka automated scanner. Bisan pa, kung dili nimo mapugngan ang tag sa presyo, ang pagsulay sa pagpangita usa ka dako nga unang lakang.

Ang labing sayon ​​nga paagi sa pagtimbang-timbang kon usa ka aplikasyon ang mahuyang mao ang pag-eksperimento sa mga inocuous nga pag-atake sa pag-ineksiyon nga dili makadaot sa imong database kung kini molampos apan maghatag kanimo sa ebidensya nga imong gikinahanglan sa pagtul-id sa problema. Pananglitan, pananglit adunay usa ka yano nga aplikasyon sa web nga nagtan-aw sa usa ka indibidwal diha sa usa ka database ug naghatag og impormasyon sa pagkontak ingon nga resulta. Mahimong gamiton sa maong panid ang mosunod nga format sa URL:

http://myfakewebsite.com/directory.asp?lastname=chapple&firstname=mike

Makahunahuna kita nga kining panid nagbuhat sa database nga pagpangita, gamit ang pangutana susama sa mosunod:

PILI nga telepono FROM directory WHERE lastname = 'chapple' ug firstname = 'mike'

Mag-eksperimento kita niini nga gamay. Uban sa among pangagpas sa ibabaw, makahimo kita og usa ka yano nga pagbag-o sa URL nga nagsulay sa pag-atake sa SQL injection:

http://myfakewebsite.com/directory.asp?lastname=chapple&firstname=mike'+AND+(select+count(*)+from+fake)+%3e0+OR+'1'%3d'1

Kon ang web application wala pa mapanalipdan batok sa pag-ineksiyon sa SQL, kini nga mga panagang sa mga mini nga unang ngalan sa SQL nga pahayag nga gipatuman niini batok sa database, nga miresulta sa:

PILI nga telepono FROM directory WHERE lastname = 'chapple' ug firstname = 'mike' AND (select count (*) gikan sa peke)> 0 OR '1' = '1'

Imong mamatikdan nga ang sintaks sa ibabaw mao ang usa ka gamay nga lahi kay sa orihinal nga URL. Gikuha ko ang kagawasan sa pag-usab sa mga variable sa encoded nga URL alang sa ilang mga ASCII equivalents aron masayon ​​ang pagsunod sa panig-ingnan. Pananglitan, ang% 3d mao ang pag-encode sa URL alang sa '=' nga karakter. Gidugang usab nako ang pipila ka linya sa mga linya alang sa susamang mga katuyoan.

Pag-usisa sa mga Resulta

Ang pagsulay moabut kon imong sulayan nga i-load ang webpage sa URL nga gilista sa ibabaw. Kon ang web application maayo ang binuhatan, kini maghubo sa usa ka mga kinutlo gikan sa input sa dili pa ipasa ang pangutana sa database. Mahimo lamang kini nga usa ka katingad-an nga pagpangita alang sa usa ka tawo nga adunay una nga ngalan nga naglakip sa usa ka pundok sa SQL! Makita nimo ang usa ka mensahe sa sayup gikan sa aplikasyon nga susama sa usa sa ubos:

Kasaypanan: Walay tigpangita nga may ngalan nga mike + AND + (pilia + ihap (*) + gikan sa peke) +% 3e0 + OR 1% 3d1 Chapple!

Sa laing bahin, kon ang aplikasyon dali nga mahulog sa SQL injection, kini ipasa ang pamahayag direkta sa database, nga moresulta sa usa sa duha ka posibilidad. Una, kon ang imong server adunay detalyado nga sayop nga mga mensahe nga nakab-ot (nga dili nimo kinahanglan!), Imong makita ang usa ka butang nga sama niini:

Microsoft Ole DB Provider alang sa ODBC Drivers error '80040e37' [Microsoft] [ODBC SQL Server Driver] [SQL Server] Dili bakak nga ngalan nga ngalan nga 'peke'. /directory.asp, linya 13

Sa laing bahin, kon ang imong web server wala magpakita sa detalyado nga mga mensahe sa sayop, makabaton ka og mas daghang generic nga sayop, sama sa:

Internal Server Error Ang server nakasinati sa usa ka internal nga sayop o misconfiguration ug dili makompleto ang imong hangyo. Palihug kontaka ang tagdumala sa server aron sa pagpahibalo sa panahon nga nahitabo ang sayup ug sa bisan unsa nga mahimo nimo nga nahimo nga mahimong hinungdan sa sayup. Ang dugang kasayuran mahitungod niini nga sayup mahimo nga makuha sa log sa error sa server.

Kon nakadawat ka sa bisan usa sa duha ka mga sayop sa ibabaw, ang imong aplikasyon dali nga mahitabo sa pag-ineksiyon sa SQL injection! Ang pipila ka mga lakang nga imong mahimo aron mapanalipdan ang imong mga aplikasyon batok sa mga pag-atake sa SQL Injection naglakip sa: