小迪安全24年课程笔记——第1天-Web应用架构搭建域名源码站库分离MVC模型解析受限对应路径 如果觉得对自己有帮助可以点赞收藏关注一下我会持续更新学习笔记有什么问题和建议也可以在评论区讨论#课程需明白1、有那几种Web域名上差异2、有哪几种源码语言框架差异3、网站数据存储有那几个方式4、URL访问对应正确和错误原因由此我们需要结合安全测试思考1、域名上架构了解后的思路意义2、源码上架构了解后的思路意义3、数据上架构了解后的思路意义4、解析上架构了解后的思路意义#域名差异-主站分站端口站子站1、主站www.xiaodi8.com2、分站blog.xiaodi8.com3、端口站www.xiaodi8.com:884、目录站www.xiaodi8.com/bbs/5、子站123.blog.xiaodi8.com#常规的web应用搭建1、购买云服务器购买域名2、云服务器去搭建中间件phpstudy和宝塔这类集成软件更方便3、下载并上传web程序源码4、添加网站并绑定域名目录1、中间件是什么中间件是位于操作系统和应用程序之间的一类独立软件它包括web服务器中间件、数据库中间件等这里我们只涉及web服务器中间件比如搭建Zblog时用的IIS就是典型的web服务器中间件——它帮Zblog搞定了“怎么接收浏览器的访问请求”“怎么把博客页面返回给用户”这些网络层面的事Zblog只需要专注做博客的内容管理功能就行。2、域名需要备案否则无法在网络上被访问。如果服务器是香港或非大陆地区不备案也可以#源码差异-结构语言框架闭源加密1、源码目录结构对应后台目录文件目录逻辑目录前端目录数据目录配置文件等2、源码开发语言类型ASPASPXPHPJavaPythonGoJavascript等3、语言开发框架组件PHPThinkphpLaravel YII CodeIgniterCakePHPZend等JAVASpringMyBatis Hibernate Struts2Springboot等PythonDjangoFlask BottleTurbobarsTornadoWeb2py等JavascriptVue.js Node.js BootstrapJQueryAngular等4、开源闭源加密类型开源-如Zblog闭源-如内部开发加密-如通达OA#数据差异-本地数据分离数据云数据库1、数据库类型Access、MYSQL、SqlServer、Oracle、Redis、DB2、Postgresql、MongoDB等2、本地数据库本地服务器搭建3、分离数据库另外的服务器搭建4、云数据库RDS等之前是一个云服务器然后上面搭建数据库这个是一步到位直接开个数据库。用这个有一个好处它有白名单就是只允许哪些ip连接数据库所以就算知道数据库账号密码也没办法了。比如背景www.xxx.com 服务器IP是12.123.123.1 数据库放在云数据库上面我现在拿到网站webshell网站权限我怎么去获取到数据库里面的数据1、上传一个数据库连接脚本到网站上访问脚本去让脚本去连接数据库就是恶意代码执行返回结果2、利用网站权限上传代理流量工具做数据中转的操作去连接数据库frp/chisel就是用来搭建流量隧道的工具把这类程序传到网站服务器上运行打通攻击者和服务器的通道你在本地数据库软件发出的连接请求全部由这台服务器代为发送相当于远程操控这台服务器去访问云数据库数据库的作用就是存储数据是一个按数据结构来存储和管理数据的计算机软件系统常见的有MySQLOracle这两个是关系型数据库还有非关系型数据库RedisMongoDB关系型数据库以表格形式呈现数据是以行存储列表示这条数据的属性非关系型数据库支持多种数据模型键值对文档宽列图形数据等等DB数据库数据的“仓库”纯数据集合DBS数据库系统实现数据管理的完整硬件体系仓库管理员工具规则DBMS数据库管理系统操作和管理DB的专用软件我们常用的MySQL是数据库管理系统是实打实的软件程序它运行在操作系统之上靠操作系统调用硬件硬盘、内存来实现数据的存储和读写本身也需要被安装、启动、运行#平台差异-中间件类型系统类型容器类型1、系统Windows、Linux、MacOS等2、容器Docker、K8s、Vmware、VirtualBox等提到docker就可以想到虚拟化docker将软件与其依赖项打包为容器相比于传统的虚拟机docker容器更加轻便、快速、容易部署Docker 是一个 “容器化” 工具能把应用程序和它需要的所有依赖比如库、配置文件、运行环境打包成一个 “容器”。Docker核心概念1、镜像Image镜像就是 “容器的模板”是一个只读的文件包包含了运行应用所需的所有东西代码、依赖、配置等。类比就像操作系统的 ISO 镜像文件比如 Windows 安装盘本身不能直接用但可以用它 “安装” 出一个可运行的系统。或者说软件安装包2、容器Container容器是镜像的 “运行实例”是镜像被 “激活” 后形成的可操作环境。容器是独立的、隔离的多个容器之间互不干扰。类比用 ISO 镜像安装好的 Windows 系统你可以在里面操作运行程序、改配置关闭后还能重新启动。3、仓库Repository仓库是存放镜像的 “云仓库”类似代码仓库如 GitHub你可以从仓库下载别人做好的镜像也可以把自己的镜像传上去。最常用的公共仓库是 Docker Hub里面有海量现成的镜像比如 Nginx、MySQL、Python 等。原文链接关于容器Docker_什么是容器 docker-CSDN博客Docker镜像和ISO镜像之间的区别ISO镜像是完整的操作系统模版相当于一个“空电脑”拿到手可以在上面安装任何软件MySQLNginxJava都能装自己决定部署什么Docker镜像是单个软件的专属运行模版相当于一个“预装了某款软件的专用设备”比如MySQL镜像就是预装了MySQL的专用环境里面只有这个软件能让它跑起来的最小依赖没法再装其他的软件开箱就能用这个专属软件。3、中间件Apache、Nginx、IIS、lighttpd、Tomcat、Jboos、Weblogic、Websphere、Jetty等#解析差异-URL路由绝对相对路径格式权限1、URL路由URL访问对应文件MVC模型等MVC是程序员定制的代码开发规范将项目分为三部分控制器接收请求模型操作数据库视图展示页面。PHP框架普遍采用该架构依靠路由访问程序容易产生路由解析漏洞。常规url和文件目录对应上路由访问mvc源码 java pythonweburl和文件目录对应不上 要根据配置路由决定。1. 传统网站URL直接对应服务器里真实存在的文件与文件夹。2. MVC框架URL和硬盘上的文件目录完全不对应不存在真实物理路径。3. 路径生成规则程序员手动在路由配置文件里手写自定义URL路径把每一条网址绑定到对应的控制器函数。4. 运行流程用户访问网址 → 框架读取路由表 → 找到对应的代码函数 → 调取数据库 → 生成网页。5. 安全考点路由规则配置错误会造成路径解析漏洞突破限制访问后台文件。2、绝对路径这个就是从当前目录开始3、相对路径这个就是从根目录开始就是完整路径4、格式权限后门解析格式网站是什么搭建环境就上传什么后门代码正常执行什么环境写什么代码脚本执行权限如果目录权限设置了就有可能执行不了只能换一个目录了等