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


Viewing file:     system-config-packages (16.79 KB)      -rwxr-xr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#!/usr/bin/python -tt # # Copyright 2005-2007 Red Hat, Inc. # # Jeremy Katz # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 2 only # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. import os, sys from optparse import OptionParser # # Python gettext: # import gettext from rhpl.translate import _, N_, textdomain try: import gtk import gtk.glade import gtk.gdk as gdk import gobject except Exception, e: print >> sys.stderr, "Unable to import modules. Maybe you're not running under X?" sys.exit(1) from rhpl.exception import installExceptionHandler from yum.constants import * from yum.packages import comparePoEVR from pirut import * from pirut.constants import * from pirut.Errors import * if os.path.exists("data/PackageManager.glade"): gladefn = "data/PackageManager.glade" else: gladefn = PIRUTUI + "PackageManager.glade" # # Python gettext # t = gettext.translation(I18N_DOMAIN, "/usr/share/locale", fallback = True) # _ = t.lgettext # lame main loop runner... this should probably just be where we need it def _runGtkMain(*args): while gtk.events_pending(): gtk.main_iteration() BROWSE_PAGE = 0 SEARCH_PAGE = 1 LIST_PAGE = 2 class PackageManager(GraphicalYumBase): def __init__(self, config, onlyrepo = None): GraphicalYumBase.__init__(self, False, config) self.searching = False self.xml = gtk.glade.XML(gladefn, domain=I18N_DOMAIN) self.mainwin = self.xml.get_widget("PackageManagerWindow") self.mainwin.set_icon_from_file(PIRUTPIX + "pirut.png") self._connectSignals() self.mainwin.connect("delete_event", self.quit) self._showPackageType = SHOW_ALL self.progressbar = self.xml.get_widget("ProgressBar") self.statusbar = self.xml.get_widget ("StatusBar") self._onlyrepo = onlyrepo def _busyCursor(self, desensitize = True): self.mainwin.window.set_cursor(gdk.Cursor(gdk.WATCH)) if desensitize: self.mainwin.set_sensitive(False) _runGtkMain() def _normalCursor(self): self.mainwin.window.set_cursor(None) self.mainwin.set_sensitive(True) _runGtkMain() def _connectSignals(self): sigs = { "on_PackageManagerWindow_destroy": self.quit, "on_quit_activate": self.quit, "on_repositories_activate": self._repoConfig, "on_about_activate": self._about, "on_search_activate": self._setSearch, "on_browse_activate": self._setBrowse, "on_list_activate": self._setList, "on_apply_activate": self._apply, "on_mainBook_switch_page": self._pageSwitch, "on_browseButton_clicked": self._showBrowse, "on_searchButton_clicked": self._showSearch, "on_listButton_clicked": self._showList, "on_applyButton_clicked": self._apply } self.xml.signal_autoconnect(sigs) self.pageMap = { BROWSE_PAGE: self._showBrowse, SEARCH_PAGE: self._showSearch, LIST_PAGE: self._showList } def _setList(self, *args): self.xml.get_widget("mainBook").set_current_page(LIST_PAGE) def _setSearch(self, *args): self.xml.get_widget("mainBook").set_current_page(SEARCH_PAGE) def _setBrowse(self, *args): self.xml.get_widget("mainBook").set_current_page(BROWSE_PAGE) def _pageSwitch(self, widget, data, num): if self.pageMap.has_key(num): self.pageMap[num]() def __destroyCurrent(self): if self.searching: self._stopSearch() mb = self.xml.get_widget("mainBook") pg = mb.get_data("thepage") if pg is not None: pg.destroy() mb.set_data("thepage", None) def _showSearch(self, *args): self.__destroyCurrent() x = gtk.glade.XML(self.xml.relative_file("PackageSearch.glade"), root="searchBox", domain=I18N_DOMAIN) w = x.get_widget("searchBox") plist = PirutPackageList(self) plist.connect("changed", self._searchPackageSelected, x.get_widget("detailsTextView").get_buffer()) plist.connect("toggled", self._setApply) plist.doneAdding(sort=False) # won't be populating with enough for time to matter w.pack_start(plist, True, True) b = x.get_widget("searchButton") self.mainwin.set_data("searchButton", b) e = x.get_widget("searchEntry") sb = x.get_widget("stopSearchButton") self.mainwin.set_data("stopButton", sb) b.connect("clicked", self._searchClicked, x, plist) e.connect("activate", self._searchClicked, x, plist) sb.connect("clicked", self._stopSearch) self.searching = False self.xml.get_widget("searchFrame").add(w) self.xml.get_widget("mainBook").set_data("thepage", w) gobject.idle_add(e.grab_focus) def _searchPackageSelected(self, plist, po, buffer): if po: desc = po.returnSimple('description') or "" else: desc = "" buffer.set_text(sanitizeString(desc)) def _stopSearch(self, *args): search = self.mainwin.get_data("searchButton") stop = self.mainwin.get_data("stopButton") self.searching = False self.progressbar.set_fraction(0) self.progressbar.hide() self.statusbar.pop(0) search.show() stop.hide() self._normalCursor() _runGtkMain() def _searchClicked(self, widget, xml, plist): search = xml.get_widget("searchButton") entry = xml.get_widget("searchEntry") stop = xml.get_widget("stopSearchButton") t = entry.get_text() if t: t = t.strip() else: t = "" if len(t) == 0: return t_list = t.split(" ") fields = ['name', 'summary', 'description'] plist.clear() self.searching = True search.hide() stop.show() self.progressbar.show() self.statusbar.push(0, _("Searching for '%s'") % (t)) self._busyCursor(False) _runGtkMain() found = False for (po, res) in self.searchGenerator(fields, t_list): _runGtkMain() if not self.searching: found = True # well, not found... but we asked to stop break self.progressbar.pulse() if po.repoid == "installed": type = SHOW_INSTALLED else: type = SHOW_AVAIL if type != SHOW_INSTALLED and self.simpleDBInstalled(po.name, po.arch): continue plist.addPackage(po, type) found = True self._stopSearch() # it's done if not found: d = gtk.MessageDialog(self.mainwin, gtk.DIALOG_MODAL, gtk.MESSAGE_INFO, gtk.BUTTONS_OK, _("No software matching search found.")) d.run() d.destroy() def _showListProf(self, *args): fn = "prof.0" import hotshot, hotshot.stats prof = hotshot.Profile(fn) rc = prof.runcall(self._showListReal) prof.close() stats = hotshot.stats.load(fn) stats.strip_dirs() stats.sort_stats('time', 'calls') stats.print_stats(20) return rc def _showListReal(self, *args): global last last = None def cmppo(po1, po2): # XXX: a bit ugly, but keeps things a little more responsive global last if time.time() - last > 0.05: last = time.time() _runGtkMain() if po1.name.lower() < po2.name.lower(): return -1 elif po1.name.lower() > po2.name.lower(): return 1 return comparePoEVR(po1, po2) self.__destroyCurrent() x = gtk.glade.XML(self.xml.relative_file("PackageSearch.glade"), root="searchBox", domain=I18N_DOMAIN) w = x.get_widget("searchBox") x.get_widget("searchHbox").hide() plist = PirutPackageList(self) plist.connect("changed", self._searchPackageSelected, x.get_widget("detailsTextView").get_buffer()) plist.connect("toggled", self._setApply) w.pack_start(plist, True, True) self.xml.get_widget("listFrame").add(w) self.xml.get_widget("mainBook").set_data("thepage", w) self._busyCursor() pbar = PirutCancellableProgress(_("Reading software information"), self.mainwin) pbar.show() _runGtkMain() try: # look through the available packages... s = self.pkgSack.returnNewestByNameArch() _runGtkMain() # and the rpmdb ones r = self.rpmdb.returnPackages() _runGtkMain() pos = s + r num = 0 tot = float(len(pos)) # hey, if I sort myself, I can shave the time by a lot! last = time.time() pos.sort(cmppo) _runGtkMain() for po in pos: num += 1 if po.repoid == "installed": t = SHOW_INSTALLED elif self.simpleDBInstalled(po.name, po.arch): continue else: t = SHOW_AVAIL plist.addPackage(po, t) if (num/tot) > pbar.get_fraction() + 0.01: pbar.set_fraction(num / tot) _runGtkMain() plist.doneAdding(sort = False) except PirutCancelledError: # FIXME: could we do something better here? pass pbar.destroy() self._normalCursor() gobject.idle_add(plist.grab_focus) _showList = _showListReal def _showBrowse(self, *args): grpsel = PirutGroupSelector(self, self.xml.relative_file) self.__destroyCurrent() self.xml.get_widget("browseFrame").add(grpsel.vbox) self.xml.get_widget("mainBook").set_data("thepage", grpsel.vbox) grpsel.doRefresh() def _apply(self, *args): if len(self.tsInfo) == 0: d = gtk.MessageDialog(self.mainwin, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, _("No software selected for installation " "or removal.")) d.run() d.destroy() return self.tsInfo.makelists() d = PirutDetailsDialog(self.mainwin, gtk.MESSAGE_QUESTION, [('gtk-cancel', gtk.RESPONSE_CANCEL), (_("Continue"), gtk.RESPONSE_OK, 'gtk-ok')], _("Package selections"), _("You have selected the following software " "installations and removals.")) b = gtk.TextBuffer() tag = b.create_tag('bold') tag.set_property('weight', pango.WEIGHT_BOLD) tag = b.create_tag('indented') tag.set_property('left-margin', 10) types=[(self.tsInfo.installed,_("Installing:")), (self.tsInfo.updated, _("Updating:")), (self.tsInfo.removed, _("Removing:"))] for (lst, strng) in types: if len(lst) > 0: i = b.get_end_iter() b.insert_with_tags_by_name(i, "%s\n" %(strng,), "bold") for txmbr in lst: i = b.get_end_iter() (n,a,e,v,r) = txmbr.pkgtup b.insert_with_tags_by_name(i, "%s-%s-%s\n" % (n,v,r), "indented") d.set_details(buffer = b) d.expand_details() rc = d.run() d.destroy() if rc == gtk.RESPONSE_CANCEL: return try: output = self.applyChanges(self.mainwin) except PirutError: self._undoDepInstalls() return if (len(self.tsInfo.installed) + len(self.tsInfo.updated) > 0 and len(self.tsInfo.removed) > 0): txt = _("Software installation and removal successfully completed.") elif len(self.tsInfo.removed) > 0: txt = _("Software removal successfully completed.") else: txt = _("Software installation successfully completed.") d = PirutDetailsDialog(self.mainwin, gtk.MESSAGE_INFO, [('gtk-ok', 0)], txt) if output and len(string.join(output.values(), "")) > 0: d.format_secondary_text("Some warnings were given.") d.set_details(buffer = outputDictAsTextBuffer(output)) d.run() d.destroy() self.reset() self.xml.get_widget("mainBook").set_current_page(BROWSE_PAGE) def _setApply(self, *args): # FIXME: it would be better if we just got a callback when # package was selected but that's a little ugly given # the way we import things w = self.xml.get_widget("applyButton") # this is a little bit of a hack... if (hasattr(self, "_tsInfo") and self._tsInfo is None) or \ len(self.tsInfo) == 0: w and w.set_sensitive(False) else: w and w.set_sensitive(True) return True def run(self): _runGtkMain() self.doRefresh() if len(self.repos.listGroupsEnabled()) == 0: self.xml.get_widget("mainBook").set_current_page(LIST_PAGE) else: self.xml.get_widget("mainBook").set_current_page(BROWSE_PAGE) self._showBrowse() gobject.timeout_add(1000, self._setApply) self.mainwin.show() gtk.main() def doRefresh(self): if self._onlyrepo: self.repos.disableRepo("*") self.repos.enableRepo(self._onlyrepo) self.doRefreshRepos(self._onlyrepo) def _repoConfig(self, *args): # FIXME: should we check for pending changes first? d = PirutRepoSelector(self) d.set_transient_for(self.mainwin) rc = d.run() d.destroy() # if things have changed, then we need to redo repo setup if rc: self.reset(True) self.xml.get_widget("mainBook").set_current_page(BROWSE_PAGE) def _about(self, *args): d = self.xml.get_widget("aboutDialog") d.show_all() d.run() d.hide() def quit(self, *args, **kwargs): if hasattr(self, "tsInfo") and len(self.tsInfo) > 0: d = gtk.MessageDialog(self.mainwin, gtk.DIALOG_MODAL, gtk.MESSAGE_QUESTION, message_format = _("Software selected and not installed. " "Would you like to finish installing or " "quit anyway, losing all package " "selections?")) d.add_button(_("_Don't quit"), gtk.RESPONSE_CANCEL) d.add_button(_("_Quit anyway"), gtk.RESPONSE_OK) rc = d.run() d.destroy() if rc == gtk.RESPONSE_OK: GraphicalYumBase.quit(self) else: return True GraphicalYumBase.quit(self, args, kwargs) def main(): textdomain(I18N_DOMAIN) parser = OptionParser() parser.add_option("-c", "--config", type="string", dest="config", default="/etc/yum.conf", help="Config file to use (default: /etc/yum.conf)") parser.add_option("", "--repo", type="string", dest="onlyrepo", default=None) (options,args) = parser.parse_args() gtk.glade.bindtextdomain(I18N_DOMAIN, "/usr/share/locale") try: # right now, we have to run privileged... if os.getuid() != 0: raise PirutError(_("Must be run as root.")) pm = PackageManager(options.config, options.onlyrepo) except PirutError, e: startupError(e) pm.run() if __name__ == "__main__": installExceptionHandler("pirut", "") main()

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