!c99Shell v. 1.0 pre-release build #16!

Software: Apache/2.2.3 (CentOS). PHP/5.1.6 

uname -a: Linux mx-ll-110-164-51-230.static.3bb.co.th 2.6.18-194.el5PAE #1 SMP Fri Apr 2 15:37:44
EDT 2010 i686
 

uid=48(apache) gid=48(apache) groups=48(apache) 

Safe-mode: OFF (not secure)

/usr/libexec/webmin/postgresql/   drwxr-xr-x
Free 50.93 GB of 127.8 GB (39.85%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     backup.cgi (5.05 KB)      -rwxr-xr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#!/usr/bin/perl
# backup.cgi
# Backup a database to a local file

require './postgresql-lib.pl' ;

&ReadParse ( ) ;

&error_setup ( $text{'backup_err'} ) ;

# Validate inputs
if ($in{'all'}) {
    @alldbs = &list_databases();
    @dbs = grep { &can_edit_db($_) } @alldbs;
    @alldbs == @dbs || &error($text{'dbase_ecannot'});
    }
else {
    &can_edit_db($in{'db'}) || &error($text{'dbase_ecannot'});
    }
$access{'backup'} || &error($text{'backup_ecannot'});
if (!$in{'save'} || $in{'sched'}) {
    if ($in{'all'}) {
        -d $in{'path'} || -d &date_subs($in{'path'}) || $in{'mkdir'} ||
            &error(&text('backup_pe4', $in{'path'})) ;
        }
    else {
        $in{'path'} =~ /^\/\S+$/ ||
          $in{'path'} =~ /^[a-z]:[\\\/]/i ||
            &error(&text('backup_pe3', $in{'path'})) ;
        }
    if (!$in{'all'} && !$in{'tables_def'}) {
        @tables = split(/\0/, $in{'tables'});
        @tables || &error($text{'backup_etables'});
        }
    }
$cron = !$module_info{'usermin'} &&
        !$access{'user'} && &foreign_installed("cron");
$cmode = 0;
if ($cron) {
    if ($access{'cmds'}) {
        $config{'backup_before_'.$in{'db'}} = $in{'before'};
        $config{'backup_after_'.$in{'db'}} = $in{'after'};
        if ($in{'all'}) {
            $config{'backup_cmode_'.$in{'db'}} = $in{'cmode'};
            $cmode = $in{'cmode'};
            }
        }

    &foreign_require("cron", "cron-lib.pl");
    @jobs = &cron::list_cron_jobs();
    $cmd = $in{'all'} ? "$cron_cmd --all" : "$cron_cmd $in{'db'}";
    ($job) = grep { $_->{'command'} eq $cmd } @jobs;
    $oldjob = $job;
    $job ||= { 'command' => $cmd,
           'user' => 'root',
           'active' => 1 };
    &cron::parse_times_input($job, \%in);
    }

if (!$in{'all'}) {
    # Make sure the database exists
    $db_find_f = 0 ;
    if ( $in{'db'} ) {
        foreach ( &list_databases() ) {
        if ( $_ eq $in{'db'} ) { $db_find_f = 1 ; }
        }
    }
    if ( $db_find_f == 0 ) { &error ( &text ( 'backup_edb' ) ) ; }
    }

# Save choices for next time the form is visited (and for the cron job)
if ($module_info{'usermin'}) {
    $userconfig{'backup_'.$in{'db'}} = $in{'path'};
    $userconfig{'backup_format_'.$in{'db'}} = $in{'format'};
    $userconfig{'backup_tables_'.$in{'db'}} = join(" ", @tables);
    &write_file("$user_module_config_directory/config", \%userconfig);
    }
else {
    $config{'backup_'.$in{'db'}} = $in{'path'};
    $config{'backup_mkdir_'.$in{'db'}} = $in{'mkdir'};
    $config{'backup_format_'.$in{'db'}} = $in{'format'};
    $config{'backup_tables_'.$in{'db'}} = join(" ", @tables);
    &write_file("$module_config_directory/config", \%config);
    }

$desc = "<tt>$in{'db'}</tt>";
&ui_print_header($desc, $text{'backup_title'}, "");
if (!$in{'save'}) {
    # Construct and run the backup command
    @dbs = $in{'all'} ? @alldbs : ( $in{'db'} );
    $suf = $in{'format'} eq "p" ? "sql" :
           $in{'format'} eq "t" ? "tar" : "post";
        if ($cmode == 1) {
                # Run and check before-backup command (for all DBs)
                $bok = &execute_before(undef, STDOUT, 1, $in{'file'}, undef);
                if (!$bok) {
                        print "$main::whatfailed : ",$text{'backup_ebefore'},"<p>\n";
                        goto donebackup;
                        }
                }
    foreach $db (@dbs) {
        if (!&accepting_connections($db)) {
            print &text('backup_notaccept', "<tt>$db</tt>"),"<p>\n";
            next;
            }
        if ($in{'all'}) {
            $dir = &date_subs($in{'path'});
            &make_backup_dir($dir) if ($in{'mkdir'});
            $path = $dir."/".$db.".".$suf;
            }
        else {
            $path = &date_subs($in{'path'});
            }
        if ($cron && $cmode == 0) {
            # Run and check before-backup command
            $bok = &execute_before($db, STDOUT, 1, $path, $in{'all'} ? undef : $db);
            if (!$bok) {
                                print "$main::whatfailed : ",$text{'backup_ebefore'},"<p>\n";
                                next;
                                }
            }
        $err = &backup_database($db, $path, $in{'format'}, \@tables);
        if ($err) {
            print "$main::whatfailed : ",
                  &text('backup_ebackup',"<pre>$err</pre>"),"<p>\n";
            }
        else {
            @st = stat($path);
            print &text('backup_done', "<tt>$db</tt>",
                      "<tt>$path</tt>", $st[7]),"<p>\n";
            }
        &execute_after($db, STDOUT, 1, $path, $in{'all'} ? undef : $db)
            if ($cron && $cmode == 0);
        }
    &execute_after(undef, STDOUT, 1, $in{'file'}, undef) if ($cmode == 1);
    donebackup:
    }

if ($cron) {
    &lock_file($cron_cmd);
    &cron::create_wrapper($cron_cmd, $module_name, "backup.pl");
    &unlock_file($cron_cmd);

    &lock_file(&cron::cron_file($job));
    if ($in{'sched'} && !$oldjob) {
        &cron::create_cron_job($job);
        $what = "backup_ccron";
        }
    elsif (!$in{'sched'} && $oldjob) {
        # Need to delete cron job
        &cron::delete_cron_job($job);
        $what = "backup_dcron";
        }
    elsif ($in{'sched'} && $oldjob) {
        # Need to update cron job
        &cron::change_cron_job($job);
        $what = "backup_ucron";
        }
    else {
        $what = "backup_ncron";
        }
    &unlock_file(&cron::cron_file($job));

    # Tell the user what was done
    print $text{$what},"<p>\n" if ($what);
    }

&webmin_log("backup", undef, $in{'all'} ? "" : $in{'db'}, \%in);
if ($in{'all'}) {
    &ui_print_footer("", $text{'index_return'});
    }
else {
    &ui_print_footer("edit_dbase.cgi?db=$in{'db'}", $text{'dbase_return'},
        &get_databases_return_link($in{'db'}), $text{'index_return'});
    }


:: Command execute ::

Enter:
 
Select:
 

:: Shadow's tricks :D ::

Useful Commands
 
Warning. Kernel may be alerted using higher levels
Kernel Info:

:: Preddy's tricks :D ::

Php Safe-Mode Bypass (Read Files)

File:

eg: /etc/passwd

Php Safe-Mode Bypass (List Directories):

Dir:

eg: /etc/

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c999shell v. 1.0 pre-release build #16 Modded by Shadow & Preddy | RootShell Security Group | r57 c99 shell | Generation time: 0.0119 ]--