KomputilojProgramado

Kio estas la injekto de SQL?

La nombro da retejoj kaj paĝoj en la retejo konstante kreskas. Ĉar la evoluo estas prenita de ĉiuj, kiuj povas. Kaj novaj programistoj ofte uzas nessekvajn kaj malnovajn kodojn. Kaj ĉi tio kreas multajn malplenojn por entruduloj kaj hackers. Ili ankaŭ uzas. Unu el la plej klasikaj vulnerabilecoj estas SQL-injekto.

Iom teorio

Multaj homoj scias, ke la plej multaj retejoj kaj servoj en la reto uzas SQL por stoki la datumbazon. Jen strukturita serĉvorto lingvo kiu permesas kontroli kaj administri la stokado de datumoj. Ekzistas multaj malsamaj versioj de datumbazaj sistemoj - Orakolo, MySQL, Afiŝo. Malgraŭ la nomo kaj tipo, ili uzas la datumajn petojn egale. Ĉi tie estas kie ebla vulnerabilidad. Se la programisto ne povis korekti kaj korekti la peton, la atacanto povas utiligi ĉi tion kaj apliki specialajn taktikojn por akiri aliron al la datumbazo, kaj de tie al la administrado de la tuta retejo.

Por eviti tiajn situaciojn, vi bezonas inteligente optimigi la kodon kaj zorgeme monitori, kiun pridemandado estas procesita de kia maniero.

SQL-injekto-testo

Por establi la ĉeeston de vulnerableco en la reto, ekzistas multaj pretaj aŭtomataj programprogramoj. Sed vi povas realigi simplan teston permane. Por fari tion, iru al unu el la ejoj sub esploro kaj provu kaŭzi datumon de eraro en la trinkejo. Ekzemple, skripto sur retejo eble ne procesas petojn kaj ne kroĉas ilin.

Ekzemple, ekzistas iu_site / index.php? Id = 25

La plej facila maniero estas meti post 25 citaĵoj kaj sendi peton. Se neniu eraro okazis, ĉu ĉiuj petoj estas filtritaj en la retejo kaj procesitaj ĝuste, aŭ ilia eligo estas malŝaltita en la agordoj. Se la paĝo rebootis kun problemoj, tiam ekzistas vulnerabileco por SQL-injekto.

Post kiam ĝi estas trovita, vi povas provi forigi ĝin.

Por efektivigi ĉi vundebleco bezono scii iom pri SQL-demandojn teamoj. Unu el ili estas UNIO. Ĝi kombinas plurajn konsultajn rezultojn en unu. Do vi povas kalkuli la numeron de kampoj en la tablo. La ekzemplo de la unua konsilo similas ĉi tion:

  • Some_site / index.php? Id = 25 UNIO-ELELECT 1.

Plejofte, tia eniro devus produkti eraron. Ĉi tio signifas, ke la nombro da kampoj ne estas egala al 1. Tiel, elektante eblojn de 1 kaj pli, vi povas agordi sian ĝustan numeron:

  • Some_site / index.php? Id = 25 UNIO ELEKTUU 1,2,3,4,5,6.

Tio estas, kiam la eraro ĉesas aperi, ĝi signifas, ke la nombro da kampoj estas divenita.

Ankaŭ ekzistas alternativa solvo al ĉi tiu problemo. Ekzemple, kiam la nombro da kampoj estas granda - 30, 60 aŭ 100. Ĉi tiu estas la GRUPO-komando. Ĝi kolektas la rezultojn de la konsulto laŭ iuj karakterizaĵoj, ekzemple id:

  • Some_site / index.php? Id = 25 GRUPO DE 5.

Se eraroj ne ricevis, tiam estas pli da kampoj ol 5. Tiel, anstataŭigante variantojn de sufiĉe ampleksa gamo, ĝi eblas kalkuli kiom da ili fakte estas.

