python脚本检测漏洞目标地址实例
凌晨两点,脚本检测我盯着终端里滚动的漏洞404响应码,突然意识到手动测漏洞就像用勺子挖井。目标于是地址写了这个脚本——它能在三分钟内把目标站点的常见路径全部探一遍,顺带识别指纹信息。实例别误会,脚本检测这玩意儿不是漏洞核弹发射按钮,就是目标个自动化侦察兵。
先看核心逻辑。地址用requests库发GET请求,实例配合concurrent.futures做线程池并发。脚本检测目标URL列表硬编码在数组里,漏洞但实际使用时建议从外部文件读取。目标关键点在于响应时间阈值——超过8秒的地址请求直接丢弃,避免卡死整个扫描流程。实例有个细节:verify=False必须加上,否则遇到自签名证书的测试环境会直接抛异常。
import requests from concurrent.futures import ThreadPoolExecutor, as_completed TARGET = "http://192.168.1.105" PATHS = ["/admin", "/wp-login.php", "/.env", "/api/v1/users"] HEADERS = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"} def probe(path): try: r = requests.get(TARGET + path, headers=HEADERS, timeout=8, verify=False) return path, r.status_code, len(r.content), r.headers.get("Server", "") except Exception as e: return path, "ERROR", 0, str(e) with ThreadPoolExecutor(max_workers=10) as executor: futures = [executor.submit(probe, p) for p in PATHS] for f in as_completed(futures): path, status, size, server = f.result() print(f"{ path:30} { status:5} { size:6} bytes { server}") 跑起来之后你会看到有趣的现象。比如/.env返回200但内容只有几十字节,多半是空文件;/admin如果跳转到登录页,状态码是302但Location头会暴露后台路径。别只看状态码——我见过某系统对不存在的路径统一返回200,但响应体里藏着"404 Not Found"字样。这时候就得加一层内容匹配,用if "not found" in r.text.lower()做二次判断。
实际测试中踩过最大的坑是WAF拦截。明明本机curl一切正常,脚本一跑全返回403。排查后发现是User-Agent太像爬虫——有些设备指纹库会拦截默认的python-requests标识。解决办法是伪装成浏览器头,或者干脆用session对象维持cookie。要是目标站点有登录机制,还得先手动登录抓取sessionid塞进请求头,否则测的全是匿名访问的路径,意义不大。
输出格式也别马虎。纯文本打印在终端里挤成一团,根本看不清。我习惯把结果写成CSV,用Excel打开后按状态码排序——200的路径优先人工复核,403的可能是权限限制但值得深挖,302的得手动跟踪跳转链。这些细节决定了脚本是玩具还是工具。
最后提醒一句:这脚本只适用于你有授权的目标。别拿它扫公网IP段,否则下一秒可能就有防火墙管理员来找你喝茶。扫描结果里出现phpMyAdmin或/server-status这类路径时,别手贱去点——记录在案就完事,真正的漏洞验证交给专业工具和人工分析。







最新评论