Tabla de contenido - HH-Server .com€¦ · 3. Intercept Proxy 4. Escaneos Pasivos y Activos 5. Zap...
Transcript of Tabla de contenido - HH-Server .com€¦ · 3. Intercept Proxy 4. Escaneos Pasivos y Activos 5. Zap...
1. AcercadelLibroi. Licenciaii. Garantíaiii. Agradecimientosiv. Sobreelautor
2. IntroducciónaZaproxy3. InterceptProxy4. EscaneosPasivosyActivos5. ZapWebCrawling6. FuzzingconZap7. ZapForcedBrowse8. ZestScriptsobreZap9. ActualizaciónyPluginsenZap10. Cuestionesquenosolvidamos11. Reporting
Tabladecontenido
OWASPZedAttackProxyGuide
2
Autor:BalderramaEric
Twitter:@EricBalderrama
Editadopor:JoseMorunoCadima@sniferl4bs
SitioWeb:www.sniferl4bs.com
OwaspZedAttackProxyGuide
OWASPZedAttackProxyGuide
3AcercadelLibro
OWASPZedAttackProxyGuide.
EstaobraestásujetaalalicenciaReconocimiento-CompartirIgual4.0InternacionaldeCreativeCommons.Paraverunacopiadeestalicencia,visitehttp://creativecommons.org/licenses/by-sa/4.0/.
Puedehallarpermisosmásalládelosconcedidosconestalicenciaenhttp://www.sniferl4bs.com
Todaslasmarcassonpropiedaddesusrespectivosdueños.
Imagendelaportadarealizadapor@GONZALOCABRERA
Licencia
OWASPZedAttackProxyGuide
4Licencia
EsteEbooksedistribuyeconlaesperanzadequeseaútilysirvacomounareferenciaparaelusodelaherramientaZAPdeOWASP.Elautornoasumeningunaresponsabilidadsiellectorhaceunmalusodelmismo.
Garantía
OWASPZedAttackProxyGuide
5Garantía
Darlasgraciasatodoslosquevisitanelblog,comotambienalosquecompartencontenidoygeneran
Agradecimientos
OWASPZedAttackProxyGuide
6Agradecimientos
Sobreelautor
OWASPZedAttackProxyGuide
7Sobreelautor
LaherramientaqueconoceremosenesteEbookesutilizadaparaelanálisisweblacualtieneunaasombrosaversatilidadycaracterísticasquepuedenresultardegranayudaalmomentoderealizarunaauditoría.
HablaremosdeZedAttackProxy(ZAP),unproyectodesarrolladoporlacomunidaddeOWASPycuyoliderdeproyectoesSimonBennetts.
Laurldelproyectoes:OWASPZedAttackProxyProject
TodaslaspruebasqueharemosconZapalolargodellibroseránllevadasacabosobreKaliLinux,noesrequisitoindispensablequevirtualicenoinstalenunKaliyaqueZapestádesarroladoenjavayporendeesmultiplataforma.
Ladescargapuedeserrealizadadesde Github,allíseencuentranlasversionesparalosdistintosSistemasOperativos(Linux,WindowsyMac)yelcorequecontienefuncionesmínimas.Detodosmodos,laversiónparaLinuxescrossplataform,recomiendobajaresa.
Elúnicorequisitoquetieneestenerlaversión7dejavaosuperior.
Comencemosaverdequésetrata(utilizaremoslaversión2.4.0paraLinuxdesdeunKali),ingresemosa/usr/share/zaproxyyluegolistemosparaverlosarchivosquetienedentro:
Aquípodemosencontrarlasbasededatosqueutiliza,filtros.lenguajes,librerías,scripts,etc.Esinteresanteanalizarelcontenidodecadadirectorio,peroesoquedaensusmanos.
Loquenosinteresasondosarchivos,elzap.shparacorrerdesdeplataformasLinuxyzap-2.4.0.jarparapodercorrerdesdecualquierSO.
Parainicializardesdeeljar:
Sepuedeutilizarelmismocomandoparainicializarlodesdewindows.
IntroducciónaZaproxy
OWASPZedAttackProxyGuide
8IntroducciónaZaproxy
Parainicializardesdeelscript:
Parainicializardesdeelmenú:
CualquieradelasformasqueiniciemoselZapestábien,unavezlevanteelGUI,nosencontraremosconunaaplicaciónmuyintuitivaysencilladeusar:
Enelcampo“URLtoattack”ingresamoseltargetaanalizar,enésteprimercasoanalizaremos“http://scanme.nmap.org”.
Cabeaclararquesiempredebemosingresarelprotocolo,esdecirsielsitioquequeremosanalizarsecomunicaporhttpoporhttps,siingresamossoloenombrededominionomostraráelsiguienteerror:
OWASPZedAttackProxyGuide
9IntroducciónaZaproxy
Enlapróximasecciónanalizaremoslosoutputquenosentregacomoresultadodelanálisisycomenzaremosconalgunaspruebas.
OWASPZedAttackProxyGuide
10IntroducciónaZaproxy
EnestecapítulodeZAPnosenfocaremosensusfuncionalidadesdeintercepciónporproxy.
Comoyavimosenelcapituloanterior,ZAPesunatooldepentestingdewebapplicationsycomotaltienelafuncionalidaddeserutilizadocomowebproxyentreotrastantasqueyairemosviendo.
AntesdequelevantenZAP,vamosatenerquehacerunasconfiguracionesennuestronavegador,loharemosenFirefox,peropuedenutilizareldesueleccion,entodosesbastantesimilarlaconfiguracion.
Preferences->advanced->network->Settings
Siquierenacortarcamino,abranunapestañaypeguen:about:preferences#advancedluegosoloirasettingsoconfiguraciónyveránelpanelde‘configuracióndeconexiones’.
Enéstepanel,debemosseleccionar‘Manualproxyconfiguration’yenloscamposdeHTTP,SSLyFTPProxydebemoscolocarnuestradireccióndelocalhost127.0.0.1ypuerto8080.Enelcampo‘NoProxyfor’debemosdeclararlocalhosty127.0.0.1:8080separadosporunacoma(,)comoseveenlaimagen.
TambiénsepuedeusarlaconfiguraciónqueserealizaconFoxyProxycomoserealizoenBurpSuiteesaplicableconZap.
Ahora,sólobastaconingresaraunwebsiteparaqueZapcomienceatrabajar.
Trasinicializarlaherramienta,accederemosa“GoogleGruyere”desdeelnavegadorqueestaconfigurado,volvemosazapyobservamosenelpanel“Sites”queyaempezóaguardarlossitiosquevisitamos.
InterceptProxy
Panelesyprincipalescaracterísticas
OWASPZedAttackProxyGuide
11InterceptProxy
Enlapartederecha,seobservalos“Request”ylos“Response”delsitioenelmomentoquesehaaccedido.
SiqueremosverendetallelosRequestyResponseentrenuestronavegadoryelnodo,podemosiralaspestañasindicadas,desdelapestañaResponseporejemplo,logramosvisualizarlosvaluesquesolicitaellogin.
OWASPZedAttackProxyGuide
12InterceptProxy
Sidadoelcaso,hemosrecorridovariossitiosysenoshallenadoelpaneldeSitesdenodos,podemosireliminandolosquenonosinteresanparatenerunambientedetrabajomásorganizadoylimpio.Solobastaconseleccionarlasurl/nodosquenonosinteresan,clickderechoy“delete”.
Desdeelbrowseraccedemosa“google-gruyere.appspot.com/875680738020/login”,unpaneldelogincomún:
OWASPZedAttackProxyGuide
13InterceptProxy
DesdeZAPnosmovemosporlosdirectoriosquefuerelevandoconsussolicitudesyrespuestasenelpanelde“Sites”,abajo,en“History”tambiénsevisualizalapeticiónporGETquesehizoalpathdelogin,tiempoderespuestayquédevolvió.Allípodemosfiltrarpormétodosdepeticiones,codes,tagsyalertas.Aquívemosun302.
Siaplicamoslosfiltros“GET+200”quesevenenlaimagen
SóloveremoslosGETquenoshayanrespondidoun200OK:
Usandobreakpoints
OWASPZedAttackProxyGuide
14InterceptProxy
Hastaaquíutilizamoszapparaqueinterceptetodositioporelquenosmovamos,ahorabien,alutilizarbreakpointstendremoselcontroldestopearofowardearlaspeticionesentrebrowseryserver.
SihacemosclickderechosobreeltargetyluegoseleccionamosBreak
Seabriráunaventanaenlacualdefinimoslaurlyagregamoselbreak.
Paracomprobarsihemoscolocadobienelbreakpointvamosalapestañaqueseencuentraabajoconelmismonombre:
AlingresaralsitiodesdeelbrowserycolocarlascredencialesdeautenticaciónveremosquequedacargandoynoresolveráhastaqueforwardemoslapeticióndesdeelZap.
OWASPZedAttackProxyGuide
15InterceptProxy
Alirazap,vemosquehainterceptadoelenvíodelascredenciales
Paraquelapeticiónsigasucaminodebemosdebemoshacerclickeneliconodeplay.
Lapantallaquenosmuestralapestaña“Break”sepondráenblancoylapeticiónseráenviada.
OWASPZedAttackProxyGuide
16InterceptProxy
Zap,ademásdefuncionarcomoproxy,tambiéntienelacapacidaddeservirnosdescanner.Poseedosmodalidadesdescanning,lapasivaylaactiva,enestasecciónprofundizaremosenpassivescanning.
Elescaneopasivosólointerceptalasrespuestasdelserverynoesintrusivo.Susreglasestándisponibleen:tools-options-passivescan
Desdeaquípodemoselegirlasreglasautilizar,editarlas,crearnuevasoeliminarlasquenoutilizamos.
Sideseamosagregarunanuevareglavamosaadd.Esrecomendableanalizarlasreglasyaexistentesparaentenderlalógicadesuestructura.
Hagamosunejemploparaidentificarlaexistenciadegoogleanalitycsenlossitiosqueanalizaremos:
Name:loquequierasType:TAGvienepordefectoConfiguration:loquedeseesResponseBodyRegax:aquiesdondedebemoscolocarqueencuentrenuestrostring“google-analitycs”,yaqueenelfuentesevedelasiguientemanera:
Nuestraconfiguraciónentoncesquedaríaalgoasí:
EscaneosPasivosyActivos
OWASPZedAttackProxyGuide
17EscaneosPasivosyActivos
Anteponerconun“\”antesdel“*”implicalacapacidaddepodercitarcaracteresespecialesyel“*”enexpresionesregularessignificacorresponderloprecedentecualquiernúmeroveces.
Trasestablecerlasreglasqueutilizaremosenelescaneo,procedemosaponerelzapcomoproxyinterceptercomolovimosenelcapítuloanterior.
Unavezquetengamossuficientesrequestpodemosusarlosfiltro(quetambiénvimos)parafocalizarnuestroanálisis.
LasreglaspordefectoincluidasenelescanerpasivodeZAPincluyenlacapacidaddedetectarcomentarios,direccionesdecorreoselectrónicos,cookies,formularios,objetos,contraseñas,scripts,camposocultos,entreotras.
Parallevaracabounscanningtenemosdosmaneras,peroantesdeadentrarnosenellasveamossusreglasyparámetros.
Sivamosatools-options-activescanesposibleconfigurarcantidaddehostconcurrentes,hilosconcurrentesporhost,tiempodeesperaenmilisegundosduranteelscanning,etc.
EscaneoActivoconZap
OWASPZedAttackProxyGuide
18EscaneosPasivosyActivos
Parainicializarelscanningactivosobretodalaurlquehemosvisitadoduranteelescaneopasivo,sólodebemosseleccionarla,hacerclicksecundarioyluegoelegirattack-activescansite
Podemosmanejardemaneramásgranulareltargetaescaner,paraestodebemosseleccionarelsubdirectoriooparámetroyelegiractivescansubtree.
OWASPZedAttackProxyGuide
19EscaneosPasivosyActivos
Porúltimo,sinoestamosinteresadosenidentificareltarguetconunescaneopasivofocalizandoenloquenosinteresaconunescaneoactivoyqueremostirarleatododemaneracavernícola,tenemosunapestañallamadaQuickstart,ponemoslaurlyAttack.
deéstamaneranosólocorremosunscanningactivo,sinotambiénquecorreelspider,fuzzeaytirabruteforce(locualveremosdetalladoenlaspróximassecciones).
OWASPZedAttackProxyGuide
20EscaneosPasivosyActivos
ContinuandoconlasfuncionalidadesdelatoolZedAttackProxy,queporciertorecienliberadolaversión2.4.1ypuedenactualizarconctrl+uo“ayuda-comprobaractualizaciones”siesquealabrirlonoleshaofrecidoactualizar,veremoscomohacerloenelacápiterespectivoporsiquierentenerlaultimaversiónqueesperanparaverprimeroello?.
Enestecapítuloveremoslascaracterísticasdespideringquepresentaysusdiferencias.
Uncrawlingospideringesunaherramienta,oenéstecasounafuncionalidaddeZap,quesirveparaidentificarlosenlacesexistentesenuntarget,deéstamanerallegamosatenerunaideadelamaneraenlaqueestácompuestaelsitioaanalizareidentificarposiblesdirectoriosoarchivossensiblesquenospuedenserútilesalahoradenuestraauditoría.
LaformaenlaqueZaptrabajaesrecursiva,esdecirqueamedidaqueencuentranuevosenlaceslosvasiguiendo,identificandoasíhref,src,http-equivolocationentreotrosatributosdehtml,getypostenlenguajesdinámicoseinclusolosvínculosqueestánescondidosdelosbotsdeindexaciónenelrobots.txt.Estonosdalaposibilidaddehacerelcrawlingbastantegranular,yaquetodoesseteabledesdelasopcionesdeconfiguración.
Sivamosa“herramientas-Opciones-Spider”,observamoslascaracterísticasconfigurablescomolacantidaddeprocesosconcurrentes,habilitar/deshabilitarelcrawlenlametadatadearchivosoenloscomentariosdelsitio,entreotrasopciones.
Ademásdetenerlaposibilidaddeconfigurarcómovaaserelspidering,tambiénpodemosconfigurardóndequeremoshacerlo.PartiendodesdeunaUrltarget,tenemoscincométodosparasetearelalcance:
SpiderContext:Analizarálosenlacesseleccionadosdentrodelcontextoseleccionado,enéstecaso,laúnicaopciónes1.
ZapWebCrawling
QueesCrawlingoSpidering
OWASPZedAttackProxyGuide
21ZapWebCrawling
SpiderallinScope:Analizaráloquelehayamosdefinidocomoalcance,enéstecasoelalcanceeslaurlprincipal.
SpiderSite:Haráuncrawlingportodaslosenlacesyadescubiertosenelsitio
SpiderSubtree:Identificarádirectoriosysubdirectoriosdentrodelnodoseleccionado.
SpiderURL:Analizatodaslasurlsidentificadasylasquesegeneranapartirdeésta.
Paracomprendermejorlasdiferenciasentremétodosdecrawling,lesrecomiendoingresaraunsitioconZapcomo
OWASPZedAttackProxyGuide
22ZapWebCrawling
scannerpasivo(comovimosenelcapítuloanterior)ylanzarloscincométodosdiferentesidentificandoquenosdevuelvelaventanadeSpiderenelpanelinferior.
OWASPZedAttackProxyGuide
23ZapWebCrawling
Zap,poseeunagrancantidaddefuncionalidades,enestasecciónveremoslaformaderealizarunfuzzingsobreunaaplicaciónwebparaidentificarinyeccionesdetiposql.
Elfuzzing,esunatécnicamediantelacualsepuedecomprobarlaformaenlaqueresponde,enéstecasounawebapplication,anteelingresodedatosaleatoriososecuencialesparaparaidentificardirectoriosoarchivos,detectarvulnerabilidadesdeinyeccióndecódigoeinclusopararealizarvalidacionesporfuerzabruta.
Enelsiguienteejemplo,veremoslamaneradeidentificarunainyecciónsqlatravésdeunfuzzingaunaaplicaciónweb.
Paraelsiguienteejemploutilizaremoseltargethttp://webscantest.com,enéstecaso,heaccedidomedianteproxyinterceptor,unavezquetenemoslaurldentrode‘Sites’clickderecho‘Attack’yluego‘Spider’.
Unavezlistoelspidering,vamosabuscareldirectorio‘shutterdb’,éstecontieneunarchivophpllamado‘search_by_name.php’.
Aquíempiezalodivertido,yaqueesdondepodemosconfigurarnuestrofuzzeragusto.Seabriráunaventanadondeveremoselheaderdelsitioenlapartesuperioryenlaparteinferiortendremosquesetearnuestratool.
FuzzingconZap
¿QueeselFuzzing?
OWASPZedAttackProxyGuide
24FuzzingconZap
Trasclickearenlazonainferiorvamosa‘add’,aquiesdondeconfiguraremoslospayloadsocargasaprobarsobreelsitio.Debemosseleccionarnuevamente‘add’ytendremoslostiposdecargasparalanzarnuestrofuzzer.
Vamosa‘FileFuzzers’seleccionamos‘jbrofuzz’queesotratooldeOWASPydentrodesusopcioneselegimos‘Injection’.
OWASPZedAttackProxyGuide
25FuzzingconZap
Ahoraaceptamos,damosokydemáshastaqueencontramosel‘StartFuzzing’.
Comenzaráacomprobarunoaunolospayloadsimprimiendoenpantallalarespuestadecadaunodeellossobreeltarget.
Comoseobserva,lacarga‘or’1’=’1arespondidounok.Sivamosalsitiowebycolocamosesasecuenciadecaracterespodremosverquenosdevuelvetodoelcontenidodeladb.
Megustaríaaclararqueelejemploquehemosvistoeselpasoapasodesólounaexplotaciónmediantefuzzing,eldescubrimientodedirectoriosporejemplosepuederealizarcasidelamismamanera,solobastaconconfigurarlas
OWASPZedAttackProxyGuide
26FuzzingconZap
opcionesdelfuzzer.
LaintencióndeéstecapítuloesmostrarlagranularidadconlacualsepuedeconfigurarZap,ahorabien,sicolocaslaelnombredelsitioen‘URLtoAttack’ydasen‘Attack’tambiénharáunfuzzing,ladiferenciaestáenlaprolijidad,unacosaesatacartodoparaquesaltentodaslasalarmasyotramuydiferenteessóloatacaralpuntodébil.
OWASPZedAttackProxyGuide
27FuzzingconZap
ElForcedBrowseesuntipodeataqueparaforzarlanavegacióndentrodeundominioconelfindeidentificarrecursosquenosonaccesiblesdesdeunareferencia(esolohaceuncrawling)peroaunestánenalgundirectoriodentrodelwebserver.
Yaquetenemosclaroelconcepto,analicemossupuestaenmarcha,veremosquebruteforcingsobrelanavegaciónvienedelamanoconelcapítuloanterioryelmecanismoesbastantesimilar.
LasopcionesdeForcedBrowsequenosfacilitalaherramientasonlassiguientes:
ForcedBrowseSite:esutilizadoparalaidentificacióndecontenidonovinculadoseneldirectoriodeldominio,seejecutapordefectooseteandonuestropropiodiccionario.
ForcedBrowseDirectory:cumplelamismafunciónqueelanterior,ladiferenciaesqueidentificasobreundirectorioynosobretodoeldominio.
ForcedBrowseDirectory(andchildren):Igualalanterior,sóloqueademástambiénidentificaelcontenidodelossubdirectorios.
ParadefinirlasopcionesdeconfiguraciónysetearnuestropropiodiccionariodeFuerzaBrutaenlaherramientadebemosiralasopciones,parallegarpodemosirpordoscaminos“Ctrl+Alt+o”oenelmenúsuperior“Tools->Options”
ZapForcedBrowse
OWASPZedAttackProxyGuide
28ZapForcedBrowse
DentrodelasOpcionesconfigurablesdelasquedisponemosestán:
Cantidaddethreadsconcurrentesporhostquepuedenirde0a20.Esposibledefinirquesearecursivoono.Archivopordefectoconelcualrealizaráelforcedbrowse.Agregardiccionariospersonalizadosparaelataque.Incluirextensionesabuscardemaneramanual.
Cuandolancemoselataque,esviableelegirsiqueremoscontinuarutilizandolalistaquehemosdefinidopordefectoobuscaryseleccionarlaquedeseamosemplear.
OWASPZedAttackProxyGuide
29ZapForcedBrowse
Veamosunejemploprácticodeloquevenimosviendo.ParaInicializarelForcedBrowse,debemospararnossobreeltarget,clickderechoyseleccionamoseltipodebruteforcingquedeseamos.Enéstecasoejecutaremos“ForcedBrowseDirectory”coneldiccionarioquetraepordefectolaherramienta
Enelpanelinferior,veremoscomocomienzaadesplegarselaspeticionesquehacesobreeldirectorioseleccionadoylarespuestadecadarequest.
Deéstamaneraidentificamosporejemplo,informaciónsensible,backdoorsshellenphpconnombrescomunescomoc99.phpoDAws.php,etcquegeneralmentenotienenningunareferenciaohipervínculodesdeeldominioperosiestánpresentesdentrodelwebserver.
OWASPZedAttackProxyGuide
30ZapForcedBrowse
AntesdecomenzaraverlaformaderealizarscriptsenZap,veremosdequésetrataZest,yaquesinoentendemosbienlabase,escomplicadoconstruirhaciaarriba.
Zest,esunlenguajedeprogramaciónespecializadoenelscriptingcreadoporelequipodedesarrolladoresdeseguridaddeMozillaorientadaatoolsdeseguridad.Siquieresinvestigarunpocomás,acáestáelsitiooficial:(MozillaProjectsZest).
Estelenguajedescriptingestáescritoenjson,sinembargo,laideaesquelaprogramaciónseavisualyqueestédefinidaporlaherramientaqueintegreZest.
Porelmomento,Zapeslaúnicaherramienta(porloquediceelsitiodedevelopersdemozilla(ZestTools)queintegraéstaformadescriptear.
ValeaclararqueZestescompletamentedecódigoabiertogratuitoysepuedeincluirencualquierherramientadecódigoabiertoocerrado,libreocomercial.
Paraencontrarelbotónquepermitegrabarunnuevoscript,debemosbuscarenlapartesuperior,muycercadedondeseencuentraeliconoparacustomizarbreakpointhttpquevimosencapítulosanteriores.
Encasodequenofigureahíhayqueimportarlodelasiguientemanera:
1. Ctrl+u(Atajopara‘Checkforupdate’quetambiénsepuedeencontrarenlapestaña‘Help’),éstoabreel‘ManageAdd-ons’.
2. Seleccionarlapestaña‘Marketplace’ybuscar‘Zest-GraphicalSecurity’.
3. Unavezseleccionadovamosabajoa‘InstallSelected’.
4. Paracomprobar,elegimoslapestaña‘Installed’ydebeaparecer‘Zest-GraphicalSecurity’,comovemosenlaimagen:
ZestScriptsobreZap
¿QueesZest?
PasosPreliminares:
OWASPZedAttackProxyGuide
31ZestScriptsobreZap
EsrecomendablereiniciarZapunavezrealizadalainstalacióndelAdd-onparaevitarposiblesinconvenientes.
Pararealizarlaspruebasquellevaremosacabo,hayqueteneraZapcomoproxydeintercepción(lohemosvistoencapítulosanteriores).
Ejemplo1:AlhacerclickenelbotónparainiciarlagrabacióndelZestscriptsenosabriráunaventanacondospestañas,laprimera,‘Summary’nospermite:
Setearelnombredelscript.Tipo(standaloneoauthentication)Tipodegrabación.Urlinicial.Prefijo,esdecirsobrequepathraiz.OpciónparacargarelscriptalinicializarlaherramientaDescripción
Paraesteejemplohemoselegidoelnombre‘Ejemplo1’,elscriptseráde‘Authentication’,grabarádelladodelservidor,laurlsobrelacualcorreráesladelogindegooglegruyereyel‘Prefix’eselindexdegruyere.NodefinimosdescripciónytampocoquesecarguealiniciarZap.Asínosquedó:
GrabacióndeScriptsmodovisual:
OWASPZedAttackProxyGuide
32ZestScriptsobreZap
Laotrapestaña,‘DefaultAssertions’traeconfiguraciónpordefectoquenoconvienemodificarlas
Unavezseteadoslosparámetrosquedeseamos,hacemosclicken‘StartRecording’,vamosalpaneldelogueodegruyere,iniciamossesiónointroducimoscredencialesinválidasyvolvemosaZapparadetenerlagrabacióndelscript.
OWASPZedAttackProxyGuide
33ZestScriptsobreZap
AlvolveraZap,podemosverenlaventana‘Scripts’quetenemoselqueacabamosdegrabaryaguardado.
Siseleccionamoselscriptquehemosterminadodegrabar,podemosvisualizarlarepresentacióngráficadeloquehemosgrabado.
OWASPZedAttackProxyGuide
34ZestScriptsobreZap
Enelpanelsuperiordeladerecha,sepuedevisualizarlarepresentacióncodificadadeloquehemosgrabado,enlapestaña‘ScriptConsole'.
Tambiénnosaparecióelbotón‘Run’,silopresionamoselscriptquehemosterminadodegrabarvuelveacorrer.
Hastaaquí,lametodologíaquehemosutilizadoparagrabarnuestroscriptenZest,esmuysimilaraladelasmacrosenprogramasofimáticosdeprocesamientodetextooplanillasdecálculo.Pararesumirydejarenclaro:
1. Vamosalbotónparainiciarlagrabación.2. Realizamoselprocesoquequeremosdejarguardado.Aquípodemos,porejemplo,explotarunvulnerabilidadcomo
unxssounbypassalloginqueluegopodemosreproducirloparagenerarnuestroreporte.3. Finalizamoslagrabaciónparatenernuestroscriptcodificadoyrepresentadográficamente.Podemosvolveracorrerlo
quehemosgrabadosimplementedandoclicken‘Run’.
Pararealizaréstamodalidaddegeneracióndescripts,debemosutilizarunpluginllamado‘Plug-n-Hack’queseencuentraenlapestaña‘QuickStart’debajodel‘UrltoAttack’.
GrabacióndeScriptsmodoconsola:
OWASPZedAttackProxyGuide
35ZestScriptsobreZap
Sihacemosclickenelbotón‘Plug-n-Hack’senosabriráunapestañaenelbrowserFirefoxconlaurl:http://localhost:8080/pnhconunbotónparaconfigurarelplugin.
Unavezquefinalizalaconfiguración,podemosverlasmodificacionesquerealizóelplugindirigiéndonosa‘Preferencias->Avanzadas->Configuración’.
OWASPZedAttackProxyGuide
36ZestScriptsobreZap
Paragenerarnuestrosscripts,debemos,desdenuestrobrowserpresionar‘Shift+F2’.SisóloponemoszapveremostodaslasopcionesquetenemosdisponiblesparainteractuardesdeFirefoxconZap.
Parainicializarlagrabacióndelscript,debemosescribir‘zaprecordonglobal’,realizamoslaacciónquequeremosdedejarguardadaennuestroscriptyparafinalizarescribimosenlaconsoladeFirefox‘zaprecordoffglobal’.AlvovleralZap,nosencontraremosconlosmismospanelesyvisualizacionesquesigrabamosunscriptdemaneravisual.
Alseleccionarunscriptquehemosgrabadopodemosrealizarunagranvariedaddeaccionesentrelascualespodemosver:
Agregarrequest.Agregaraccionescomoscanear,imprimirodormirelscript.Agregarafirmaciónlengthyregex.
Edicióndescripts:
OWASPZedAttackProxyGuide
37ZestScriptsobreZap
Agregarasignacionesenvariablesporejemplo.Agregarcondiciones.
Cadaunadelasopcionesdeediciónnosabriráunaventanaparaeditarnuestroscriptdemaneravisual.
Otraformadeeditar,esirdirectamentealcódigojsonseleccionarelstring,elegir‘Redacttext’ymodificaragustoloquedeseamos.Porejemplo,siobtenemoscookiesdesesióndeunaaplicaciónwebyhemosgeneradonuestroscriptdeloginconunacookie,esposiblemodificarlaporotrayhacerclicken‘Run’paraquevalideellogueoconotracookie.Tambiénpodemoshacerloconlascredencialesdeacceso,modificarheader,variables,etc.
OWASPZedAttackProxyGuide
38ZestScriptsobreZap
Existenmuchasmásopcionesdemodificaciónypersonalizacióndelosscripts,podemosagregarcondicionesbooleanas,iteraciones,etc,paraajustarloanuestrasnecesidadesal100%.Esapartequedaráparasuinvestigación.
Siquiereninteriorizarsemás,engithubtienenelcódigodeZestyenmozillazesttienenungrupopararealizarlasconsultasoaportessobreéstelenguajedescripting.
OWASPZedAttackProxyGuide
39ZestScriptsobreZap
Aprovechandoquerecienseliberólaversión2.4.2deZap,enestecapítuloveremoslamaneradeactualizar,ademásdelainstalaciónyusodelosplugins.
Paraactualizarlaherramienta,tenemosqueiralapestaña‘Help’yseleccionar‘CheckforUpdates’.
Seabriráel‘ManageAdd-ons’ysinotenemoslaúltimaversión,nosapareceráunmensajeindicándonosqueexisteunaversiónmásreciente.
Damosclicken‘DownloadZAP’ycomenzaráladescargaensegundoplano,comoloindicaeltextoenlaparteinferiordelaventana.
Unavez,hechoésto,levantamosunaconsolaylistamoscon‘ls’sobre~.
ActualizaciónyPluginsenZap
OWASPZedAttackProxyGuide
40ActualizaciónyPluginsenZap
Nosmovemosaldirectorio‘.ZAP/plugin’yallistarvemosqueyatenemoslaversiónnueva.
Encasodenoestarel‘.tar.gz’conlaversiónnueva,podemosdescargarladirectamentedesdeGITHUBohaciendoun‘wget’.
Cuandolotengamos,debemosdescomprimirelarchivocompresodelasiguientemanera.
YporúltimomovemostodaeldirectoriodeZAPnuevoparapisarelviejosobre‘/usr/share/zaproxy’.
IniciamosZAPparacorroborar:
ConlaúltimaversióndeZAP,vienenvariosadd-onsinteresantesyvariosupdates.Paravisualizarlospluginsdebemosiral‘Manageadd-ons’comovimosmásarribaosimplementecon‘Ctrl+u’.Sideseamosverdequeésetrataunplugin,bastaconhacerleclickparaquenosmuestremásinformación.
OWASPZedAttackProxyGuide
41ActualizaciónyPluginsenZap
Paraelsiguienteejemplo,instalaremosyveremoselfuncionamientodeunpluginllamado‘CallGraph’.Loseleccionamosyclickleamosen‘InstallSelected’.
Unavezfinalizado,vamossobrenuestroyaconocido‘google-grouyere.appspot.com’yhaciendoclicksecundarioyatendremoslaopcióndelpluginqueacabamosdeinstalardisponible.
Siseleccionamoslaopciónde‘AllSite’,veremosundiagramadetodoslosdirectorios,subdirectoriosyarchivosquesehaidentificadoelscanner.
OWASPZedAttackProxyGuide
42ActualizaciónyPluginsenZap
Losinvitoaquerevisenelrestodelosplugins,haymuchísimosmuyinteresantescomo‘LogFileImporter,BrowserView,fuzzdbfiles,PythonScripting’entreotros.
Parafinalizar,quisieraagradeceraSimonBennetts(@psiinon)yaCristianBorghello(@SeguInfo)porelagradecimientoydifusióndelasentradasdelblog.
OWASPZedAttackProxyGuide
43ActualizaciónyPluginsenZap
EnestepenultimocapítuloveremosalgunosrecursospequeñosperosumamenteútilesdeZapquenoshanquedadopendientesperoquenosonloslosuficientementeextensoscomoparadedicarlestodaunasección.
Ctrl+i:Mediantelacombinacióndeéstasteclas,Zapabreunaventanadesdelacualpodemoselegirunalistadeurlsparapoderrealizarunanálisis.Tambiénpodemosencontrarlaopciónsivamosalapestaña‘Tools’yseleccionamos‘ImportafilecontainingURLs’.
Laventanaquesenosabrenospermiteseleccionarellistadoquetengamosarmado.
Paraésteejemplo,arméunpequeñotxtcontresurlsquelopuedencopiarparasusprácticas.
Alimportarydarleaceptar,veremosqueenlapestaña‘Output’delpanelinferiorcomenzarárealizarpeticionesalossitiosdenuestralistaymostrarlasrespuestas.
Unavezfinalizadoelscanning,enlapestaña‘Sites’veremoslostarguetsanalizadosyenlaparteinferior,sivamosa‘Alerts’tendremoslasvulnerabilidadesidentificadasencadaunadelasurls.
Cuestionesquenosolvidamos
OWASPZedAttackProxyGuide
44Cuestionesquenosolvidamos
ZapestádesarrolladoenJava,perocuentaconapisparapoderintegrarloaotroslenguajesdeprogramacióncomoRuby,Python,PHP,entreotros.EnelsiguienteejemploveremoslaformadeintegrarPythonalaherramienta.
Existendosopcionesparainstalarlaapidepythonenzap:
LaprimeraesdesdePyPI.
paraluegodesdeeldirectoriodepython.
Lasegundaopción(queeslarecomendada),esbajandolaapidesdeSourceforgeparaluegoseguirconlosmismospasosdelprocedimientodescritoarriba.
Unavezejecutadoelinstall,tenemosqueinicializareldaemondezap.
Hastaaquíyatenemosinstaladalaapiylistaparautilizarla.Ejemplosdescriptsqueusanlaapidepythonpuedenencontraraquioaqui.
He,peroesolohagoconnmap.Perfecto,perotambiénpodéshacerloconZappapu!
LasApisdeZap
PortDiscovery
OWASPZedAttackProxyGuide
45Cuestionesquenosolvidamos
Porsialguienaúnnosabequéesunportscanner,setratadeidentificarlospuertosabiertosdeunservidor.Generalmentelospuertosabiertos(siestánbienconfigurados)tienenunserviciocorriendo,comosmtpenel25,httpsenel443,opop3enel110porejemplo.
ConZap,podemosverlospuertosyserviciosasociadossinlanecesidaddeabrirunnmapolatoolsqueusenparaéstepropósito.Elconocerlospuertosyserviciosdeunservidor,nospuedenorientarparasaberdequésistemaoperativo(SO)setratayvalidarenunaanálisisdevulnerabilidadesopentestsialgunoscríticoscomoftposshsonbypasseablesfácilmenteosicuentanconlasmedidasdeseguridadcorrespondientes.
Paraelsiguienteejemplo,llamemosnuevamentealistadodeurlsquevimosmásarribacon‘Ctrl+i’.Ahora,vamosalapestaña‘View’yelegimos‘Showalltabs’.
Simiramoslaspestañasdelpanelinferior,notaremosquehaymuchasmásdelasquetraepordefectocuandoseinicializalaherramienta.
Elegimoslapestaña‘PortScan’yen‘Host’eltargetautilizarparalaidentificacióndepuertosabiertos.
Luego,sóloclicken‘Play’yaesperar.
Al37%yaencontródospuestosabiertosconsusrespectivosserviciosasociados
Elgeneradordetokennossirveparavalidarunacookie,probarsipodemosloguearnosaunsitioconunacookieinventadaoutilizaralgunacookiecapturadapararealizarlaauditoriadesdeadentro.
Paraésteejemplo,seleccionaremoslaprimeralertaquenosdióZapalimportarellistado.Nosparamossobre‘Insecure
GeneradordeCookies
OWASPZedAttackProxyGuide
46Cuestionesquenosolvidamos
Componnent’yveremoslaversióndelIISdeMicrosoft,perodebajoencontramosel‘PHPSESSIONID’
Alhacerclicksecundario,abajotenemoslaopciónde‘Generatetokens’.
Aquípodremossetearlacantidad,eltipoyelnombre.
Vamosa‘generar’yvisualizamoslosresultados.
OWASPZedAttackProxyGuide
47Cuestionesquenosolvidamos
Sivamosaliconodelacarpetita,podemosincorporarlascookiesquetengamospararealizarlaspruebas.
OWASPZedAttackProxyGuide
48Cuestionesquenosolvidamos
Nosencontramosyaenlaúltimocapítuloalmenosporahora,veremospuntualmentelamanerademanejarlosreportesquenospermiteexportarlatool.
Unavezqueterminamosdeanalizarelsitio,podemosiralapestaña‘Reporte’paraelegireltipodereportequequeremosexportar.
Losformatosmásútilessonxmlyhtml,ambossonpersonalizablesyluegofácilmenteselospuedeconvertirenpdf,comoveremosenlasiguientepráctica.
Asíescomoseveelreporteexportadoenhtml:
Sieditamoselcódigofuentepodríaquedarnosmuchomáspresentable,yaqueeshtmlpuroypodemosmoldearlatipografía,tamañoycolordeletras,ubicacióndelcontenidoytodoloquedeseemos.
Enelejemplosóloleagregamosunaimagenycentramosel‘ScanningReport’.
Reporting
Generarunreporte.
OWASPZedAttackProxyGuide
49Reporting
Loconvertimosapdf,enalgúnsitioonlinesinotenemosganasdeprogramarunconversoryconmuypoquitolomejoramosbastante.
Exactamentelomismosepuedehacerconelformatoxml.
Enrealidad,másquelosreportes,loquecomparamossonlassesionesproductodenuestroanálisis.Unavezqueterminamosderealizarlaauditoría,esrecomendableguardarelreporte,enhtmlporejemplo,ylasesiónsobrelaquehemostrabajado.Deéstamanera,siidentificamosvulnerabilidadesquedebenserremediadas,cuandoauditamosnuevamentepodemoscorroborarconlasesiónyconelreportesilolosresponsableshansolucionadolasvulnerabilidadesreportadasosisiguenpresentesalaesperadeunatacanteexterno.
Compararreportes
OWASPZedAttackProxyGuide
50Reporting
Enlapestaña‘Reporte’tenemoslaopciónde‘Compararconotrasesión’,senosabreunaventanaparapoderelegirlasesiónacomparar
ConestofinalizamosesteEbookdeZap,esperoquelohayandisfrutadoyleshayansidoútilesalmenosparainteriorizarseunpococonlaherramienta,enloposibletrataremosdemejorareiractualizandotantoencontenidocomoalgunerrorortográficoodecontenido.
Porúltimo,muchasgraciasJoséporbrindarmeesteespacioparacompartirsobreéstatoolyfelicitacionesporlos4añosdeSniferL4bs!
Autor:EricBalderrama
Twitter:@BalderramaEric
Ocupateviviendoomuriendo.
Cierre
OWASPZedAttackProxyGuide
51Reporting