初探脚本小子--快速上手自写信息收集脚本

原文地址:初探脚本小子_白帽子技术/思路_i春秋社区-分享你的技术,为安全加点温度. - Powered by Discuz! (ichunqiu.com)

最近在学习写脚本,这里作者分析几个信息收集的脚本,方便大家学习、理解一些工具的原理
 

渗透测试时找准一个目标后首先需要收集资产,子域名收集很重要,域名越多攻击面越大

子域名收集
 

[Python] 纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
import time
import requests
import tldextract
head = {'User-Agent''Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0'}#请求头
for yuming in open("yuming.txt"):#导入目标域名
    yuming = yuming.replace('\n', '')#去掉换行符
    extracted = tldextract.extract(yuming)#提取根域名
    root = extracted.registered_domain#提取根域名
    print(root)
    for name in open("ziyuming.txt"):#导入子域名字典
        name = name.replace('\n','')#去掉换行符
        url=name + '.' + root#拼接URL
        try:
            response = requests.get(url='http://' + url, headers=head, timeout=3)#尝试请求
            if response.status_code in [200302403]:#如果为以上状态码则则证明该域名存在
                print(url+'--存在')
                time.sleep(0.1)#添加延迟
        except Exception as e:
            continue
        url = ''




拿到域名之后需要反查真实IP方便CD扫描


域名反查IP
 

[Python] 纯文本查看 复制代码
?
1
2
3
4
5
import socket#导包
for yuming in open("yuming.txt"):#导入域名库
    yuming = yuming.replace('\n', '')#去掉换行符
    yuming = socket.gethostbyname(yuming)#调用socket中的gethostbyname()方法去反查IP
    print(yuming)#打印出IP

 (都是CDN)


域名反查之后,得到的IP或许不是真是IP,或者说绝大可能不是真是IP,一些大企业一般会挂上CDN


判断CDN
 

[Python] 纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
import os#导包
for yuming in open("yuming.txt"):#导入域名库
    yuming = yuming.replace('\n', '')#去掉换行符
    cdn_data=os.popen('nslookup '+ yuming).read()#调用终端命令行
    x=cdn_data.count(".")#计算“.“的个数
    # print(cdn_data)
    if x>=10:#个数大于10则说明又cdn
        print("有cdn")
    else:
        print("无cdn")


原理:如果有cdn,则cdn_data中”.“的个数会大于9个,如果没有cdn就只有9个,以此来简单判断有无cdn




如果拿到了真实IP,那么就可以对其进行C段扫描了


C段扫描
 

[Python] 纯文本查看 复制代码
?
1
2
3
4
5
6
7
8
import nmap
for IP in open("IP.txt"):#导入IP库
    IP = IP.replace('\n', '')#去掉换行符
    nm = nmap.PortScanner()#创建端口扫描对象
    host = IP + '/24'#给ip加上/24 例:127.0.0.1/24
    data=nm.scan(hosts=host,arguments='-T4 -F')#开始扫描并将结果返回给data
    print(nm.all_hosts())#打印出扫描出来的其他IP
    print(nm.csv())#打印出IP的TCP服务端口


其实就是调用了nmap进行扫描




扫描到大量C段的 其他IP后再进行批量扫端口


端口扫描
 

[Python] 纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
import socket
for IP in open("IP.txt"):#导入IP库
    IP = IP.replace('\n', '')#去掉换行符
    for port in range(8060,8081):#遍历8060到8080的端口
        server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  # 创建面向连接和网络的套接字
        server.settimeout(1)#限制重连时间
        result = server.connect_ex((IP,port))#尝试与服务端发起连接,并将结果返回给result(类似nmap全连接扫描)
        if result == 0:#如果结果为0则便是端口开放
            print(str(port)+"端口---open")
            server.close()#关闭连接
        else:
            continue



希望这篇文章对您有用!

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值