初探漏洞挖掘基础
优采云 发布时间: 2020-08-09 10:11单线程:
import requests
import threading
import re
targets = []
names = []
def icp_info(host):
url = "https://icp.chinaz.com/ajaxsync.aspx?at=beiansl&callback=jQuery111305329118231795913_1554378576520&host=%s&type=host"%host
html = requests.get(url,timeout=(5,10)).text
pattern = re.compile('SiteName:"(.*?)",MainPage:"(.*?)"',re.S)
info = re.findall(pattern,html)
for i in range(0,32):
try:
name = info[i][0]
target = info[i][1]
print("%s:%s"%(name,target))
if target not in targets:
targets.append(target)
with open("icp_info.txt","a+") as f:
f.write("%s:%s"%(name,target) + "\n")
continue
else:
continue
except Exception as e:
continue
def start():
with open("url.txt","r+") as a:
for b in a:
b = b.strip()
icp_info(host=b)
a.close()
def main():
thread = threading.Thread(target=start,)
thread.start()
if __name__ == '__main__':
main()
先知的代码块可能不太友好,可以瞧瞧图片:
使用方式:urls.txt传入你须要查询的网站,会手动对获取到的domain进行去重。
使用维基百科对个别添加资产词条的网站可以获取到其部份资产信息:
但是某南没有添加该词条,所以获取不到相关信息。
步骤:
先对已知网站进行whois查询,我们这儿可以去微步查询历史whois,可以获取到历史的whois信息。
利用这种信息,我们就可以反查whois,获取该注册者/电话/邮箱下的相关域名。
我正在写一个脚本,即批量获取whois->反查whois->提取关键信息->去重。
写好了我会发到github上,可关注:
我们可以直接搜索网站官网,可以获得一些页面/头部中富含该关键字的网站。
zoomeye:
shodan:
fofa:
此外,我们还可以借助那些搜索引擎的搜索句型来获取资产。
shodan可以搜索指定公司的资产,也可以借助特定的网站logo来获取资产。
比如我们发觉某南的网站icon基本为同一个,我们就可以先去搜索,获取其带有icon的网站,随便选一个获取hash后借助搜索句型来获取指定icon的网站。
fofa可以直接借助domain关键字来搜索特定网站下的子域名:
zoomeye可以借助hostname关键字来获取主机列表中的资产:
github也可以拿来获取资产,但是大多数情况下还是用于获取敏感信息(用户名/密码/邮箱)等。
当然也可以拿来搜索资产:
这里推荐一款平常在用的github敏感信息采集工具:
我们可以自定义规则,来获取自己所须要的信息。
这里还是以某南为例:
我们除了可以采集企业公众号,还可以采集企业的小程序,因为其中大部分都是会与WEB端的插口做交互的。
公众号:
小程序:
我们不光须要从企业网站中找寻该企业开发的APP,也可以自己通过关键字来获取APP,因为其中有的APP是公测的,只是上线了,但是还未对外公布。
以某南为例:
我们不仅直接搜索企业关键字外,还可以获取其开发者的历史开发记录:
这样循环:APP->开发者->APP
在这过程中我们常常能获取到许多APP,后续再对其进行相关的渗透。
我们可以使用Google/Bing/Baidu等网站对某个网站进行资产采集:
当然,搭配搜索句型食用疗效更佳:
之前提及了采集APP资产,有的APP实际上并不只是使用用户可用的那几个插口,可能还有插口在代码中,这时候可以用工具将这种URI提取下来。
这里推荐两款从APK中提取有效信息的工具:
很多刚钻洞的师父可能不太注意JS,但实际上JS中可能隐藏了很重要的插口,其中可能就存在未授权等漏洞,这里推荐同学写的一款从JS中提取有效域名/api的工具。
JSFINDER:
调的是LinkFinder的正则,可以循环爬取,即:
爬取domain->获取domain主页面下的link->获取domain主页面下的js->获取link页面下的js->解析所有js并提取出有效信息
中期
到了此步我们早已采集了企业的大部分资产了,剩下的就是获取更多资产,即子域名/IP/PORT/服务...等。
sublist3r:
这是一款很不错的工具,调用了几个搜索引擎以及一些子域名查询网站的API,具体可以去项目页查看。
sublist3r:
subfinder:
这款工具调用的API有很多:
Ask,Archive.is,百度,Bing,Censys,CertDB,CertSpotter,Commoncrawl,CrtSH,DnsDB,DNSDumpster,Dnstable,Dogpile,Entrust CT-Search,Exalead,FindSubdomains,GoogleTER,Hackertarget,IPv4Info,Netcraft,PassiveTotal,PTRArchive,Riddler ,SecurityTrails,SiteDossier,Shodan,ThreatCrowd,ThreatMiner,Virustotal,WaybackArchive,Yahoo
初次使用须要我们自己配置API插口的帐号/密码/key...等。
图片始于youtube:
subfinder:
github:
LAYER:
很早之前牧师写的一款工具,可以手动过滤泛解析的域名,字典+API的形式来采集资产,当然更多的是字典,速度也相当可观:
altdns:
这款工具我通常是到最后采集完了所以子域名并去重后使用的,他可以帮助我们发觉一些二级/三级非常隐蔽的域名。
以vivo举例:
altdns:
关于企业IP的采集我们可以直接写脚本去调ip138的插口,可以获取到当前解析IP和历史解析IP,还是比较全的。
ip138:
获取完企业的IP范围以后,我们就可以用nmap/masscan等工具对其端口/服务进行扫描,这个过程可能会有点久。
我们须要先判别企业是直接买了一个C段的IP,还是只使用一个IP,再选择扫描整个C段或则是单个IP。
这是我之前使用nmap对某东域名批量进行C段扫描的结果:
我们的注意力可以置于几个WEB服务端口,和一些可能存在漏洞的服务端口,如redis/mongodb等。
至此,资产采集基本早已结束了,我们可以将采集到的资产选择性的入库,这样以后获取新资产时就可以对比一下是否存在。
后期
这部份可能是我写的最少的部份。
获取完资产然后,就是苦力活了,我的步骤是,先把获取到的资产丢到扫描器(awvs/nessus)里先扫一遍,避免一些没必要的体力劳动。
nessus主要拿来扫描端口服务的漏洞以及一些系统CVE,awvs主要拿来扫描WEB端的漏洞,如XSS/SQLI/CSRF/CORS/备份文件...等等。
指纹辨识部份可以使用云悉的,可以自己写个插件之后申请个API:
我都会用BBSCAN/weakfilescan来扫描网站中可能存在的敏感信息,如.git/.svn/备份文件等等。
BBSCAN:
weakfilescan:
之后的基本就是自动劳动了,对获取到的资产借助已有知识一个个的测。