Day01 Web应用&架构搭建&域名源码&站库分离&MVC模型&解析受限&对应路径

我的博客园笔记地址

一、前期准备:宝塔安装

https://www.bt.cn/new/product_windows

二、域名差异

通常对于网站的访问,一般有两种访问方式:一种是 IP 地址访问,一种是域名访问

主站

www.xiaodi8.com:80 47.75.212.155 php

分站

blog.xiaodi8.com 47.242.212.243 47.75.212.155(有可能是不同 IP 地址,有可能是相同的 IP 地址)

端口站

通过访问不同的端口会访问到不同的网站/程序

www.xiaodi8.com:88 java

目录站

www.xiaodi8.com/bbs 论坛 java

www.xiaodi8.com/ 博客 php

示例:

访问该文件夹,打开的就是另一个网站的页面

子站

123.blog.xiaodi8.com

三、源码差异

1、源码目录结构对应

后台目录,文件目录,逻辑目录,前端目录,数据目录,配置文件等

1.1 后台目录(后端核心代码)

存放服务器端业务逻辑、API、数据模型等。

常见命名:

  • app/ -- 应用核心代码(Laravel、Node.js 常用)
  • src/ -- 源代码根目录(Java、Go、TypeScript 项目)
  • backend/ -- 与前端并列的后端根目录
  • controller/handlers/ -- 控制器/请求处理层
  • service/ -- 业务逻辑层
  • model/entity/ -- 数据模型/实体
  • dao/repository/ -- 数据访问层
  • api/ -- RESTful / GraphQL 接口定义
  • admin/ -- 后台管理功能专用目录
  • middleware/ -- 中间件
  • task/job/ -- 定时任务/队列任务

1.2 文件目录(用户上传、静态资源等)

存储由用户或系统产生的非代码文件。

常见命名:

  • uploads/ -- 用户上传文件(图片、文档等)
  • storage/ -- 存储目录(含私有文件、缓存、日志等)
  • public/ -- 公开可访问的静态资源(HTML、CSS、JS、图片)
  • assets/ -- 前端资源(有时与公开目录合并)
  • media/ -- 媒体文件(Django 常用)
  • downloads/ -- 提供下载的文件
  • temp/tmp/ -- 临时文件目录

1.3 逻辑目录(业务逻辑层)

专注于实现具体业务规则,独立于控制器和数据访问。

常见命名:

  • logic/ -- 直译业务逻辑
  • business/ -- 业务层
  • service/ -- 服务层(也可以归入后台目录,但更突出逻辑)
  • domain/ -- 领域驱动设计中的领域层
  • workflow/ -- 复杂业务流程编排
  • rule/ -- 规则引擎相关
  • calculator/ -- 特定计算逻辑(如计费、积分)

1.4 前端目录(客户端代码)

存放界面交互、UI组件、静态资源等。

