CTF-Web方向学习指北
Web方向概述
Web方向的CTF题目主要考察选手对Web开发技术和常见漏洞的掌握程度。例如通过分析网站的源代码(前、后端)、请求和响应,发现潜在的安全漏洞并加以利用。
细分领域
内网渗透
内网渗透是指通过Web应用获取外部访问权限后,进一步利用内部网络的资源与服务。通常在获得Web Shell或数据库控制权后,攻击者可以横向移动到内部系统,通过弱密码、漏洞服务、未加固的网络服务等进行进一步渗透。内网渗透常使用的技术包括横向移动、提权、信息收集等。
反序列化
反序列化漏洞是指Web应用将用户输入作为序列化对象直接进行反序列化操作时,攻击者可以构造恶意对象,导致代码执行或其他未授权行为。常见的反序列化漏洞出现在Java、PHP等语言的框架中,漏洞利用方式包括RCE、权限提升等。
木马
Web木马是通过上传或注入恶意代码到服务器的一种攻击方式,通常用于持久化控制目标服务器。木马常以Web Shell的形式存在,允许攻击者通过浏览器执行系统命令。文件上传漏洞、代码注入等途径都可能成为木马的入口。
服务器端模板注入(SSTI)
SSTI(Server-Side Template Injection)漏洞是在服务器端使用模板引擎渲染页面时,未正确过滤用户输入,导致用户输入的恶意代码被服务器执行。常见于使用Jinja2、Thymeleaf、Freemarker等模板引擎的应用中,攻击者可以通过SSTI直接执行任意代码或访问敏感数据。
跨站请求伪造(CSRF)
跨站请求伪造(Cross-Site Request Forgery, CSRF),攻击者通过诱导用户点击恶意链接、访问恶意网站等方式,悄悄发起伪造的请求,利用用户已登录的身份在受害者不知情的情况下对目标网站执行操作。这些操作可能包括更改账户信息、执行转账操作等。在CTF中主要用来实现规避鉴权。
服务器端请求伪造(SSRF)
SSRF漏洞是指攻击者通过Web应用的服务端发起HTTP请求,访问内部网络或其他未授权的资源。攻击者可以通过SSRF获取服务器内部信息,甚至访问企业内部的私有网络资源,如Redis、数据库、云服务等。
框架漏洞
框架漏洞是指Web开发框架(如Struts2、Django、Spring等)自身存在的安全漏洞。攻击者可以利用这些漏洞,绕过安全机制、进行RCE、SQL注入、XSS等攻击。框架漏洞通常出现在框架的某些模块没有正确处理输入、验证或授权。
SQL注入
SQL注入是指通过未正确处理的用户输入,注入恶意的SQL语句,直接操作数据库。攻击者可以通过SQL注入获取数据库中的敏感数据、修改数据库内容,甚至直接控制整个数据库服务器。SQL注入分为错误回显注入、盲注、时间盲注等等。
文件上传
文件上传漏洞是指攻击者通过上传恶意文件(如脚本文件、木马),并使其在服务器上执行,从而获得控制权。常见的攻击方式包括上传PHP、JSP、ASP等脚本文件执行命令或上传图片后进行访问路径的猜解(在CTF中,访问路径常常是回显的)。
逻辑漏洞
逻辑漏洞是指Web应用的业务逻辑设计不严谨,攻击者可以通过异常操作来绕过身份验证、权限控制、交易验证等关键步骤。常见的逻辑漏洞包括越权访问、支付绕过、注册漏洞等。
XML外部实体注入(XXE)
XXE(XML External Entity Injection)漏洞是攻击者利用Web应用解析XML输入时对外部实体的处理不当,通过注入恶意实体来读取服务器文件、发起内网请求、甚至实现RCE等。XXE常见于需要处理XML文件上传的系统,如SOAP Web服务。
跨站脚本攻击 (XSS)
恶意JavaScript代码在用户浏览器中执行,通常通过不安全的输入输出处理引入。常见的类型有反射型XSS、存储型XSS等。
任意代码执行(RCE)
任意代码执行(Remote Code Execution, RCE)漏洞是指攻击者能够通过漏洞执行任意系统命令或代码,很多漏洞(如上文中的文件上传、XXE等都可能触发RCE)。RCE是高危漏洞,攻击者利用该漏洞可以完全控制服务器。
Web方向常用工具
- Burp Suite: 用于拦截、修改HTTP请求,进行漏洞测试。
- dirsearch: 目录爆破工具。
- Postman: 测试API请求。
- wireshark: 抓包,进行流量分析。
- Hackbar: 浏览器扩展,快速进行POST传参等操作。
- PayloadsAllTheThings: 各类漏洞的payload合集。
- Hydra: 多功能的密码爆破工具。
- Xdebug: PHP代码调试。