Ĉi tiu ekzemplo de SQL-injekto estas por komencantoj, kiuj volas provi sian retejon. Gravas memori, ke por aliro ne rajtigita al iu alia estas artikolo de la Kriminala Kodo.

La ĉefaj specoj de injektoj

Efektiviganta vulnerabilojn per SQL-injekto povas esti farita en pluraj manieroj. Tuj poste estas la plej popularaj teknikoj:

  • La UNION la pridemandon la SQL injekto. Simpla ekzemplo de ĉi tiu tipo jam estis konsiderita supre. Ĝi estas efektivigita pro eraro en kontrolado de la venontaj datumoj, kiu ne estas filtrita tute.

  • Eraro-bazita SQL-injekto. Kiel la nomo implicas, ĉi tiu tipo ankaŭ uzas erarojn, sendante esprimojn, kiuj estas sintakse malĝustaj. Tiam, la respondaj titoloj estas interkaptitaj, analizante tion, vi poste povas realigi la SQL-injekton.

  • Stacked pridemandojn la SQL injekto. Ĉi tiu vulnerableco estas difinita per la ekzekuto de sinsekvaj petoj. Ĝi karakterizas per la ligilo ĉe la fino de la signo ";". Ĉi tiu aliro ofte estas efektivigita por aliri la efektivigon de legado kaj skribado de datumoj aŭ administrado de la funkcioj de la mastruma sistemo, se la privilegioj permesas ĝin.

Kompletaj programaroj por serĉado de SQL-vundoj

La programoj, kiuj estas disponeblaj por SQL-injektoj, kutime havas du erojn: scanante la ejon por eblaj vulnerabilecoj kaj uzado por akiri aliron al la datumoj. Ekzistas tiaj utilecoj por preskaŭ ĉiuj konataj platformoj. Ilia funcionalidad multe faciligas la verkon de la retejo por eblo de piĉetado de SQL-injekto.

Sqlmap

Tre potenca skanilo, kiu funkcias kun plej konata DBMS. Elportas diversajn teknikojn por efektivigi SQL-injekton. Havas la kapablon aŭtomate agnoski la pasvorton hash-tipo kaj perŝalti ĝin per la vortaro. Ankaŭ ekzistas la funkcio de alŝuti kaj alŝuti dosierojn de la servilo.

Instalado en la Linukso-medio estas farita per la sekvaj komandoj:

  • Git-klono https://github.com/sqlmapproject/sqlmap.git sqlmap-dev,
  • Cdsqlmap-dev /,
  • ./sqlmap.py --wizard.

Por Windows, estas eblo kun komandlinio, kaj kun grafika uz-interfaco.

JSQL-injekto

JSQL-Injekto estas kruta platformo ilo por provi la uzon de SQL-vundeblecoj. Skribita en Java, do la sistemo devas havi JRE instalitan. Povas trakti petojn por GET, POST, kaplinio, kuketo. Ĝi havas oportunan grafikan interfacon.

Instalado de ĉi tiu programaro estas kiel sekvas:

Wget https://github.com/`curl -s https: //github.com/ron190/jsql-injection/releases | Grep-E -o '/ron190/jsql-injection/releases/download/v[0-9]{1,2}.[0-9]{1,2}/jsql-injection-v[0-9] {1,2}. [0-9] {1,2} .jar ' Kapo-n 1`

La ĵeto estas farita per la komando java -jar ./jsql-injection-v*.jar

Por komenci kontrolanta retejon por vulnerabilidad de SQL, vi devas eniri ĝian adreson en la supra kampo. Ili estas apartaj por GET kaj por POST. Se la rezulto estas pozitiva, listo de haveblaj tabloj aperas en la maldekstra fenestro. Ili povas vidi kaj lerni iujn konfidajn informojn.

Por serĉi administrajn panelojn, uzu la langeton "Admin paĝo". Ĝi uzas specialajn ŝablonojn por aŭtomate serĉi sistemajn rekordojn de privilegiaj uzantoj. De ĉi tiuj, vi povas nur ricevi pasvorton hash. Sed ĝi ankaŭ estas havebla en la iloj de la programo.

