0%

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

#课程需明白:

1、有那几种Web域名上差异

2、有哪几种源码语言框架差异

3、网站数据存储有那几个方式

4、URL访问对应正确和错误原因

由此我们需要结合安全测试思考:

1、域名上架构了解后的思路意义

2、源码上架构了解后的思路意义

3、数据上架构了解后的思路意义

4、解析上架构了解后的思路意义

#域名差异-主站&分站&端口站&子站

1、主站

www.xiaodi8.com

2、分站

blog.xiaodi8.com

3、端口站

www.xiaodi8.com:88

4、目录站

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、源码开发语言类型

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

3、语言开发框架组件

PHP:ThinkphpLaravel YII CodeIgniterCakePHPZend等

JAVA:SpringMyBatis Hibernate Struts2Springboot等

Python:DjangoFlask BottleTurbobarsTornadoWeb2py等

Javascript:Vue.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就是用来搭建流量隧道的工具,把这类程序传到网站服务器上运行,打通攻击者和服务器的通道,你在本地数据库软件发出的连接请求,全部由这台服务器代为发送,相当于远程操控这台服务器去访问云数据库)

数据库的作用就是存储数据,是一个按数据结构来存储和管理数据的计算机软件系统,常见的有MySQL,Oracle,这两个是关系型数据库,还有非关系型数据库Redis,MongoDB

关系型数据库:

以表格形式呈现,数据是以行存储,列表示这条数据的属性

非关系型数据库:

支持多种数据模型,键值对,文档,宽列,图形数据等等

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 等)。

原文链接:https://blog.csdn.net/m0_64198455/article/details/152463359

Docker镜像和ISO镜像之间的区别:ISO镜像是完整的操作系统模版,相当于一个“空电脑”,拿到手可以在上面安装任何软件(MySQL,Nginx,Java都能装),自己决定部署什么: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、格式权限:后门解析格式(网站是什么搭建环境就上传什么后门),代码正常执行(什么环境写什么代码),脚本执行权限(如果目录权限设置了,就有可能执行不了,只能换一个目录了)等