Add to Technorati Favorites

[0] http://www.securityfocus.com/

[1] http://www.rstcorp.com/its4/

[2] http://www.striker.ottawa.on.ca/~aland/pscan/

[3] http://www.openbsd.org/

!@#$!@#$!@#$!@#$!@#$!@#$!@#$!@#$!@#$!@#$!@#$!@#$!@#$!@#$!@#$!@#$!@#$!@#$!@#$

/**

*** statdx

*** Redhat Linux 6.0/6.1/6.2 rpc.statd remote root exploit (IA32)

*** by ron1n

***

*** July 24, 2000

*** Sydney, Australia

***

*** Oh you prob'ly won't remember me

*** It's prob'ly ancient history

*** I'm one of the chosen few

*** Who went ahead and fell for you

***

*** $ gcc -o statdx statdx.c ; ./statdx -h

***

*** background info

*** ---------------

*** rpc.statd is an ONC RPC server that implements the Network Status

*** Monitor RPC protocol to provide reboot notification. It is used by

*** the NFS file locking service (rpc.lockd) when it performs lock

*** recovery.

***

*** Due to a format string vulnerability in a call to syslog() within

*** its logging module, rpc.statd can be exploited remotely by script

*** kids bent on breaking into your Redhat Linux box and defacing your

*** website with crackpot political musings.

***

*** This is not a traditional buffer overflow vulnerability. The data

*** are kept within the bounds of the buffer by means of a call to

*** vsnprintf(). The saved return address can be overwritten indirectly

*** without a contiguous payload. syslog() is given, for the most part,

*** a user-supplied format string with no process-supplied arguments.

*** Our format string will, if carefully constructed, cause the process

*** to cull non-arbitrary addresses from the top of the stack for

*** sequential writes using controlled values. Exploitation requires

*** an executable stack on the target host -- almost invariably the

*** case. This problem was corrected in the nfs-utils-0.1.9.1 rpm.

***

*** exploit info

*** ------------

*** You have one shot at this in most situations, so get it right!

***

*** If you know the port number rpc.statd is serving requests on, you

*** can supply the port number on the commandline to bypass the initial

*** portmapper query. This is very useful for hosts which are filtering

*** inbound connections to the portmapper. The default attack protocol

*** is UDP. There is a commandline option to use TCP. Apparently, the

*** dispatcher uses both protocols by default.

***

*** If you're only interested in exploiting a host, then you can safely

*** skip the following information. You'll only need a buffer address

*** to get started. This buffer address will either be one of my canned

*** ones or your own one. It must be precise, and this is where you're

*** likely to experience difficulties with your attacks.

***

*** [va_list][str][4][r][4][r+1][4][r+2][4][r+3]----->

*** | |

*** %esp buffer[1024]

***

*** [%x..][%!d][%n][%!d][%n][%!d][%n][%!d][%n][sc]--->

*** | r | r+1 | r+2 | r+3 |

***

*** buffer -> This is the address you'll need (-a and -l options)

*** str -> Process-supplied string; 24 bytes long

*** 4 -> Duplicate dwords to satisfy the %!d specifiers and

*** the double %n when two successive values are equal

*** r -> Stack position of saved eip

*** %x.. -> Wipes the va_list dword and str; 9 by default (-w option)

*** %!d -> Used for padding to form an aggregate overwrite value;

*** the exclamation mark denotes a field width. This may

*** or may not be present, depending on the value. An

*** algorithm is used to allow tricky values.

*** %n -> Writes overwrite value to the corresponding address

*** sc -> Nops + portbinding shellcode (port 39168)

***

*** Only modify the default wipe value and the default offset value if you

*** know what you're doing.

***

*** An easy way to get the buffer address for simulation systems that you

*** have privileged access to:

***

*** [term 1]# ltrace -p `pidof rpc.statd` -o foo

*** [term 2]$ ./statdx -r 0x41414141 localhost

*** [term 1]# grep vsnprintf foo | head -1 | sed 's/.*(//' | \

*** awk -F"," '{print $1}'

***

*** (Of course, ensure that rpc.statd is started at boot time and not from

*** an interactive shell, otherwise it will inherit a larger environment

*** and blow the accuracy of your findings.)

***

*** Ok, longwinded enough. Let's dance.

***

*** greets

*** ------

*** ADM, attrition, rogues, security.is, teso

***

**/

Add to My AOL Add to Google Reader or Homepage Add to netomat Hub I heart FeedBurner Subscribe in NewsGator Online Subscribe in a reader

0 comments