常见命名:

  • frontend/client/ -- 前端根目录
  • src/ -- 前端源码(React、Vue 脚手架习惯)
  • views/ -- 页面级组件(传统 MVC 模式)
  • components/ -- 可复用的 UI 组件
  • pages/ -- 按路由组织的页面(Next.js、Nuxt 常用)
  • layouts/ -- 布局组件
  • styles/css/ -- 样式文件
  • static/ -- 静态资源(无需构建的图片、字体等)
  • assets/ -- 需要构建工具处理的资源
  • public/ -- 构建后直接拷贝的根资源(如 index.html

1.5 数据目录(数据库、缓存、备份等)

存放数据库文件、数据迁移、种子数据或持久化缓存。

常见命名:

  • data/ -- 通用数据目录
  • database/ -- 数据库相关脚本或文件
  • migrations/ -- 数据库迁移文件
  • seeds/seeders/ -- 测试数据填充脚本
  • backup/ -- 数据备份
  • cache/ -- 缓存文件(如 Redis 快照、页面缓存)
  • sql/ -- 原始 SQL 脚本
  • dump/ -- 数据库导出文件

1.6 配置文件目录

存放应用、框架、依赖等配置。

常见命名:

  • config/ -- 最通用的配置目录
  • conf/ -- 轻量级配置文件目录
  • settings/ -- 常见于 Python(Django、Flask)
  • env/ -- 环境变量相关文件(.env 也可能在根目录)
  • etc/ -- 模仿 Unix 风格的系统配置
  • .config/ -- 隐藏配置目录(用户级)
  • resources/ -- 有时包含配置(如 Java 的 resources/application.yml
  • bootstrap/ -- 框架启动配置(Laravel 特有)

1.7 其他常见目录(补充)

  • logs/ -- 日志文件
  • tests/ -- 单元测试、集成测试
  • docs/ -- 文档
  • scripts/ -- 构建、部署、运维脚本
  • vendor/node_modules/ -- 第三方依赖(通常不提交版本库)
  • build/dist/ -- 编译输出目录

2、源码开发语言类型

ASP,ASPX,PHP,Java,Python,Go,Javascript等

3、 语言开发框架组件

PHP:Thinkphp Laravel YII CodeIgniter CakePHP Zend等

JAVA:Spring MyBatis Hibernate Struts2 Springboot等

Python:Django Flask Bottle Turbobars Tornado Web2py等

Javascript:Vue.js Node.js BootstrapJ Query Angular等

4、 开源闭源加密类型

开源:公开可以直接下载的源码,如 zblog

闭源:没有公开的,是企业内部开发的

加密:有源码但是是乱码的,如通达 OA

四、数据差异

**数据库类型:**Access、MYSQL、SqlServer、Oracle、Redis、DB2、Postgresql、MongoDB等

1、本地数据库搭建

**本地数据库:**源码和数据库在同一台服务器上

2、分离数据库搭建

**站库分离:**源码和数据库在不同的服务器上

eg. 假如你拿到了目标的一个源码,分析到了数据库配置文件,其中有账号密码和连接的地址

答: 数据库连接只让来网站服务器 IP(假设是:47.242.212.243) 的连接,如果你不是这个 IP (47.242.212.243)地址,账号密码给你也无法连接

3、云数据库搭建

核心思想:外联 外部连接

以 RDS 为例,

**背景:**www.xiaodi8.com 47.242.212.243,数据库放在云数据库上面,然后我拿到了 www.xiaodi8.com 的 webshell 网站权限,我怎么去获取到数据库里面的数据 权限

**解决问题:**47.242.212.243 只能让它去连接云数据库,本地真机攻击机器 xx.xx.xx.xx 去连接数据库 账号密码正确也无法连接

渗透思路:

  1. 上传一个数据库连接脚本到网站上,访问脚本去让脚本去连接数据库
  2. 利用网站权限上传代理流量工具,做数据中转的操作,去连接数据库

五、平台差异

1、系统:Windows、Linux、MacOS等

2、容器:Docker、K8s、Vmware、VirtualBox等

3、中间件:Apache、Nginx、IIS、lighttpd、Tomcat、Jboos、Weblogic、Websphere、Jetty等

六、解析差异

1、URL 路由:URL访问对应文件,MVC模型等

1.1 url 访问对应文件

www.xiaodi8.com/admin/login.php = 源码/admin/login.php

1.2 MVC 模型源码

www.xiaodi8.com/admin/login ≠ 源码/admin/login

源码中明明有这个目录,却访问不到,这是由于它是:

框架开发 MVC 模型源码:根据框架的路由决定

后期在进行代码审计的时候,我们要区分 MVC 和非 MVC 模型的源码,目的是要去搞清楚访问网站的地址和文件的对应关系该怎么找

model :操作数据库

view:前端显示

controller:写业务逻辑的

2、绝对相对路径:相对当前目录,完整的目录路径

相对路径(相对当前路径):.../.../

**绝对路径(完整的目录路径):**C:\wwwroot\test01.veii5.cn\blog

C:\wwwroot\test01.veii5.cn\blog.../.../ = C:\wwwroot

C:\wwwroot\test01.veii5.cn\blog.../.../.../ = C:\BtSoft

C:\wwwroot\test01.veii5.cn\blog.../.../.../C:\BtSoft = C:\BtSoft

3、格式权限:后门解析格式,代码正常执行,脚本执行权限等

3.1 后门解析格式

网站的语言不一样,解析格式也不一样

网站如果是 php 的网站,你上传的后门文件就是.php 的后门

网站如果是 java 的网站,你上传的后门文件就是.java 的后门

3.2 代码正常执行

php 文件要用 php 格式的代码,java 文件要用 java 格式的代码编写

3.3 脚本执行权限

访问 1.php

现在修改 upload 的权限,这样设置的目的是为了防止给脚本执行权限

再访问一下 1.php,发现访问不了了,这是因为读取执行权限被拒绝了

**解决办法:**换其他目录上传文件

相关推荐
轻口味1 小时前
HarmonyOS 6.1 全栈实战录 - 09 极光底座:ArkWeb 6.1 性能、安全与视觉插帧全特性深度实战
pytorch·安全·harmonyos
Paranoid-up2 小时前
安全启动和安全固件更新(SBSFU)11:保护链:开发 / 量产 / SECURE_LOCK 三种模式
安全·iap·安全启动·安全升级·sbsfu
刀法如飞2 小时前
Palantir Ontology 数据结构分析,与ER/OOP/DDD有什么区别?
人工智能·算法·架构
TOWE technology2 小时前
同为科技雷电防护产品,构筑全场景电气安全防线
网络·科技·安全·防雷产品·防雷工程·防雷施工·防雷设计
狼与自由2 小时前
微服务网关演化
微服务·云原生·架构
2601_957787583 小时前
短视频矩阵风控对抗技术:星链引擎的账号安全防护体系深度解析
线性代数·安全·矩阵
@insist1233 小时前
信息安全工程师-测评核心知识框架与关键流程(下篇)
网络·安全·软考·信息安全工程师·软件水平考试
祁白_3 小时前
[BJDCTF2020]Mark loves cat (WriteUp)
web安全·ctf·writeup
DianSan_ERP3 小时前
抖店订单接口中消费者信息加密解密机制与安全履约全解析
前端·网络·数据库·后端·安全·团队开发·运维开发