渗透测试——简单的流程化信息收集

打印 上一主题 下一主题

主题 845|帖子 845|积分 2545

简单的流程化信息收集

脚本
  1. import os
  2. import fnmatch
  3. import socket
  4. import shutil
  5. def checkcdn(host):
  6.     ip_list=[]
  7.     try:
  8.         addrs = socket.getaddrinfo(host, None)
  9.         for item in addrs:
  10.             if item[4][0] not in ip_list:
  11.                 ip_list.append(item[4][0])
  12.         count_ip = len(ip_list)
  13.         if count_ip > 1:
  14.             return False
  15.         elif count_ip == 1:
  16.             return ip_list[0]
  17.         else:
  18.             return False
  19.     except Exception as e:
  20.         return False# 打印错误
  21. print("by k1115h0t")
  22. print("根域名放置在domians.txt中")
  23. print("当前文件夹下放置httpx")
  24. os.system('subfinder/subfinder -dL domains.txt -all -o subfinder_subdomains.txt')
  25. os.system('python3 oneforall/oneforall.py --targets domains.txt run')
  26. oneforall_result=''
  27. for f_name in os.listdir('oneforall/results'):
  28.         if fnmatch.fnmatch(f_name, 'all*.txt'):
  29.             oneforall_result='oneforall/results/'+f_name
  30. # 读取第一个文本文件
  31. with open(oneforall_result, 'r') as file1:
  32.     content1 = file1.readlines()
  33. # 读取第二个文本文件
  34. with open('subfinder_subdomains.txt', 'r') as file2:
  35.     content2 = file2.readlines()
  36. # 合并两个文本文件
  37. merged_content = content1 + content2
  38. # 去重
  39. unique_content = list(set(merged_content))
  40. # 将去重后的内容写入新的文本文件
  41. with open('subdomains.txt', 'w') as merged_file:
  42.     merged_file.writelines(unique_content)
  43. print("================================================")
  44. print("================================================")
  45. print("================================================")
  46. print("子域名已经全部扫描完成,子域名结果存储在 subdomains.txt")
  47. print("开始识别CDN")
  48. print("================================================")
  49. print("================================================")
  50. print("================================================")
  51. if os.path.exists('oneforall/results'):
  52.     shutil.rmtree(r'oneforall/results')
  53. os.remove('subfinder_subdomains.txt')
  54. f1=open(file='subdomains.txt',mode='r',encoding='utf-8')
  55. f2=open(file='cdn.txt',mode='a',encoding='utf-8')
  56. f3=open(file='nocdn.txt',mode='a',encoding='utf-8')
  57. f4=open(file='nocdn_ip.txt',mode='a',encoding='utf-8')
  58. l1=[]
  59. num=1
  60. for i in f1.readlines():
  61.     newi=i.strip('\n')
  62.     result=checkcdn(newi)
  63.     # print(num)
  64.     num=num+1
  65.     if result!=False:
  66.         f3.write(i)
  67.         if result not in l1:
  68.             l1.append(result)
  69.     else:
  70.         f2.write(i)
  71. for j in l1:
  72.     f4.write(j+'\n')
  73. f1.close()
  74. f2.close()
  75. f3.close()
  76. f4.close()
  77. print("================================================")
  78. print("================================================")
  79. print("================================================")
  80. print("cdn识别完成,结果存储在 cdn.txt nocdn.txt nocdn_ip.txt")
  81. print("开始调用httpx")
  82. print("================================================")
  83. print("================================================")
  84. print("================================================")
  85. os.system('./httpx -l cdn.txt -sc -cl -title -o cdn_httpx.txt')
  86. os.system('./httpx -l nocdn.txt -sc -cl -title -o nocdn_httpx.txt')
  87. print("================================================")
  88. print("================================================")
  89. print("================================================")
  90. print("httpx识别完成,结果存储在 cdn_httpx.txt nocdn_httpx.txt")
  91. print("开始调用rustscan")
  92. print("================================================")
  93. print("================================================")
  94. print("================================================")
  95. os.system("rustscan -a nocdn_ip.txt -r 1-65535 -- -sC -Pn -n -sV >> rustscan_nocdn.txt")
复制代码
使用时需要新建一个domains.txt用于存放根域名(baidu.com)

脚本的流程


  • 调用 subfinder 和 oneforall进行子域名扫描
    1. 生成 subdomains.txt 存储所有的子域名
    复制代码
  • 对子域名结果进行分析去重,并识别cdn
    1. 生成 cdn.txt nocdn.txt nocdn_ip.txt
    复制代码
  • 使用httpx进行扫描
    1. 生成 cdn_httpx.txt nocdn_httpx.txt
    复制代码
  • 使用rustscan对无cdn的ip进行端口扫描
    1. 生成 rustscan_nocdn.txt
    复制代码
目录下面工具的放置

在第二次使用的时候,需要先手动删除所有txt文件
  1. rm *.txt
复制代码
目录结构:
  1. ├── cdn_httpx.txt  有cdn的域名的httpx 结果
  2. ├── cdn.txt  没有cdn的域名
  3. ├── domains.txt 要进行信息收集的根域名
  4. ├── httpx        httpx二进制文件
  5. ├── nocdn_httpx.txt 无cdn的域名的httpx 结果
  6. ├── nocdn_ip.txt        无cdn域名解析出的ip
  7. ├── nocdn.txt       
  8. ├── oneforall
  9. ├── rustscan_nocdn.txt
  10. ├── start.py
  11. ├── subdomains.txt
  12. └── subfinder
复制代码

工具链接
  1. 工具链接:
  2.         https://github.com/shmilylty/OneForAll
  3.         https://github.com/projectdiscovery/subfinder
  4.         https://github.com/projectdiscovery/httpx
  5.         https://github.com/RustScan/RustScan
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

来自云龙湖轮廓分明的月亮

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表