Avoid to check for existence of not needed UDFs and minor code adjustment for cleanup() method

This commit is contained in:
Bernardo Damele 2010-02-05 23:14:16 +00:00
parent b08a4efb4b
commit 5c92fad5dc
5 changed files with 18 additions and 17 deletions

View File

@ -46,18 +46,6 @@ class Abstraction(Web, UDF, xp_cmdshell):
Web.__init__(self)
xp_cmdshell.__init__(self)
def __cmdShellCleanup(self):
if not conf.cleanup:
if kb.dbms in ( "MySQL", "PostgreSQL" ):
self.cleanup()
elif kb.dbms == "Microsoft SQL Server":
self.cleanup(onlyFileTbl=True)
else:
errMsg = "Feature not yet implemented for the back-end DBMS"
raise sqlmapUnsupportedFeatureException, errMsg
def execCmd(self, cmd, silent=False, forgeCmd=False):
if self.webBackdoorUrl and not kb.stackedTest:
self.webBackdoorRunCmd(cmd)
@ -103,9 +91,6 @@ class Abstraction(Web, UDF, xp_cmdshell):
else:
self.execCmd(cmd, forgeCmd=True)
if not conf.osShell and not conf.osPwn and not conf.cleanup:
self.__cmdShellCleanup()
def shell(self):
if self.webBackdoorUrl and not kb.stackedTest:
infoMsg = "calling OS shell. To quit type "
@ -157,8 +142,6 @@ class Abstraction(Web, UDF, xp_cmdshell):
self.runCmd(command)
self.__cmdShellCleanup()
def initEnv(self, mandatory=True, detailed=False, web=False):
if self.envInitialized:
return

View File

@ -116,6 +116,13 @@ class UDF:
return output
def checkNeededUdfs(self):
if not conf.osPwn:
self.sysUdfs.pop("sys_bineval")
if not conf.osCmd and not conf.osShell and not conf.regRead:
self.sysUdfs.pop("sys_eval")
def udfCreateFromSharedLib(self):
errMsg = "udfSetRemotePath() method must be defined within the plugin"
raise sqlmapUnsupportedFeatureException(errMsg)

View File

@ -560,6 +560,7 @@ class MySQLMap(Fingerprint, Enumeration, Filesystem, Miscellaneous, Takeover):
self.udfLocalFile += "/mysql/linux/lib_mysqludf_sys.so"
self.udfSharedLibExt = "so"
self.checkNeededUdfs()
self.udfInjectCore(self.sysUdfs)
def uncPathRequest(self):

View File

@ -469,6 +469,7 @@ class PostgreSQLMap(Fingerprint, Enumeration, Filesystem, Miscellaneous, Takeove
self.udfLocalFile += "/postgresql/linux/%s/lib_postgresqludf_sys.so" % majorVer
self.udfSharedLibExt = "so"
self.checkNeededUdfs()
self.udfInjectCore(self.sysUdfs)
def uncPathRequest(self):

View File

@ -100,6 +100,9 @@ class Takeover(Abstraction, Metasploit, Registry):
if not web or (web and self.webBackdoorUrl is not None):
self.runCmd(conf.osCmd)
if not conf.osShell and not conf.osPwn and not conf.cleanup:
self.cleanup()
def osShell(self):
stackedTest()
@ -120,6 +123,9 @@ class Takeover(Abstraction, Metasploit, Registry):
if not web or (web and self.webBackdoorUrl is not None):
self.shell()
if not conf.osPwn and not conf.cleanup:
self.cleanup()
def osPwn(self):
goUdf = False
@ -228,6 +234,9 @@ class Takeover(Abstraction, Metasploit, Registry):
if not web or (web and self.webBackdoorUrl is not None):
self.pwn(goUdf)
if not conf.cleanup:
self.cleanup()
def osSmb(self):
stackedTest()