Web安全攻防:从漏洞到实战全解析
第一部分:基础理论与核心漏洞 (Web安全基础)
这部分是面试的基石,务必做到原理清晰、防御明确。
1. SQL注入 (SQL Injection)
-
原理补充:程序开发过程中未对用户输入进行严格校验和过滤,导致攻击者提交的恶意SQL语句被数据库解析执行。
-
分类:
-
按回显:联合查询注入、报错注入、布尔盲注、时间盲注。
-
按类型:数字型、字符型、搜索型。
-
其他:堆叠注入(
;分隔多条语句)、二次注入(数据先存入,后被调用时触发)、宽字节注入(利用GBK等编码吃掉转义符\)、HTTP头注入(User-Agent, Referer等)。
-
-
防御与修复:
-
预编译(首选方案):使用
PDO、PreparedStatement将SQL语句模板化,参数与语句分离,从根本上杜绝注入。 -
严格输入校验:采用白名单方式限制输入类型、长度、格式。
-
最小权限原则:数据库连接账户仅授予必要的SELECT、INSERT、UPDATE权限,禁止FILE、EXEC等危险权限。
-
错误信息屏蔽:自定义错误页面,避免将数据库报错信息直接返回给客户端。
-
部署WAF。
-
2. XSS (跨站脚本攻击)
-
原理:攻击者在网页中注入恶意客户端脚本,当用户浏览该页面时,脚本在浏览器中执行。
-
类型与区别:
-
反射型:Payload在URL中,需要诱骗用户点击。非持久化。
-
存储型:Payload存储在数据库中(如留言板),用户访问页面即触发。持久化。
-
DOM型:纯前端漏洞,通过修改DOM环境执行恶意代码,不经过后端。
-
-
防御:
-
输出编码:将输出到HTML中的数据根据上下文进行HTML实体编码(
<-><)、JavaScript编码等。 -
输入过滤:结合业务场景,使用白名单过滤用户输入。
-
HttpOnly:Set-Cookie时开启
HttpOnly属性,防止JS读取Cookie。 -
内容安全策略 (CSP):通过HTTP头限制资源加载和执行来源。
-
3. CSRF (跨站请求伪造) 与 SSRF (服务端请求伪造)
-
CSRF:
-
原理:利用用户已登录的身份凭证(Cookie),诱使其点击链接或访问页面,从而完成非用户本意的操作(如改密、转账)。
-
防御:
-
CSRF Token:在表单或请求头中加入随机Token,服务端验证。
-
验证Referer/Origin头。
-
SameSite Cookie:设置
SameSite=Strict或Lax。
-
-
-
SSRF:
-
原理:服务端对用户提供的URL校验不严,导致攻击者可构造请求,以服务端为跳板探测或攻击内网服务。
-
利用与绕过:利用
file://、dict://、gopher://等协议;通过进制转换、IP变形(127.0.0.1->2130706433)或DNS重绑定绕过限制。 -
防御:
-
白名单限制:限制请求的目标域名/IP。
-
禁用危险协议:仅允许HTTP/HTTPS。
-
统一错误回显。
-
-
4. 文件上传漏洞
-
原理:服务器未对上传文件的类型、内容进行充分校验,导致攻击者上传可执行脚本(Webshell)并获取服务器权限。
-
绕过技巧(WAF绕过补充):
-
黑名单绕过:大小写(
.Php)、双写(.pphphp)、特殊后缀(.php5,.phtml)、.htaccess/.user.ini解析、点/空格绕过(Windows特性)、::$DATA(Windows NTFS流)。 -
白名单绕过:截断(
%00,要求PHP<5.3.4)、解析漏洞配合(Nginx1.jpg/.php)。 -
内容校验绕过:制作图片马(
copy /b 1.jpg+1.php 2.jpg);条件竞争(上传文件在检查间隙被瞬间访问执行)。
-
-
防御:
-
使用白名单校验文件后缀及MIME Type。
-
重命名文件,使用随机字符串,避免保留原始后缀。
-
将上传目录设置为不可执行脚本。
-
内容二次检查(如
getimagesize())。
-
5. 反序列化漏洞 (重点)
-
PHP反序列化:利用魔法方法(
__wakeup,__destruct,__toString,__construct等)在对象创建、销毁或特定操作时自动执行的特性,构造Pop Chain(属性导向编程链)达到代码执行目的。 -
Java反序列化(重中之重):
-
原理:
ObjectInputStream.readObject()方法在反序列化时,若Classpath中存在可利用的第三方库(Gadget,如Commons-Collections),会触发特定类的回调方法,形成调用链导致RCE。 -
Shiro反序列化(CVE-2016-4437 / Shiro-550):
-
原理:
rememberMe功能使用了硬编码的AES密钥(kPH+bIxk5D2deZiIxcaaaA==)。攻击者构造恶意序列化对象 -> AES加密 -> Base64编码 -> 替换Cookie。服务端解密并反序列化触发RCE。 -
550 vs 721:550利用固定Key直接攻击;721是利用Padding Oracle Attack爆破Key,需要合法Cookie。
-
-
Fastjson反序列化:
-
原理:
@type字段指定类进行反序列化时未作严格校验。攻击者可通过@type指定TemplatesImpl或JdbcRowSetImpl等类,通过JNDI注入加载远程恶意字节码执行。
-
-
WebLogic反序列化:主要涉及T3/IIOP协议,RMI通信过程中的反序列化缺陷。
-
第二部分:内网渗透与权限提升
-
内网渗透思路(流程化):
-
入口突破:获取Webshell或RCE权限。
-
信息收集:定位域控(
net time /domain,nltest /dclist:domain)、查看域内用户/组(net user /domain)、查补丁、查进程、查杀软。 -
代理搭建:FRP、Neo-reGeorg、EW等工具建立隧道打通内网访问。
-
横向移动:
-
凭证窃取:Procdump + Mimikatz读取LSASS内存获取Hash/明文。
-
PTH (Pass The Hash):利用NTLM Hash直接认证SMB/WMI。
-
PTT (Pass The Ticket):导出Kerberos票据并导入内存使用。
-
漏洞利用:MS17-010 (永恒之蓝)、CVE-2019-0708 (蓝屏警告)。
-
-
权限维持:计划任务、启动项、黄金/白银票据(域环境)。
-
-
Windows提权:
-
系统内核:对比补丁号找未修复的内核提权EXP(如MS16-032)。
-
服务提权:PowerUp.ps1检查服务路径引号缺失、可写服务注册表。
-
计划任务:检查以高权限运行的定时脚本是否可写。
-
令牌窃取:利用Incognito扩展窃取高权限Token。
-
-
Linux提权:
-
SUID提权:
find / -perm -u=s -type f 2>/dev/null查找SUID程序,利用Nmap、find、vim等SUID特性提权。 -
Sudo提权:
sudo -l查看当前用户可执行的免密命令(如sudo vim->:!bash)。 -
Cron任务:检查定时任务脚本是否可写。
-
内核提权:Dirty Cow (脏牛) 等。
-
第三部分:应急响应与蓝队视角
-
判断告警误报:结合资产信息(目标端口是否开放、系统版本是否匹配)、攻击特征(Payload是否为扫描器特征码)、响应结果(状态码、回显内容)及威胁情报(IP是否已知攻击源)综合研判。
-
应急响应流程 (PDCERF模型):
-
准备 (Preparation):资产清单、基线备份。
-
检测 (Detection):安全设备告警、流量异常、系统卡顿。
-
抑制 (Containment):隔离受害主机(断网、封IP)。
-
根除 (Eradication):查杀进程、删除Webshell/病毒文件、清理计划任务/启动项。
-
恢复 (Recovery):修复漏洞、恢复数据、恢复上线。
-
跟踪 (Follow-up):溯源报告、加固整改。
-
-
Webshell排查:
-
基于文件:对比备份(
diff)、查近期修改文件(find)、查webshell特征函数(eval,assert,base64_decode)。 -
基于流量:Wireshark过滤POST请求体中的加密/编码流量。
-
基于日志:检查访问日志中请求单一文件且返回200的异常IP。
-
-
内存马排查:
-
Servlet/Filter型:通过Arthas、JVM-Sandbox等工具动态查看内存中注册的异常Filter/Servlet。
-
Agent型:排查Java进程加载的可疑Agent Jar包。
-
第四部分:工具使用与流量特征
-
流量特征总结(研判重点):
-
冰蝎:
-
3.0/4.0:
Content-Type: application/octet-stream。 -
Accept头特征(如冰蝎4.0:
q=.2)。 -
AES加密,密钥为密码MD5前16位。
-
-
哥斯拉:Cookie末尾常带分号
;;响应体为0字节或加密数据。 -
蚁剑:UA头默认
antsword;Payload中常见@ini_set、base64_decode。 -
CS (Cobalt Strike):Beacon心跳包特征(GET请求URL规律间隔,如
/j.ad?)、Malleable C2 Profile流量伪装。
-
-
Nmap常用参数补充:
-
-sV:服务版本探测。 -
-O:操作系统探测。 -
-p-:全端口扫描。 -
-A:激进探测模式(OS+V+脚本)。 -
--script=vuln:调用漏洞检测脚本。
-
第五部分:综合与场景补充
-
护网监测岗职责:
-
实时监控:关注安全设备(态势感知、WAF)告警,及时分诊。
-
初步研判:结合资产和Payload判断攻击是否成功,区分扫描与攻击。
-
上报与处置:发现真实攻击立即上报,封禁IP,协助应急。
-
报告撰写:记录攻击IP、时间、行为、处置结果。
-
-
溯源反制思路:
-
IP情报查询:微步在线、奇安信TI等查询IP是否为VPS、IDC或傀儡机。
-
域名反查:查询该IP历史上绑定过的域名,通过WHOIS找注册信息。
-
ID追踪:利用攻击者留下的ID(网名、邮箱)在Github、百度网盘、社交平台进行社工搜索。
-
蜜罐诱捕:在可控环境下部署蜜罐,反制获取攻击者浏览器指纹、社交账号、甚至通过水坑攻击反制攻击者终端。
-
支付宝/微信转账校验:通过转账验证姓氏(攻击者手机号已知时)。
-
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)