!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/bacula-backup/   drwxr-xr-x
Free 50.94 GB of 127.8 GB (39.86%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     restore_form.cgi (3.53 KB)      -rwxr-xr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#!/usr/bin/perl
# Show a form for restoring an old backup job

require './bacula-backup-lib.pl';
&ui_print_header(undef,  $text{'restore_title'}, "", "restore");

$conf = &get_director_config();
@jobs = &find("Job", $conf);
$backup = &find_by("Type", "Restore", \@jobs);

print &ui_form_start("restore.cgi", "post");
print &ui_table_start($text{'restore_header'}, undef, 2);

# Old job to restore
$dbh = &connect_to_database();
$cmd = $dbh->prepare("select JobId,Name,SchedTime,Level from Job where Name not like 'Restore%' order by SchedTime desc") ||
                &error("prepare failed : ",$dbh->errstr);
$cmd->execute();
while(my ($id, $name, $when, $level) = $cmd->fetchrow()) {
    $level = $text{'restore_level_'.$level} || $level;
    ($j, $c) = &is_oc_object($name);
    if (!$j) {
        # Normal backup
        push(@opts, [ $id, "$id - $name ($when) - $level" ]);
        }
    elsif ($j && $c) {
        # Backup of one node
        push(@opts, [ $id, "$id - $j on $c ($when) - $level" ]);

        # Save the job ID to a list of those for this particular node
        # group backup
        $stime = &date_to_unix($when);
        $found = 0;
        foreach $nj (@nodejobs) {
            $diff = abs($stime - $nj->{'stime'});
            if ($nj->{'job'} eq $j && $diff < 30) {
                push(@{$nj->{'clients'}}, [ $id, $c ]);
                $found = 1;
                last;
                }
            }
        if (!$found) {
            push(@nodejobs, { 'job' => $j,
                      'stime' => $stime,
                      'when' => $when,
                      'clients' => [ [ $id, $c ] ]});
            }
        }
    }
# Add entries for entire node group restores
if (@nodejobs) {
    @opts = ( [ undef, $text{'restore_jlist'} ], @opts,
          [ undef, $text{'restore_njlist'} ] );
    foreach $nj (@nodejobs) {
        push(@opts, [ "nj_".$nj->{'job'}."_".$nj->{'stime'}."_".
                $nj->{'clients'}->[0]->[0],
                  "$nj->{'job'} ($nj->{'when'}" ]);
        }
    }
$cmd->finish();
print &ui_table_row($text{'restore_job'},
            &ui_select("job", undef, \@opts));

# Files to restore
print &ui_table_row($text{'restore_files'},
            &ui_textarea("files", undef, 8, 50)."\n".
            &bacula_file_button("files", "job"));

# Storage device
@storages = sort { lc($a->{'name'}) cmp lc($b->{'name'}) }
         &get_bacula_storages();
print &ui_table_row($text{'restore_storage'},
    &ui_select("storage", undef,
     [ map { [ $_->{'name'},
           &text('storagestatus_on', $_->{'name'}, $_->{'address'}) ] }
       @storages ]));

# Destination client or group
@clients = sort { lc($a->{'name'}) cmp lc($b->{'name'}) }
        grep { !&is_oc_object($_, 1) } &get_bacula_clients();
@groups = sort { lc($a->{'name'}) cmp lc($b->{'name'}) }
        grep { &is_oc_object($_, 1) } &get_bacula_clients();
@opts = ( );
if (@clients) {
    push(@opts, [ undef, $text{'restore_clist'} ]) if (@groups);
    push(@opts,
       map { [ $_->{'name'},
           &text('clientstatus_on', $_->{'name'}, $_->{'address'}) ] }
       @clients);
    }
if (@groups) {
    push(@opts, [ undef, $text{'restore_glist'} ]) if (@clients);
    push(@opts,
       map { ($g, $c) = &is_oc_object($_);
         $c ? ( ) : ( [ $_->{'name'}, $g ] ) } @groups);
    }
if (@nodejobs) {
    push(@opts, [ "*", $text{'restore_all'} ]);
    }
print &ui_table_row($text{'restore_client'},
            &ui_select("client", undef, \@opts));

# Destination directory
$where = &find_value("Where", $backup->{'members'});
print &ui_table_row($text{'restore_where'},
            &ui_opt_textbox("where", undef, 40,
                    $text{'default'}." (<tt>$where</tt>)<br>",
                    $text{'restore_where2'}));

# Wait for completion?
print &ui_table_row($text{'backup_wait'},
            &ui_yesno_radio("wait", $config{'wait'}));

print &ui_table_end();
print &ui_form_end([ [ "restore", $text{'restore_ok'} ] ]);

&ui_print_footer("", $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.0157 ]--