fofa爬虫 + 源码泄露PoC之梦幻联动(有福利)
字数 826 2025-08-09 23:12:43
FOFA爬虫与源码泄露检测工具联动使用指南
一、工具概述
本教学文档介绍如何将FOFA爬虫与源码泄露检测工具联动使用,通过自动化方式批量检测目标网站的源码泄露漏洞。
二、FOFA爬虫使用说明
1. 准备工作
- 需要获取FOFA的
_fofapro_ars_sessioncookie值 - 准备代理IP列表(可选)
2. 爬虫代码解析
import requests
from lxml import etree
import random
import time
import urllib
import base64
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36",
}
# 代理IP列表(需自行更新)
proxylist = [
{'HTTP': '112.84.54.35:9999'},
{'HTTP': '175.44.109.144:9999'},
{'HTTP': '125.108.119.23:9000'}
]
proxy = random.choice(proxylist)
def loadpage(url, begin, end):
for page in range(begin, end+1):
print("正在爬取第"+str(page)+"页:")
fullurl = url+"&page="+str(page)
response = requests.get(fullurl, headers=headers, proxies=proxy).text
html = etree.HTML(response)
req = html.xpath('//div[@class="fl box-sizing"]/div[@class="re-domain"]/a[@target="_blank"]/@href')
result = '\n'.join(req)
with open(r'url.txt', "a+") as f:
f.write(result+"\n")
print("-第"+str(page)+"页已完成爬取- + '\n'")
if __name__ == '__main__':
q = input('请输入关键字,如"app="xxx" && country="CN":等等')
begin = int(input("请输入开始页数 最小为1:"))
end = int(input("请输入结束页数 最大为5:"))
cookie = input("请输入你的Cookie:")
cookies = '_fofapro_ars_session='+cookie+';result_per_page=20'
headers['cookie'] = cookies
url = "https://fofa.so/result?"
key = urllib.parse.urlencode({"q":q})
key2 = base64.b64encode(q.encode('utf-8')).decode("utf-8")
url = url+key+"&qbase64="+key2
loadpage(url, begin, end)
time.sleep(5)
3. 使用步骤
- 登录FOFA网站,从浏览器Cookie中获取
_fofapro_ars_session值 - 运行脚本,输入:
- FOFA搜索关键字(如
app="xxx" && country="CN") - 开始页数(最小为1)
- 结束页数(最大为5,非会员限制)
- 获取的Cookie值
- FOFA搜索关键字(如
- 爬取结果将保存到
url.txt文件中
三、源码泄露检测工具
1. 准备工作
- 准备
web.txt文件,包含常见源码泄露路径 - 示例
web.txt内容(部分):/.git/HEAD /.svn/entries /WEB-INF/web.xml /package.json
2. 批量检测代码
import requests
import time
with open("url.txt", 'r') as temp:
for url in temp.readlines():
url = url.strip('\n')
with open("web.txt", 'r') as web:
webs = web.readlines()
for web in webs:
web = web.strip()
u = url + web
r = requests.get(u)
print("url为:" + u + ' ' + "状态为:%d" % r.status_code)
time.sleep(2) # 防止请求过快
w = open('write.txt', 'w+')
for web in webs:
web = web.strip()
u = url + web
r = requests.get(u)
w.write("url为:" + u + ' ' + "状态为:%d" % r.status_code + '\n')
3. 单目标检测代码
import requests
import time
url = '' # 目标网站URL
with open("web.txt", 'r') as web:
webs = web.readlines()
for web in webs:
web = web.strip()
u = url + web
r = requests.get(u)
print("url为:" + u + ' ' + "状态为:%d" % r.status_code)
time.sleep(2)
w = open('write easy.txt', 'w+')
for web in webs:
web = web.strip()
u = url + web
r = requests.get(u)
w.write("url为:" + u + ' ' + "状态为:%d" % r.status_code + '\n')
四、联动使用流程
-
准备阶段
- 准备
web.txt文件,包含常见源码泄露路径 - 获取FOFA Cookie
- 准备
-
FOFA爬虫阶段
- 运行FOFA爬虫脚本,获取目标URL列表
- 结果保存在
url.txt
-
源码泄露检测阶段
- 运行批量检测脚本,自动检测
url.txt中的所有目标 - 检测结果保存在
write.txt
- 运行批量检测脚本,自动检测
-
结果分析
- 检查返回状态码,200/403等可能表示存在泄露
- 手动验证可疑结果
五、注意事项
- 使用代理IP防止被封
- 设置合理的time.sleep间隔(建议2秒以上)
- 非FOFA会员只能爬取前5页结果
- 检测时注意法律合规性,仅测试授权目标
web.txt中的路径可根据实际需求增减
六、优化建议
- 增加异常处理机制
- 添加多线程/协程提高效率
- 完善结果分析功能(自动筛选可疑结果)
- 增加对重定向的处理
- 添加User-Agent轮换功能
通过这套工具组合,可以高效地批量检测目标网站的源码泄露漏洞,大大提高安全测试的效率。