!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/lib/python2.4/site-packages/rhpl/   drwxr-xr-x
Free 50.74 GB of 127.8 GB (39.7%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     executil.py (7.47 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#
# executil.py - generic utility functions for executing programs
#
# Erik Troan <ewt@redhat.com>
#
# Copyright 1999-2002 Red Hat, Inc.
#
# This software may be freely redistributed under the terms of the GNU
# library public license.
#
# You should have received a copy of the GNU Library Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
import os
import sys
import types
import select
import signal

def getfd(filespec, readOnly = 0):
    if type(filespec) == types.IntType:
        return filespec
    if filespec == None:
        filespec = "/dev/null"

    flags = os.O_RDWR | os.O_CREAT
    if (readOnly):
        flags = os.O_RDONLY
    return os.open(filespec, flags)

def execWithRedirect(command, argv, stdin = 0, stdout = 1, stderr = 2,    
             searchPath = 0, root = '/', newPgrp = 0,
             ignoreTermSigs = 0):
    stdin = getfd(stdin)
    if stdout == stderr:
    stdout = getfd(stdout)
    stderr = stdout
    else:
    stdout = getfd(stdout)
    stderr = getfd(stderr)

#
# XXX What is this good for? If we can't run a command we'll error
#     out below won't we?
#
#    if not os.access (root + command, os.X_OK):
#    raise RuntimeError, command + " can not be run"

    childpid = os.fork()
    if (not childpid):
        if (root and root != '/'): 
        os.chroot (root)
        os.chdir("/")

    if ignoreTermSigs:
        signal.signal(signal.SIGTSTP, signal.SIG_IGN)
        signal.signal(signal.SIGINT, signal.SIG_IGN)

    if type(stdin) == type("a"):
        stdin = os.open(stdin, os.O_RDONLY)
    if type(stdout) == type("a"):
        stdout = os.open(stdout, os.O_RDWR)
    if type(stderr) == type("a"):
        stderr = os.open(stderr, os.O_RDWR)

    if stdin != 0:
        os.dup2(stdin, 0)
        os.close(stdin)
    if stdout != 1:
        os.dup2(stdout, 1)
        if stdout != stderr:
        os.close(stdout)
    if stderr != 2:
        os.dup2(stderr, 2)
        os.close(stderr)

    if (searchPath):
        os.execvp(command, argv)
    else:
        os.execv(command, argv)

    sys.exit(1)

    if newPgrp:
    os.setpgid(childpid, childpid)
    oldPgrp = os.tcgetpgrp(0)
    os.tcsetpgrp(0, childpid)

    status = -1
    try:
        (pid, status) = os.waitpid(childpid, 0)
    except OSError, (errno, msg):
        print __name__, "waitpid:", msg

    if newPgrp:
    os.tcsetpgrp(0, oldPgrp)

    return status

def execWithCapture(command, argv, searchPath = 0, root = '/', stdin = 0,
            catchfd = 1, closefd = -1):

    if not os.access (root + command, os.X_OK):
    raise RuntimeError, command + " can not be run"

    (read, write) = os.pipe()

    childpid = os.fork()
    if (not childpid):
        if (root and root != '/'): os.chroot (root)
    os.dup2(write, catchfd)
    os.close(write)
    os.close(read)

    if closefd != -1:
        os.close(closefd)

    if stdin:
        os.dup2(stdin, 0)
        os.close(stdin)

    if (searchPath):
        os.execvp(command, argv)
    else:
        os.execv(command, argv)

    sys.exit(1)

    os.close(write)

    rc = ""
    s = "1"
    while (s):
    select.select([read], [], [])
    s = os.read(read, 1000)
    rc = rc + s

    os.close(read)

    try:
        os.waitpid(childpid, 0)
    except OSError, (errno, msg):
        print __name__, "waitpid:", msg

    return rc

def execWithCaptureStatus(command, argv, searchPath = 0, root = '/', stdin = 0,
            catchfd = 1, closefd = -1):

    if not os.access (root + command, os.X_OK):
    raise RuntimeError, command + " can not be run"

    (read, write) = os.pipe()

    childpid = os.fork()
    if (not childpid):
        if (root and root != '/'): os.chroot (root)
        if isinstance(catchfd, tuple):
            for fd in catchfd:
                os.dup2(write, fd)
        else:
            os.dup2(write, catchfd)
    os.close(write)
    os.close(read)

    if closefd != -1:
        os.close(closefd)

    if stdin:
        os.dup2(stdin, 0)
        os.close(stdin)

    if (searchPath):
        os.execvp(command, argv)
    else:
        os.execv(command, argv)

    sys.exit(1)

    os.close(write)

    rc = ""
    s = "1"
    while (s):
    select.select([read], [], [])
    s = os.read(read, 1000)
    rc = rc + s

    os.close(read)

    status = None
    
    try:
        (pid, status) = os.waitpid(childpid, 0)
    except OSError, (errno, msg):
        print __name__, "waitpid:", msg

    if os.WIFEXITED(status) and (os.WEXITSTATUS(status) == 0):
        status = os.WEXITSTATUS(status)
    else:
        status = -1

    return (rc, status)

def execWithCaptureErrorStatus(command, argv, searchPath = 0, root = '/', stdin = 0, catchfd = 1, catcherrfd = 2, closefd = -1):

    if not os.access (root + command, os.X_OK):
        raise RuntimeError, command + " can not be run"

    (read, write) = os.pipe()
    (read_err,write_err) = os.pipe()

    childpid = os.fork()
    if (not childpid):
        if (root and root != '/'): os.chroot (root)
        if isinstance(catchfd, tuple):
            for fd in catchfd:
                os.dup2(write, fd)
        else:
            os.dup2(write, catchfd)
        os.close(write)
        os.close(read)

        if isinstance(catcherrfd, tuple):
            for fd in catcherrfd:
                os.dup2(write_err, fd)
        else:
            os.dup2(write_err, catcherrfd)
        os.close(write_err)
        os.close(read_err)

        if closefd != -1:
            os.close(closefd)

        if stdin:
            os.dup2(stdin, 0)
            os.close(stdin)

        if (searchPath):
            os.execvp(command, argv)
        else:
            os.execv(command, argv)

        sys.exit(1)

    os.close(write)
    os.close(write_err)

    rc = ""
    rc_err = ""
    s = "1"
    t = "1"
    while (s or t):
        select.select([read], [], [])
        s = os.read(read, 1000)
        t = os.read(read_err, 1000)
        rc = rc + s
        rc_err = rc_err + t

    os.close(read)
    os.close(read_err)

    status = None

    try:
        (pid, status) = os.waitpid(childpid, 0)
    except OSError, (errno, msg):
        print __name__, "waitpid:", msg

    if os.WIFEXITED(status) and (os.WEXITSTATUS(status) == 0):
        status = os.WEXITSTATUS(status)
    else:
        status = -1

    return (rc, rc_err, status)


def gtkExecWithCaptureStatus(command, argv, searchPath = 0,
                             root = '/', stdin = 0,
                             catchfd = 1, closefd = -1):
    import gtk
    if not os.access (root + command, os.X_OK):
    raise RuntimeError, command + " can not be run"

    (read, write) = os.pipe()

    childpid = os.fork()
    if (not childpid):
        if (root and root != '/'): os.chroot (root)
        if isinstance(catchfd, tuple):
            for fd in catchfd:
                os.dup2(write, fd)
        else:
            os.dup2(write, catchfd)
    os.close(write)
    os.close(read)

    if closefd != -1:
        os.close(closefd)

    if stdin:
        os.dup2(stdin, 0)
        os.close(stdin)

    if (searchPath):
        os.execvp(command, argv)
    else:
        os.execv(command, argv)

    sys.exit(1)

    os.close(write)

    rc = ""
    s = "1"
    while (s):
        try:
            (fdin, fdout, fderr) = select.select([read], [], [], 0.1)
        except:
            fdin = []
            pass
        
        while gtk.events_pending():
            gtk.mainiteration()
        if len(fdin):
            s = os.read(read, 1000)
            rc = rc + s

    os.close(read)
    
    status = None

    try:
        (pid, status) = os.waitpid(childpid, 0)
    except OSError, (errno, msg):
        print __name__, "waitpid:", msg

    if os.WIFEXITED(status) and (os.WEXITSTATUS(status) == 0):
        status = os.WEXITSTATUS(status)
    else:
        status = -1

    return (status, rc)


:: 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.0133 ]--