From 6712f4da55e5c27d2d0b186a3e1e8c7a912f6144 Mon Sep 17 00:00:00 2001 From: Miroslav Stampar Date: Wed, 24 Nov 2010 14:20:43 +0000 Subject: [PATCH] some refactoring and one less request for aspx maintanance during --os-shell --- lib/core/common.py | 14 +++++++------- lib/takeover/web.py | 9 ++++++--- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/lib/core/common.py b/lib/core/common.py index cd7e6fe87..e42b77115 100644 --- a/lib/core/common.py +++ b/lib/core/common.py @@ -1424,7 +1424,7 @@ def goGoodSamaritan(prevValue, originalCharset): else: return None, None, None, originalCharset -def getCompiledRegex(regex, *args): +def getCompiledRegex(regex, flags=0): """ Returns compiled regular expression and stores it in cache for further usage @@ -1432,11 +1432,11 @@ def getCompiledRegex(regex, *args): <_sre.SRE_Pattern object at... """ - if (regex, args) in kb.cache.regex: - return kb.cache.regex[(regex, args)] + if (regex, flags) in kb.cache.regex: + return kb.cache.regex[(regex, flags)] else: - retVal = re.compile(regex, *args) - kb.cache.regex[(regex, args)] = retVal + retVal = re.compile(regex, flags) + kb.cache.regex[(regex, flags)] = retVal return retVal def getPartRun(): @@ -1628,11 +1628,11 @@ def getPublicTypeMembers(type_): return retVal -def extractRegexResult(regex, content): +def extractRegexResult(regex, content, flags=0): retVal = None if regex and content and '?P' in regex: - match = re.search(regex, content) + match = re.search(regex, content, flags) if match: retVal = match.group("result") diff --git a/lib/takeover/web.py b/lib/takeover/web.py index 66bd61247..260ba437f 100644 --- a/lib/takeover/web.py +++ b/lib/takeover/web.py @@ -85,9 +85,8 @@ class Web: } if self.webApi == "aspx": - page = Request.getPage(url=self.webStagerUrl, content=True, raise404=False) - multipartParams['__EVENTVALIDATION'] = extractRegexResult(r"__EVENTVALIDATION[^>]+value=\"(?P[^\"]+)\"", page[0]) - multipartParams['__VIEWSTATE'] = extractRegexResult(r"__VIEWSTATE[^>]+value=\"(?P[^\"]+)\"", page[0]) + multipartParams['__EVENTVALIDATION'] = kb.data.__EVENTVALIDATION + multipartParams['__VIEWSTATE'] = kb.data.__VIEWSTATE page = Request.getPage(url=self.webStagerUrl, multipart=multipartParams, raise404=False) @@ -212,6 +211,10 @@ class Web: logger.warn(warnMsg) continue + elif self.webApi == "aspx": + kb.data.__EVENTVALIDATION = extractRegexResult(r"__EVENTVALIDATION[^>]+value=\"(?P[^\"]+)\"", uplPage, re.I) + kb.data.__VIEWSTATE = extractRegexResult(r"__VIEWSTATE[^>]+value=\"(?P[^\"]+)\"", uplPage, re.I) + infoMsg = "the file stager has been successfully uploaded " infoMsg += "on '%s' ('%s')" % (directory, self.webStagerUrl) logger.info(infoMsg)