1.3-网站架构、Web源码形式
网站架构
-
套用模板型
有些网站是搭建在别人的域名之下——比如博客园里那个自己的个人博客、“凡客建站”
小型公司网站有可能就是用别人的域名建站,大型的一般就有自己的服务器、域名
如果是分配的子域名那种站,进行测试的话 针对的不是子站 而是人家主站的系统有没有漏洞
可以去找子站的账号密码
-
前后端分离
在两个服务器上,前端在一个服务器上,后端服务器在另一个地址
好处是可以一个后台管理多个网站
数据的处理和关键漏洞在后端上,要找到后端地址,从前端对后端的接口上找后端在哪
-
前后端分离的网站架构在渗透测试方面与传统前后端不分离(如 MVC 架构)的网站有一些关键区别,主要体现在攻击面、信息收集方式、身份认证绕过、数据交互安全性等方面。
1. 前后端分离的特点
前后端分离架构通常使用 RESTful API 或 GraphQL 作为前后端通信桥梁,前端(如 React、Vue、Angular)单独运行,而后端(如 Express、Django、Spring Boot)提供 API 接口。用户的请求大部分是由 JavaScript 代码发送给后端 API,而不是传统的服务器端渲染。
渗透测试影响:
- 攻击面改变:前端只是 UI 层,大部分业务逻辑都在后端 API 上,测试时需要更关注 API 安全。
- CORS 限制:跨域资源共享(CORS)配置错误可能导致 API 被滥用。
- 身份认证和授权方式不同:通常采用 Token(如 JWT、OAuth),不同于传统的 Session 认证。
2. 渗透测试思路对比
对比项 前后端分离 前后端不分离 信息收集 重点分析 API 接口(Swagger、Postman、抓包工具) 直接从 HTML 代码和服务器端响应中收集信息 身份认证 JWT、OAuth、API Key,更易暴露令牌 基于 Session/Cookie,更依赖服务器端管理 API 渗透 关注 API 访问控制、CORS、未授权 API 访问 主要测试 Web 表单、业务逻辑漏洞 前端代码审计 可能通过前端代码获取 API 端点 主要检查网页中的 JS 代码、源代码泄露 SQL/XSS XSS 可能影响较小(前端渲染减少插入点),但 API 存在 SQL 注入风险 XSS 影响较大(直接注入 DOM),SQL 注入也需关注 CSRF 攻击 Token 认证下 CSRF 影响较小,但 API 可能被滥用 依赖 Session,CSRF 风险更高
3. 前后端分离架构的典型攻击点
(1) API 安全
- 未授权访问:测试 API 是否有权限控制漏洞(水平/垂直越权)。
- CORS 配置错误:如
Access-Control-Allow-Origin: *
,可能导致 API 被跨站调用。 - 暴露 API 端点:可通过前端代码、Swagger、接口抓包工具(如 Burp Suite、Postman)分析 API。
(2) JWT 攻击
- 令牌泄露:JWT 通常存储在 LocalStorage 或 SessionStorage,容易被 XSS 盗取。
- JWT 修改攻击:JWT 头部
alg
参数可能被修改为none
绕过签名验证。 - 过期令牌利用:后端如果未正确验证令牌过期状态,攻击者可能使用旧令牌伪造身份。
(3) XSS & CSRF
- DOM XSS:前端动态渲染 API 响应时可能导致 XSS,特别是
innerHTML
处理 JSON 数据。 - CSRF:如果 API 允许 Cookie 认证(如
withCredentials: true
),仍然可能被 CSRF 攻击。
(4) 业务逻辑漏洞
- 支付、积分漏洞:API 可能暴露价格参数,攻击者可修改请求数据绕过支付校验。
- 批量请求攻击:如 API 允许无限注册、验证码接口无速率限制,可能被滥用。
4. 渗透测试技巧
- API 枚举:使用
dirsearch
、ffuf
枚举/api/
路径,发现隐藏 API。 - Token 窃取:利用 XSS 获取 JWT 并尝试重放。
- 权限绕过:修改请求头、JWT Payload,尝试访问管理员 API。
- API 速率限制绕过:测试 API 是否有
Rate-Limit
保护,如验证码、登录尝试等。
总结
前后端分离的架构使得 API 成为主要攻击点,渗透测试应重点关注:
- API 认证绕过(JWT、OAuth 令牌安全)。
- CORS 配置问题(API 是否允许任意站点调用)。
- API 访问控制(未授权访问、水平/垂直越权)。
- 前端代码信息泄露(API 端点暴露)。
- XSS、CSRF 及 SQL 注入(关注 API 交互)。
相比传统前后端不分离的架构,渗透测试更偏向 API 渗透、身份认证安全和前端代码审计,而不再局限于表单注入等传统漏洞。
-
-
集成软件包
PHPstudy、宝塔、XAMPP等
宝塔有权限控制,所以就算植入了木马权限也不高,需要再做权限提升绕过什么的
Phptudy没有控权,植入的马权限会很高
技术要点:要考虑如何绕过宝塔的安全策略限制
-
云厂商的镜像搭建
这种镜像搭建的网站植入的马 权限也很高;这个有高权限的话直接做后续步骤即可
-
Docker拉取镜像
Docker关键就是植入的木马虽然有高权限,但是仅仅在Docker容器中有高权限而已,还需要突破到物理机上去,要考虑Docker容器逃逸的事情。
技术要点:Docker逃逸
-
纯静态
纯静态网页相对于动态网站来说,安全性确实更高,但并 不代表完全没有安全问题,仍然可能受到以下几类攻击的影响:
1. XSS(跨站脚本攻击)
即使是纯静态网页,如果包含用户输入(如留言板、搜索框、评论区),或者通过 JavaScript 读取 URL 参数并插入页面,也可能存在 XSS 漏洞。例如:
<script> document.write("Welcome " + window.location.search.substring(1)); </script>
攻击者可以构造
https://example.com/?<script>alert(1)</script>
这样的 URL,导致页面执行恶意 JavaScript 代码。✅ 防御措施:
- 不要直接在 HTML 中插入 URL 参数等用户输入。
- 使用 HTML 转义(例如
script
代替<script>
)。 - 使用
Content Security Policy (CSP)
限制脚本执行。
2. Clickjacking(点击劫持)
攻击者可以通过 iframe 嵌套你的页面,并叠加透明元素,引诱用户点击隐藏按钮,可能导致恶意操作。
✅ 防御措施:
-
通过
X-Frame-Options
禁止页面被 iframe 嵌套:X-Frame-Options: DENY
-
使用
Content Security Policy (CSP)
限制来源:Content-Security-Policy: frame-ancestors 'none';
3. CDN 劫持
如果静态网页使用了 外部 CDN(如 jQuery、Bootstrap 的 CDN),那么攻击者可能会篡改这些 CDN 资源,导致你的网页加载恶意 JavaScript。
✅ 防御措施:
-
尽量使用自己托管的资源,而不是外部 CDN。
-
启用 Subresource Integrity (SRI) :
<script src="https://cdn.example.com/jquery.js" integrity="sha384-BASE64_HASH" crossorigin="anonymous"></script>
这样,即使 CDN 被劫持,浏览器也不会加载被篡改的文件。
4. HTTPS 相关问题
如果站点使用 HTTP 而不是 HTTPS,攻击者可以通过中间人攻击(MITM) 篡改网页内容,例如:
- 在公共 WiFi 下,劫持你的网页,插入广告甚至恶意脚本。
- 替换你的网站链接,重定向到假冒网站。
✅ 防御措施:
-
强制使用 HTTPS(在服务器端配置
Strict-Transport-Security (HSTS)
)。Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
5. 供应链攻击
如果你的静态网站是用构建工具(如 Jekyll、Hugo、VuePress) 生成的,而其中的 NPM/Yarn 依赖包存在漏洞或被劫持(如 event-stream 事件),那么攻击者可能通过你的构建环境注入后门代码。
✅ 防御措施:
-
定期更新依赖,并使用
npm audit
检查漏洞:npm audit fix
-
仅使用可信任的开源库,并检查 GitHub 上的维护状态。
6. 服务器错误信息泄露
即使是静态网站,服务器配置错误 也可能导致敏感信息泄露。例如:
-
robots.txt
允许爬取不该暴露的文件。 -
.git
目录被误上传,攻击者可以下载.git
目录并还原源码。
✅ 防御措施:
-
配置
robots.txt
只允许搜索引擎访问公开页面:User-agent: * Disallow: /admin/
-
确保
.git
、.env
、backup.zip
等敏感文件不会被直接访问。
总结
安全问题 影响 防御措施 XSS 执行恶意 JS 代码 禁止直接插入 URL 参数,使用 CSP Clickjacking 诱导用户点击隐藏按钮 X-Frame-Options: DENY
CDN 劫持 加载恶意 JS 使用 SRI 校验资源完整性 HTTP 劫持 中间人攻击 启用 HTTPS 和 HSTS 供应链攻击 开源依赖被劫持 仅使用可信赖开源库 敏感信息泄露 配置文件、源码被下载 禁止访问 .git
、.env
等文件结论:
✅ 纯静态网站的安全风险相对较低,但并非完全安全,仍需做好 XSS 防护、HTTPS 保障、资源完整性校验等措施。
对于静态网站:找主域名下可能存在的子站点;下载客户端软件对其抓包看是否存在漏洞
Web源码形式:
1、单纯简易源码
2、MVC框架源码
知道漏洞如何去触发文件,这种框架的源码不像前者,不是目录和文件有直接对应关系的,它存在路由转换
3、编译调用源码
这种源码封装再DLL文件里,要用DLL反编译工具提出源码,源码并不在aspx文件中,而在DLL文件中;jar包就要用java的反编译工具提出源码(jadx-gui)
如:NET-DLL封装 Java-Jar打包
4、加密型源码
源码被加密,防止源码泄露二次开发。比如有Zend加密,用什么加密的在文件头可以看到