Post trovi ĉiujn vulnerabilojn kaj injekti la necesajn konsultojn, la utileco permesos al vi alŝuti vian dosieron al la servilo aŭ, aliflanke, elŝuti ĝin de tie.

SQLi Dumper v.7

Ĉi tiu programo estas facila ilo por serĉi kaj efektivigi vulnerabilojn en SQL. Produktas ĝin surbaze de nomitaj taladroj. Iliaj listoj troveblas interrete. Dorky por SQL-injekto estas speciala ŝablono de serĉaj konsultoj. Kun ilia helpo vi povas trovi potenciale vundeblan ejon per iu ajn serĉilo.

Iloj por trejnado

La retejo itsecgames.com havas specialan ilon, kiu ekzemple montras kiel fari SQL-injekton kaj provi ĝin. Por uzi ĝin, ĝi devas esti elŝutita kaj instalita. Arkivo enhavas aron da dosieroj, kiu estas la strukturo de la retejo. Por instali ĝin, vi bezonos la ekzistantan aron de TTT-servilo Apache, MySQL kaj PHP.

Malpaki la arkivon en retservilo dosierujo, vi devas iri al la adreso eniris kiam instali tiun softvaron. Paĝo kun uzanto-registrado malfermiĝos. Ĉi tie vi devas eniri viajn detalojn kaj alklaki "Krei". Per la tradukado de la uzanto en novan fenestron, la sistemo instigas, ke vi elektu unu el la testaj opcioj. Inter ili ambaŭ priskribis injektojn kaj multajn aliajn testojn.

Vere konsideras ekzemplon de SQL-injekta tipo GET / Search. Jen vi devas elekti ĝin kaj premu "Hako". Antaŭ ol la uzanto aperos serĉoĉeno kaj imitaĵo de certa retejo kun filmoj. Vi povas trapasi filmojn dum longa tempo. Sed estas nur 10. Ekzemple, vi povas provi eniri Iron Man. Filmo aperos, kio signifas, ke la retejo funkcias, kaj la tabloj en ĝi estas disponeblaj. Nun ni devas kontroli ĉu la skripto filtras specialajn signojn, precipe la citaĵon. Por fari tion, aldonu 'al la direkta linio. Kaj, vi devas fari tion post la titolo de la filmo. La retejo ĵetos eraron Eraro: vi havas eraron en via SQL-sintakso; Kontrolu la manlibron, kiu respondas al via MySQL-servilo-versio por la dekstra sintakso por uzi proksime al '%' 'ĉe linio 1, kiu diras, ke la signoj ankoraŭ estas procesitaj malĝuste. Do, vi povas provi anstataŭigi vian peton. Sed vi unue devas kalkuli la numeron de kampoj. Por fari tion, uzu ordo per, kiu estas enkondukita post la citaĵo: http://testsites.com/sqli_1.php?title=Iron+Man 'ordo de 2 - & action = search.

Ĉi tiu komando simple montros informojn pri la filmo, tio estas, la nombro da kampoj estas pli granda ol 2. Duobla interfaco diras al la servilo, ke la ceteraj petoj estu forĵetitaj. Nun ni devas ordigi per, anstataŭigante ĉiujn grandajn valorojn ĝis eraro elsendas. Al la fino, ĝi rezultas, ke la kampoj estos 7.

Nun estas tempo por akiri ion utila de la datumbazo. Nepre necesos modifi la konsulton en la direkta trinkejo iom, alportante ĝin al ĉi tiu formo: http://testsites.com/sqli_1.php?title=Iron+Man 'union selekti 1, datumbazo (), uzanto (), 4, pasvorto, 6, 7 el uzantoj - & action = search. Kiel rezulto de ĝia ekzekuto, vi vidos liniojn kun pasvortoj, kiuj facile povas esti konverteblaj karakteroj uzante unu el la interretaj servoj. Iom pokoldovav kaj elektante la nomon de la kampo per ensaluto, vi povas aliri la registron de iu alia, ekzemple, la administra retejo.

