• 通过shodan icon hash找到源站IP的方法——本质上是因为shodan会去掉cdn 所以出来的结果一般为源站IP


    Shodan的http.favicon.hash语法详解与使用技巧

    直接上代码,py2、py3区别下:

    import mmh3
    import codecs
    import requests
    
    url = 'https://s.mozhe.cn/static/ico/favicon.ico'
    url = 'http://www.cnblogs.com/favicon.ico'
    """
    python2
    _icon = mmh3.hash(requests.get(url).content.encode('base64'))
    print(_icon)
    """
    _icon = mmh3.hash(codecs.lookup('base64').encode(requests.get(url).content)[0])
    print(_icon)
    

      在Shodan搜索中有一个关于网站icon图标的搜索语法,http.favicon.hash,我们可以使用这个语法来搜索出使用了同一icon图标的网站,不知道怎么用的朋友请参考我上一篇文章。

      通过上一篇文章我们了解到,由于hash为一个未知的随机数,所以是无法通过输入一个确定的hash值来搜索带有指定图标的网站的,只能够通过查看一个已经被Shodan收录的网站的hash值,来进一步获取到所有带有某icon的网站。那么这里的用法就非常的有局限性,你只能是碰运气的来找到你所需要查找的网站,因为Shodan不一定收录了你想要搜索的网站。接着上一篇讲,那么如果Shodan收录了某个ip,这个服务器带有某个icon图标,我能不能搜索所有带有此icon的服务器ip?答案是可以的。

      这里拿百度举例,这里有一个ip为180.97.34.35的服务器,截图如下,

      如果我想搜索带有这个icon的所有ip地址的话,可以先在Shodan搜索这个ip,这里要用到一个之前没注意到的东西,就是Shodan的原始数据(Raw Data)功能,

       点击详情里的View Raw Data,打开可以看到Shodan所存储的关于这个ip所有信息的原始数据,由于东西篇幅太多,就不一一截图,

      这里我们需要用到关于icon hash的字段是这个,data.0.http.favicon.hash,如图所示可以看到结果为-1507567067,这个数值就是http.favicon.hash中所需要的搜索值,

      根据上面我们得到的hash值来尝试使用http.favicon.hash语法进行搜索,可以看到我们成功得到了所有的带有这个icon的网站,

      Shodan的原始数据中还有其他很多东西,这里看一下data.0.http.favicon.data字段,从字面意思上来看应该是和favicon有关的,是他的数据,而这个格式看起来有没有很像我们熟悉的base64?没错了,其实这个字段就是图标base64之后的结果,

      这里我们可以使用python脚本简单的进行下检验,脚本如下,可以看到结果与网站中数据大致是一样的,后来询问了Shodan的工程师,确认了这个字段中存储的就是图标结果的base64格式。

    1
    2
    3
    4
    5
    import requests
     
    response = requests.get('https://www.baidu.com/favicon.ico')
    data = response.content.encode('base64')
    print data

     

      至此我们已经对Shodan的一些细节有了更进一步的了解,现在出现了一种新的状况:假如你有一个网站,打开只有一个登陆界面,没有其他任何信息,但是此时你发现他有一个icon图标,所以猜想他可能是使用了某个不知名的cms之类,这里想到可以使用Shodan来搜索出带有同样icon的网站,从其他使用了相同模板的网站来寻找突破口。根据我们上面讲的,去Shodan中搜索这个ip,然而当你在Shodan中搜索时,却发现Shodan并没有收录这个ip地址,没有搜到任何结果,这个时候该怎么办?

      这里就要讲到今天的重点,如何通过一个网站icon逆推出Shodan搜索所需要的hash值。其实也非常简单,结合我上面说到的脚本就可以实现,通过一些渠道了解到,Shodan在处理这个结果时,使用了一个名为mmh3的python库,用的是MurmurHash3函数,一般用来进行哈希检索操作,关于mmh3库的具体用法可以看这里——>传送门点我。所以Shodan这里对于icon图标hash值的产生就清楚了,首先获取网站的icon,网站图标进行base64编码,并使用mmh3进行hash计算。mmh3模块可以通过pip安装,安装时可能会报错,我这里遇到需要安装C++ Compiler Package for Python 2.7,有其他报错的话根据报错安装即可,使用的为python2.7,不需要添加seed,脚本如下:

    1
    2
    3
    4
    5
    6
    7
    import mmh3
    import requests
     
    response = requests.get('https://www.baidu.com/favicon.ico')
    favicon = response.content.encode('base64')
    hash = mmh3.hash(favicon)
    print hash

       通过计算会得出一串数字,结果为-1507567067,再结合Shodan语法http.favicon.hash即可搜索出刚才的结果。

      这里进行测试,拿博客园举例,f12查看图标的地址,为http://common.cnblogs.com/favicon.ico,看一下没有问题,是icon。

      之后将脚本中的地址改为这个,进行计算,得出一个值-395680774。

      之后在Shodan中进行搜索,可以看到成功搜到了我想要的结果,虽然数量比较少。

  • 相关阅读:
    Android 废弃方法属性解决
    Android RecycleView分组
    Android 第三方库FlycoTabLayout
    Android 自定义dialog出现的位置
    Android 底部弹窗实现
    Android 自定义设置布局
    Android 微信、qq分享文本 (Intent)
    SpringBoot关于跨域的三种解决方案
    记录一次通用Mapper+自定义mapper出现的问题分析以及排查
    IDEA配置Maven+新建Maven项目
  • 原文地址:https://www.cnblogs.com/bonelee/p/14753526.html
Copyright © 2020-2023  润新知