1.3-网站架构、Web源码形式

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/XSSXSS 可能影响较小(前端渲染减少插入点),但 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 成为主要攻击点,渗透测试应重点关注:

      1. API 认证绕过(JWT、OAuth 令牌安全)。
      2. CORS 配置问题(API 是否允许任意站点调用)。
      3. API 访问控制(未授权访问、水平/垂直越权)。
      4. 前端代码信息泄露(API 端点暴露)。
      5. 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加密,用什么加密的在文件头可以看到

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值