
子域名收集
子域名收集是最简单的收集手法之一,有很多在线的工具可以直接套用,这里分享几个我经常用的。
开心的时候用用这个扫描器
为什么这么说,因为这是我写的(你生气用的话我怕我屏幕里突然冒出一个拖孩):
importrequestsimportthreadingfrombs4importBeautifulSoupimportreimporttimeurl=input('url(如):')head={'User-Agent':'Mozilla/5.0(;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/58.0.3029.110Safari/537.36'}ip='{}'.format(url)domain_url=domain_url[1]+'.'+domain_url[2]domain_url=urldomain='{}/'.format(domain_url)t=("%Y-%m-%d"+'_',())html_file=open(url+'_'+t+'.html','w')html_('''headtitle%s的扫描结果/titlelinkrel="stylesheet"href=""scriptsrc=""/scriptscriptsrc=""/scriptstylepre{margin:000px;}/style/headulid="myTab"class="navnav-tabsnavbar-fixed-topnavbarnavbar-default"liclass="active"ahref="cms"data-toggle="tab"CMS识别/a/liliahref="▄▄▄▄▄▄▄▄▄▄▄▀▄▄▄▄▀█▄██▀▀███▄███▀▄▄▄█▀▄▀▀▄██▄█▀▄▄█▄▄█▄▄█▄▄█▄▄▀▄▄▀name::2016-11-05blog:("pip3installexp10it-U--no-cache-dir")fromexp10itimportfiglet2filefiglet2file("3xp10it",0,True)(1)fromexp10itimportCLIOutputfromexp10itimportget_root_domainfromexp10itimportget_string_from_commandfromexp10itimportget_http_or_httpsfromexp10itimportpost_requestfromexp10itimportget_requestfromexp10itimportcheckvpnimportsysimportreclassXcdn(object):def__init__(self,domain):本工具判断错误,checkvpn在可以ping通google的条件下返回1while1:ifcheckvpn()==1:breakelse:(1)print("vpnisoff,connectvpnfirst")ifdomain[:4]=="http":print("domainformaterror,makesuredomainhasnohttp,\")(0)下面的sed的正则中不能有\n,sed匹配\n比较特殊下面调用相当于main函数的get_actual_ip_from_domain函数actual_ip=_actual_ip_from_domain()ifactual_ip!=0:print("恭喜,%s的真实ip是%s"%(,actual_ip))检测domain是否有cdn否则返回{'has_cdn':1,'is_cloud_flare':0}或{'has_cdn':0,'is_cloud_flare':0}importreCLIOutput().good_print("现在检测domain:%s是否有cdn"%)has_cdn=0下面通过a记录个数来判断,如果a记录个数1个,认为有cdnresult=get_string_from_command("diga%s+short"%)find_a_record_pattern=(r"((\d{1,3}\.){3}\d{1,3})",result)iffind_a_record_pattern:ip_count=0foreachinfind_a_record_pattern:ip_count+=1ifip_count1:has_cdn=1return{'has_cdn':1,'is_cloud_flare':0}return{'has_cdn':0,'is_cloud_flare':0}defget_domain_actual_ip_from_phpinfo(self):return0代表没有通过phpinfo页面得到真实ipreturn0defflush_dns(self):要刷新dnscache才能让修改hosts文件有效CLIOutput().good_print("现在刷新系统的dnscache")command="servicenetwork-managerrestart/etc//networkingforce-reload"(command)(3)defmodify_hosts_file_with_ip_and_domain(self,ip):通过修改hosts文件检测ip是否是domain对应的真实ipCLIOutput().good_print("现在通过修改hosts文件并刷新dns的方法检测ip:%s是否是domain:%s的真实ip"%(ip,))python通过requests库或mechanicalsoup库或selenium_phantomjs来请求时不会被dns缓存影响,只会被hosts文件影响dns解析,人工用浏览器访问域名则会受dns缓存影响这里要用title判断,html判断不可以,title相同则认为相同_title==hosts_changed_domain_title:CLIOutput().good_print("检测到真实ip!!!!!!",'red')returnTrueelse:CLIOutput().good_print("当前ip不是域名的真实ip",'yellow')returnFalsedefget_c_80_or_443_list(self,ip):这里不用nmap扫描,nmap扫描结果不准("apt-getinstallmasscan")_or_https=="http":scanPort=80CLIOutput().good_print("现在进行%s的c段开了80端口机器的扫描"%ip)_or_https=="https":scanPort=443CLIOutput().good_print("现在进行%s的c段开了443端口机器的扫描"%ip)masscan_command="masscan-p%d%s/24/tmp/"%(scanPort,ip)(masscan_command)withopen("/tmp/","r+")asf:strings=()检测ip的c段有没有domain的真实ip,如果有则返回真实ip,如果没有则返回0CLIOutput().good_print("现在检测ip为%s的c段中有没有%s的真实ip"%(ip,))target_list=_c_80_or_443_list(ip)foreach_ipintarget_list:ifTrue==_if_ip_is_actual_ip_of_domain(each_ip):returneach_ipreturn0defget_ip_from_mx_record(self)::_root_domainroot_domain=get_root_domain()fromexp10itimportget_string_from_commandresult=get_string_from_command("dig%s+shortmx"%root_domain)sub_domains_list=(r"\d{1,}(.*\.%s)\."%root_(".","\."),result)ip_list=[]foreachinsub_domains_list:print(each)ip=_ex(each)[2]ifip[0]notinip_list:ip_(ip[0])returnip_listdefcheck_if_mx_c_machines_has_actual_ip_of_domain(self):有则返回真实ip,没有则返回0CLIOutput().good_print("尝试从mx记录的c段中查找是否存在%s的真实ip"%)ip_list=_ip_from_mx_record()ifip_list!=[]:foreach_ipinip_list:result=_if_ip_c_machines_has_actual_ip_of_domain(each_ip)ifresult!=0:returnresultelse:continuereturn0defget_ip_value_from_online_cloudflare_interface(self):如果查询到真实ip则返回ip值,如果没有查询到则返回0CLIOutput().good_print("现在从在线cloudflare类型cdn查询真实ip接口尝试获取真实ip")url=""post_data='cfS=%s'%=post_request(url,post_data)findIp=(r"((\d{1,3}\.){3}\d{1,3})",content)iffindIp:(1)return0defget_actual_ip_from_domain(self):如果找到了则返回ip,如果没有找到返回0CLIOutput().good_print("进入获取真实ip函数,认为每个domain都是有cdn的情况来处理")importsockethas_cdn_value=_has_cdn()ifhas_cdn_value['has_cdn']==1:CLIOutput().good_print("检测到domain:%s的A记录不止一个,认为它有cdn"%)passelse:CLIOutput().good_print("Attention!!!Domaindoesn'thavecdn,Iwillreturntheonlyoneip")true_ip=_ex()[2][0]returntrue_ip下面尝试通过可能存在的phpinfo页面获得真实ipip_from_phpinfo=_domain_actual_ip_from_phpinfo()ifip_from_phpinfo==0:passelse:returnip_from_phpinfo#下面通过mx记录来尝试获得真实ipresult=_if_mx_c_machines_has_actual_ip_of_domain()ifresult==0:passelse:returnresultprint("很遗憾,在下认为%s有cdn,但是目前在下的能力没能获取它的真实ip,当前函数将返回0"%)return0if__name__=='__main__':importsysdomain=[1]Xcdn(domain)8.服务器ssh配置信息,丢工具:
9.敏感文件爆破
10.根据目标系统情况:根据目标系统情况是因为看他对应的系统是什么对应有什么漏洞,下面这个是tomcat的session泄露:
/examples/servlets/servlet/SessionExample/examples//examples/servlets/servlet/SessionExample/examples/
敏感目录泄露
WEB-INF/泄露
WEB-INF是Java的WEB应用的安全目录。如果想在页面中直接访问其中的文件,必须通过文件对要访问的文件进行相应映射才能访问:
/WEB-INF/config//WEB-INF//WEB-INF/classes//WEB-INF/lib//WEB-INF/src//WEB-INF/泄露
通过它我们可以看项目历史:
网站源代码泄露
不多介绍,可能管理员觉得网站不安全,需要我们审计一下:
[]()[]()[]()
这些有很多,,不一一详细,后面我会将这些全部集合在一个字典里,然后我们可以放入目录遍历的工具里批量扫~
利用shodan、fofa等收集信息
查找标题是携程并且语言是国语的站点:
https://[/search?query=:](:)"携程"country:"CN"。
我们可以将其收藏为文件夹,方便下次打开,然后记录时间,看看有没有新上线的(这里已经有监控的功能,各位师傅可以去看看米斯特大佬写的shodan监控文章,很有趣很实用)
shodan、fofa不多介绍了,有对应的手册,见的肯定比我好。
思路扩展
思路扩展就是在a功能点中找出b功能点,以此类推。
比如一些后台登录是,我们是不是可以尝试把login改成register来注册。
再比如获取用户手机号的接口(这里不存在越权),然后我们把GetPhone改成GetPasswd或者GetPwd或者GetPassword,然后id就可能可以越权,或者这里可以json劫持或者origin劫持等,我们可以诱导用户点开来劫持账号密码。