Estas multaj tipoj de injektoj en la produkto, sur kiu vi povas praktiki. Memoru, ke la apliko de ĉi tiuj kapabloj en la reto, sur realaj retejoj, povas esti kriminala.

Injekto kaj PHP

Kiel regulo, PHP-kodo respondecas pri la necesa procesorado de petoj de la uzanto. Sekve, ĝi estas ĉe ĉi tiu nivelo, ke vi bezonas konstrui protekton kontraŭ SQL-injektoj en PHP.

Komence, ĝi valoras danki kelkajn simplajn rekomendojn, sur kiuj vi devas fari tion.

  • La datumoj devas ĉiam esti procesitaj antaŭ esti metitaj en la datumbazon. Vi povas efektivigi ĉi tion per uzantaj ekzistantaj esprimoj aŭ per organizado de demandoj permane. Ĉi tie ankaŭ valoras konsideri, ke la nombraj valoroj konvertiĝas al la tipo necesa;
  • Eviti la peton por la apero de diversaj regaj strukturoj.

Nun iom pri la reguloj de demandado en MySQL por protekti kontraŭ SQL-injektoj.

Kiam vi skribas iujn esprimojn por konsulto, estas grave disigi la datumojn de la SQL-ŝlosilvortoj.

  • SELECTu * el la tablo KIU nomo = Zerg.

En ĉi tiu dezajno, la sistemo povus pensi, ke Zerg estas la nomo de kampo, do vi devas enkludi ĝin en kotizoj.

  • SELECTu * el la tablo KIU nomo = 'Zerg'.

Tamen, ekzistas situacioj kie la valoro mem enhavas citaĵojn.

  • Elektu * el la tablo KIU nomo = 'Kotizo de Ivo'.

Ĉi tie, nur parto de la kato estas procesita, kaj la resto povas esti perceptita kiel teamo, kiu, nature, ne estas. Sekve, okazas eraro. Do vi bezonas ekranĉi ĉi tiun tipon de datumoj. Por fari tion, uzu la backslash- \.

  • SELECTu * el la tablo KIU nomo = 'kat-e' Ivory. '

Ĉiuj supre aplikiĝas al kordoj. Se la ago okazas kun nombro, tiam ĝi ne bezonas citaĵojn aŭ batalojn. Tamen ili devas nepre devige konduki al la postulata tipo de datumoj.

Estas rekomendo, ke la kampnomo devus esti ligita en backkote. Ĉi tiu simbolo estas sur la maldekstra flanko de la klavaro, kune kun la tilde "~". Ĉi tio estas necesa por MySQL distingi precize la kampnomon de ĝia ŝlosilvorto.

Dinamika laboro kun datumoj

Tre ofte, por akiri ajnan datumon de la datumbazo, demandoj generitaj estas dinamike uzataj. Ekzemple:

  • Elektu * De tablo Kie nombro = '$ nombro'.

Ĉi tie, $ nombro estas pasita kiel kampo valora difino. Kio okazos, se la kato-vjetujo trafas ĝin? Eraro okazis.

Por eviti ĉi tiun problemon, kompreneble, vi povas inkludi "magiajn citaĵojn" en la agordoj. Sed nun la datumoj estos pruvoj necesaj kaj ne necesaj. Krome, se la kodo estas skribita permane, vi povas pasigi iom pli da tempo provante krei burglary-resistant system mem.

Por aldoni ŝlosilon mem, vi povas uzi mysql_real_escape_string.

$ Numero = mysql_real_escape_string ($ nombro);

$ Jaro = mysql_real_escape_string ($ jaro);

$ Query = "INSERT INTO tablo (numero, jaro, klaso) VALUES ('$ number', '$ year', 11)".

Kvankam la kodo kreskis en volumo, tamen, eble, ĝi funkcios multe pli sekura.

Anstataŭiloj

