第一部分:基础理论与核心漏洞 (Web安全基础)

这部分是面试的基石,务必做到原理清晰、防御明确。

1. SQL注入 (SQL Injection)
  • 原理补充:程序开发过程中未对用户输入进行严格校验和过滤,导致攻击者提交的恶意SQL语句被数据库解析执行。

  • 分类

    • 按回显:联合查询注入、报错注入、布尔盲注、时间盲注。

    • 按类型:数字型、字符型、搜索型。

    • 其他:堆叠注入(;分隔多条语句)、二次注入(数据先存入,后被调用时触发)、宽字节注入(利用GBK等编码吃掉转义符\)、HTTP头注入(User-Agent, Referer等)。

  • 防御与修复

    1. 预编译(首选方案):使用PDOPreparedStatement将SQL语句模板化,参数与语句分离,从根本上杜绝注入。

    2. 严格输入校验:采用白名单方式限制输入类型、长度、格式。

    3. 最小权限原则:数据库连接账户仅授予必要的SELECT、INSERT、UPDATE权限,禁止FILE、EXEC等危险权限。

    4. 错误信息屏蔽:自定义错误页面,避免将数据库报错信息直接返回给客户端。

    5. 部署WAF

2. XSS (跨站脚本攻击)
  • 原理:攻击者在网页中注入恶意客户端脚本,当用户浏览该页面时,脚本在浏览器中执行。

  • 类型与区别

    • 反射型:Payload在URL中,需要诱骗用户点击。非持久化

    • 存储型:Payload存储在数据库中(如留言板),用户访问页面即触发。持久化

    • DOM型:纯前端漏洞,通过修改DOM环境执行恶意代码,不经过后端。

  • 防御

    1. 输出编码:将输出到HTML中的数据根据上下文进行HTML实体编码(< -> &lt;)、JavaScript编码等。

    2. 输入过滤:结合业务场景,使用白名单过滤用户输入。

    3. HttpOnly:Set-Cookie时开启HttpOnly属性,防止JS读取Cookie。

    4. 内容安全策略 (CSP):通过HTTP头限制资源加载和执行来源。

3. CSRF (跨站请求伪造) 与 SSRF (服务端请求伪造)
  • CSRF

    • 原理:利用用户已登录的身份凭证(Cookie),诱使其点击链接或访问页面,从而完成非用户本意的操作(如改密、转账)。

    • 防御

      1. CSRF Token:在表单或请求头中加入随机Token,服务端验证。

      2. 验证Referer/Origin头

      3. SameSite Cookie:设置SameSite=StrictLax

  • SSRF

    • 原理:服务端对用户提供的URL校验不严,导致攻击者可构造请求,以服务端为跳板探测或攻击内网服务。

    • 利用与绕过:利用file://dict://gopher://等协议;通过进制转换、IP变形(127.0.0.1 -> 2130706433)或DNS重绑定绕过限制。

    • 防御

      1. 白名单限制:限制请求的目标域名/IP。

      2. 禁用危险协议:仅允许HTTP/HTTPS。

      3. 统一错误回显

4. 文件上传漏洞
  • 原理:服务器未对上传文件的类型、内容进行充分校验,导致攻击者上传可执行脚本(Webshell)并获取服务器权限。

  • 绕过技巧(WAF绕过补充)

    • 黑名单绕过:大小写(.Php)、双写(.pphphp)、特殊后缀(.php5.phtml)、.htaccess/.user.ini解析、点/空格绕过(Windows特性)、::$DATA(Windows NTFS流)。

    • 白名单绕过:截断(%00,要求PHP<5.3.4)、解析漏洞配合(Nginx 1.jpg/.php)。

    • 内容校验绕过:制作图片马(copy /b 1.jpg+1.php 2.jpg);条件竞争(上传文件在检查间隙被瞬间访问执行)。

  • 防御

    1. 使用白名单校验文件后缀及MIME Type。

    2. 重命名文件,使用随机字符串,避免保留原始后缀。

    3. 将上传目录设置为不可执行脚本。

    4. 内容二次检查(如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 721550利用固定Key直接攻击;721是利用Padding Oracle Attack爆破Key,需要合法Cookie

    • Fastjson反序列化

      • 原理@type字段指定类进行反序列化时未作严格校验。攻击者可通过@type指定TemplatesImplJdbcRowSetImpl等类,通过JNDI注入加载远程恶意字节码执行。

    • WebLogic反序列化:主要涉及T3/IIOP协议,RMI通信过程中的反序列化缺陷。

第二部分:内网渗透与权限提升

  • 内网渗透思路(流程化)

    1. 入口突破:获取Webshell或RCE权限。

    2. 信息收集:定位域控(net time /domainnltest /dclist:domain)、查看域内用户/组(net user /domain)、查补丁、查进程、查杀软。

    3. 代理搭建:FRP、Neo-reGeorg、EW等工具建立隧道打通内网访问。

    4. 横向移动

      • 凭证窃取:Procdump + Mimikatz读取LSASS内存获取Hash/明文。

      • PTH (Pass The Hash):利用NTLM Hash直接认证SMB/WMI。

      • PTT (Pass The Ticket):导出Kerberos票据并导入内存使用。

      • 漏洞利用:MS17-010 (永恒之蓝)、CVE-2019-0708 (蓝屏警告)。

    5. 权限维持:计划任务、启动项、黄金/白银票据(域环境)。

  • 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模型)

    1. 准备 (Preparation):资产清单、基线备份。

    2. 检测 (Detection):安全设备告警、流量异常、系统卡顿。

    3. 抑制 (Containment):隔离受害主机(断网、封IP)。

    4. 根除 (Eradication):查杀进程、删除Webshell/病毒文件、清理计划任务/启动项。

    5. 恢复 (Recovery):修复漏洞、恢复数据、恢复上线。

    6. 跟踪 (Follow-up):溯源报告、加固整改。

  • Webshell排查

    • 基于文件:对比备份(diff)、查近期修改文件(find)、查webshell特征函数(evalassertbase64_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_setbase64_decode

    • CS (Cobalt Strike):Beacon心跳包特征(GET请求URL规律间隔,如/j.ad?)、Malleable C2 Profile流量伪装。

  • Nmap常用参数补充

    • -sV:服务版本探测。

    • -O:操作系统探测。

    • -p-:全端口扫描。

    • -A:激进探测模式(OS+V+脚本)。

    • --script=vuln:调用漏洞检测脚本。

第五部分:综合与场景补充

  • 护网监测岗职责

    1. 实时监控:关注安全设备(态势感知、WAF)告警,及时分诊。

    2. 初步研判:结合资产和Payload判断攻击是否成功,区分扫描与攻击。

    3. 上报与处置:发现真实攻击立即上报,封禁IP,协助应急。

    4. 报告撰写:记录攻击IP、时间、行为、处置结果。

  • 溯源反制思路

    1. IP情报查询:微步在线、奇安信TI等查询IP是否为VPS、IDC或傀儡机。

    2. 域名反查:查询该IP历史上绑定过的域名,通过WHOIS找注册信息。

    3. ID追踪:利用攻击者留下的ID(网名、邮箱)在Github、百度网盘、社交平台进行社工搜索。

    4. 蜜罐诱捕:在可控环境下部署蜜罐,反制获取攻击者浏览器指纹、社交账号、甚至通过水坑攻击反制攻击者终端。

    5. 支付宝/微信转账校验:通过转账验证姓氏(攻击者手机号已知时)。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