这篇文章上次修改于 275 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

      大家知道渗透测试中的信息收集是很关键步骤。其中能够准确全面的找到厂商的ip段,又是其中很重要的。相信大部分的人对厂商的子域<span style="line-height:2;">名,都会做很详细的收集。但是对ip段却没做这么细致的收集。今天我就分享下我是怎么收集厂商的ip段的,然后做信息初步探测的。

一、收集厂商的ip段</span>

  • 1、首先用的seay的子域名挖掘机或者其他的子域名收集的工具,对子域名进行收集,其实重点不是在收集到的域名,而是域名所对应的ip。
  • 2、爆破完二级域名,就可以右键导出存活网站。</span>
  • 3、然后就是就是去掉域名,留下ip的前三位,去重之后再生成C段。这样就能得到目标的不重复的ip段。脚本我已经写好,贴上脚本。

参考脚本:

import re
import sys
path=sys.argv[1]
path2=sys.argv[2]
f=open(path)
c_iplist=[]
#f1=open(’newip.txt’,’a’)
line=f.readline()
while line:
    line = f.readline()  
    ip=re.findall(’(?&lt;![.d])(?:d{1,3}.){3}d{1,3}(?![.d])’,line)
    #print ip[0]
    try:
        if re.match(’^(10|127|172|192)+.d+.d+.d+’,ip[0]):
            pass
        else:
            print ip[0]
            ip2=ip[0]
            print ip2+"&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;"
            c_iplist.append(ip2)
    except:
        pass
iplist=[]
iplist1=[]
f=open(path2,’a’)
for line in c_iplist:
    print line
    ip=re.findall(r’d+.d+.d+.’,line)
    iplist.append(ip[0])
for ip in iplist:
    print ip
    if ip not in iplist1:
        iplist1.append(ip)
for ip in iplist1:
    for i in range(1,255):
        print ip
        ip1=ip+str(i)+’
’
        f.write(ip1)
f.close</pre>

用法就是:python iplist.py xxx.txt yyy.txt(前者是你收集的域名和ip的结果的txt,后者是你要生成的ip段的文件名)。

二、简单的信息刺探

  • 1、这种方法收集的ip网往往很多,拿百度来说我最后收集的ip有2万多个,的确很多的。所以你还需要一个自动化的工具只管去喂ip然后帮你探测目标ip信息的工具。这里可以用nmap或者直接上lijiejie的BBscan。
  • 2、如果单独只是扫目录的话,把llijiejie的BBscan改一下,效果更好,先扫描端口,然后识别web服务,然后在上BBscan目录,因为有些web服务不一定是部署在80端口的。
  • 3、最好的方法就是对ip先探测一下端口,再识别服务,然后根据不同的服务来做不一样的事情。(可以根据这个思路做一个简单的扫描器,以后再谈)

有的童鞋可能会质疑,这样收集的ip误差太大。确实,对于小的厂商的确是这样的。但是对于大的互联网公司,是还是比较准确的,公司越大越好,这样越准确,据我测试就百度而言的准确率达百分之九十。

注:

搜集ip的好处:
1、可能触碰到厂商的边缘应用,或者测试系统,这些系统往往很脆弱</span>
2、做扫描的时候有可能躲过一些云waf或者cdn之类的,因为现在的云waf大部分的流程是,用户访问域名,域名先解析到云waf上,然后经过云waf过滤之后,再指向你要访问的真正的ip。所以直接通过ip做扫描,有些时候是能躲过云waf或者cdn的。
3、细心地同学还可以看到我脚本里面做了内网ip的过滤,其实这种方法还可能收集到内网ip段,可以用作后续的渗透测试的。

原文链接