La anstataŭiloj estas originalaj markiloj, laŭ kiuj la sistemo lernas, ke speciala funkcio devas esti anstataŭigita en ĉi tiun lokon. Ekzemple:

$ Sate = $ mysqli-> preparu ("SELECT Distrikto FROM Number WHERE Name =?");

$ Sate-> bind_param ("s", $ nombro);

$ Sate-> ekzekuti ();

Ĉi tiu parto de la kodo preparas la konsultan ŝablonon, tiam ligas la variablon kaj ekzekutas ĝin. Ĉi tiu aliro permesas al vi dividi la pretigon de la peto kaj ĝia efektivigo. Tiel vi povas protekti vin per uzado de malbona kodo-injekto en SQL-demandoj.

Kion povas fari atacanto?

Protekto de la sistemo estas tre grava faktoro, kiu ne povas esti neglektita. Kompreneble, simpla retejo-komerca karto estos pli facile restaŭri. Kaj se ĉi tio estas granda portalo, servo, forumo? Kio sekvoj povas esti, se vi ne pensas pri sekureco?

Unue, la hakisto povas rompi la integrecon de la datumbazo kaj forigi ĝin tute. Kaj se la administranto de la retejo aŭ hoster ne faris rezervon, tiam ĝi ne estos facila. Krome, atacanto, pirantado en unu retejon, povas ŝanĝi al aliaj, lokitaj sur la sama servilo.

Poste la ŝtelo de la personaj datumoj de vizitantoj. Kiel uzi ilin - ĉio estas limigita nur per la imago de la hakisto. Sed en ajna kazo, la konsekvencoj ne estos tre agrablaj. Speciale se la financa informo estis enhavita.

Ankaŭ, atacanto povas kunfandi la datumbazon mem, kaj poste forpreni monon por ŝia reveno.

Nekonformado de uzantoj en nomo de la administra retejo, kiu ne estas ilia propra, povas ankaŭ havi negativajn konsekvencojn, kiel eble fraŭdo.

Konkludo

Ĉiuj informoj en ĉi tiu artikolo estas provizitaj por informaj celoj nur. Uzu ĝin nur por provi viajn proprajn projektojn kiam la vulnerabiloj estas detektitaj kaj riparitaj.

Por pli profunda studo pri la tekniko pri kiel realigi SQL-injekton, vi devas komenci kun efektive esplorado de la karakterizaĵoj kaj karakterizaĵoj de la SQL-lingvo. Kiel konsultoj estas faritaj, ŝlosilvortoj, datumtipoj kaj la apliko de ĉio tio.

Ankaŭ vi ne povas kompreni la funkciadon de PHP-funkcioj kaj HTML-elementoj. La ĉefaj vundeblaj punktoj por uzado de injektoj estas la adreso-trinkejo, serĉo kaj diversaj kampoj. La studo pri PHP-funkcioj, kiel ili estas efektivigitaj kaj la eblecoj helpos vin kompreni, kiel eraroj povas eviti.

La ĉeesto de multaj pretaj programaj iloj ebligas al vi fari profundan analizon de la retejo sur konataj vundoj. Unu el la plej popularaj produktoj estas kali linux. Ĝi estas bildo de sistemo bazita en Linukso, kiu enhavas multajn utilecojn kaj programojn kapablajn por plenumi kompletan analizon de la retejo por forto.

Kion vi bezonas scii Kiel haki la retejon? Ĝi estas tre simpla - ĝi estas necesa esti konscia de la eblaj vulnerabilidades de via projekto aŭ retejo. Precipe se ĝi estas enreta vendejo kun enreta pago, kie la pago uzanto datumoj povas esti kompromitita de atacante.

Por profesia studo de ekzistantaj informo sekurecstabo povos kontroli la ejo por diversaj kriterioj kaj profundon. Komencante de simpla HTML-injektoj kaj socia inĝenieristiko kaj phishing.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 eo.unansea.com. Theme powered by WordPress.