云扫描之Python ssl解析(奇淫技巧)IP挖掘

云扫描

随着越来越多的公司转向使用不同的云基础设施,一些围绕云服务的新型攻击和传统攻击逐渐形成。这通常是由于

公司错误的配置和缺乏对云基础设施上公共条款的确切了解。无论是选择亚马逊 EC2、Azure、谷歌云还是其他云

服务提供商,使用不同的云基础设施都已成为一种全球趋势。

对于红队队员来说,一个问题是如何在不同的云环境中进行探索。由于许多目标公司使用动态 IP,他们的服务器可

能不仅变化很快,而且也不在云提供商的某个列表中列出。例如,如果你使用 AWS,它们在全世界范围内拥有巨

大的范围。根据你选择的区域,你的服务器将随机放入一个大的范围。对于外人来说,发现并监控这些服务器并不

容易。

首先,很重要的一点是要弄清楚不同提供者拥有的 IP 范围。

Amazon IP 范围

Azure IP 范围

谷歌云 IP 范围

阿里云 IP范围

这些范围非常大,手动扫描非常困难  

我们发现,很多公司没有意识到他们在互联网上暴露的东西。特别是随着云服务使用量的增加,许多公司没有正确

地配置安全的访问控制列表。他们相信他们的服务器是受保护的,但我们可以发现他们是暴露在互联网上的。包括

Redis 数据库、Jenkin 服务器、Tomcat 管理、NoSQL 数据库等等——其中许多可以导致远程代码执行以致利益损

失。

本来之前是用小米范的webfinder去挖掘目标业务 发现全部扫描起来实在太慢了 

子域名挖掘

为了帮助扫描证书中的主机名 参考大佬的 源码 sslScrape 改造了下(其实是他的看不懂 自己按这个思路去弄的 py代码水平不咋地 勿喷

 将云IP段 所有443主机扫描出来 通过文件去 遍历 ssl证书的主机名

import ssl
import socket
import time
import pymongo
from pymongo import MongoClient
# 导入
from pymongo.errors import DuplicateKeyError

def getSubjectName(host,port = 443):
    try:
        #证书不匹配问题
        ssl.match_hostname = lambda cert, hostname: True
        ssl._create_default_https_context = ssl._create_unverified_context
        s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
        #这里一定要设置超时 要不会一直阻塞
        s.settimeout(5)
        ctx = ssl.create_default_context()
        ws = ctx.wrap_socket(s, server_hostname = host)
        ws.connect((host, port))

        cert = ws.getpeercert()

        #print(cert)
        for item in cert['subject']:
            for i in range(len(item)):
                if item[i][0] == 'commonName':
                    subName = item[i][1]

        ws.close()
        s.close()

        return  subName
    except Exception as e:
        print(e)
        return

mongo = pymongo.MongoClient('mongodb://localhost:27017/')
collection = mongo['fuck86']['httpssl']
collection.ensure_index('subName', unique=True)

filepath = "C:/Users/Alienware/Desktop/https.txt"
with open(filepath) as fp:
    for line in fp:
        line = line.strip("\n")
        subName = getSubjectName(line)

        if subName:
            jsonp = {
                "ip":line,
                "subName":subName
            }
            try:
                collection.insert(jsonp)
            except Exception as e:
                continue
        else:
            print("subName as None")

这里 Python 解析ssl是个坑  

参考 https://docs.python.org/3.2/library/ssl.html#ssl.wrap_socket

QQ截图20191001195933.png

QQ图片20191001193749.png

 

这里提取的主机名多数是 子域挖掘工具通常扫描不到的 对信息搜集应该会有意想不到的发现

本博客所有文章如无特别注明均为原创。作者:odaycaogen复制或转载请以超链接形式注明转自 123``blog
原文地址《云扫描之Python ssl解析(奇淫技巧)IP挖掘

郑重声明:本文只做技术交流学习使用,请尊重当地法规法律,勿对企业或个人网站及app进行破坏。如产生连带法律责任 123``blog 作者本人概不负责。

相关推荐

发表评论

路人甲 表情
Ctrl+Enter快速提交

网友评论(0)