建站笔记 / 网络通识 · 2024年10月27日 0

2 :Web其他、前后端、软件、Docker、分配站等

一、前后端分离

传统的网站前后端是由一个人项目组成,服务器上直接部署一个项目即可,随着技术的发展和业务的复杂性提高,越来越多的项目倾向于前后端分离的方式,即前端代码和后端代码分开编写,作为两个不同的项目的分开部署,前后端仅通过API交互和传输数据。目前比较成熟的前端框架有VUE、React、Angular等,后端一般采用Java、C++等。前后端分离的项目在安全测试中存在以下影响

  • 前端页面大部分不存在漏洞,或漏洞较少
  • 后端项目和前端项目大部分不在同域名
  • 获得前端权限有可能不影响后端,后端权限需要单独获取

判断一个网站是否是前后端分离有多种方法,详细教程请查看怎样判断一个网站是不是前后端分离的?_怎么看项目是不是前后端分离_gblfy的博客-CSDN博客

在第1天的教程中,我们通过自己安装IIS搭建了Zblog,除此之外,我们还可以通过一些集成环境或者脚本一键可视化安装,虽然最后实现的功能是一样的,但是不同的搭建方式却对安全测试的结果有着不同的影响,接下来我们分别通过宝塔、phpstudy等几种搭建网站等方式,来查看其区别

二、宝塔

宝塔面板是一款服务器管理软件,支持windows和Linux系统,可以通过Web端轻松管理服务器,提升运维效率。通过宝塔可以直接一键安装各种环境和软件,特别是Linux系统,省去了手工输入命令的步骤。我们来通过宝塔部署一个网站测试一下。

  1. 打开宝塔官网,下载window面板上传至我们的个人服务器(个人服务器需配置安全组打开所有端口),下载链接:https://download.bt.cn/win/panel/BtSoft.zip
  2. 解压安装文件并安装,安装完成后,会显示我们的账号和密码及面板的登录地址,登录成功后,需要我们先绑定宝塔账号才能使用更多功能
  3. 绑定成功后,会给我们推荐一键安装套件,我们选择Apache套件即可(点击面板左上角可查看安装进度)
image.png
  1. 安装完成后,我们点击软件商店-一键部署-zblog
image.png
  1. 输入网站域名,这里我直接用了第一节课中配置好的域名,如果你没有配置过,则需要先去域名控制台设置解析记录
image.png
  1. 安装成功后,即可直接访问刚刚搭建好的网站
image.png
  1. 我们打开ONE-FOX集成工具-webshell管理-哥斯拉v4.0.1-管理-生成-有效载荷选择Php,点击生成
image.png
  1. 生成完成后,打开宝塔面板,点击网站-根目录-上传,将后门文件上传到网站的根目录,并访问
image.png
  1. 打开ONE-FOX集成工具-目标-添加,URL即为该后门文件的地址,有效载荷选择Php-测试链接-添加(注意,如果你的命令行乱码,这里的编码需要改成GBK)
image.png
  1. 点击命令执行,输入whoim,可以看到报错了,无法获取到权限
image.png
  1. 点击文件管理,也无法访问上级目录
image.png

三、phpStudy

phpStudy是一个老牌的服务器集成环境工具,和宝塔类似,我们通过在phpstudy中安装部署一个网站来测试 一下

  1. 下载phpstudy上传至我们的服务器并安装,下载链接:https://public.xp.cn/upgrades/phpStudy_64.zip
  2. 打开宝塔面板-网站-状态改为停止,防止端口号等冲突,接下来打开安装好的phpstudy,启动Apache
image.png
  1. 点击网站-创建网站,配置相关信息,目录直接用宝塔创建好的目录即可
image.png
  1. 此时再次访问study1.zhangjia.pro,访问成功,由于我们直接用的宝塔的网站目录,所以刚刚上传的后门还在,用同样的方法发现phpStudy搭建的网站命令可以执行
image.png
  1. 同时phpstudy在网站的安全设置里,也可以进行一些网络安全配置
image.png

四、IIS

  1. 打开IIS管理器,新建网站,网站目录依旧选择宝塔创建的网站目录即可
  2. 由于80端口被占用,无法启动我们新添加的网站,点击网站-操作-绑定,修改端口号为8080,再次启动即可(如果提示Windows Activation Service (WAS)和万维网发布服务(W3SVC)均处于运行状态,则打开服务,启动Windows Activation Service和 World Wide Web Publishing Service 即可)
image.png
  1. 网站启动成功后,我们再次访问后门,可以看到部分命令可以执行,部分不可以执行,因为IIS和phpstudy的权限不同,phpstudy安装时用的administrator账户,所以phpstudy的命令权限就是administrator,IIS在上一期课程里已经有详细的讲解,这里不再赘述

五、Docker

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。在学习接下来的内容前,我们先来熟悉docker的几个基本概念:

  • Docker的原理是虚拟化技术独立磁盘空间,并非真实的物理环境
  • Docker只能操作单个容器,而Docker Compose可以通过定义和运行 多个容器Docker应用程序,可同时操作多个容器,详细的区别请查看docker和docker-compose的区别_woowahahahahaha的博客-CSDN博客

接下来我们来安装Docker,看一下在Docker中,安全测试有哪些影响

  1. 这里我们重新申请一台Linux(CentOS Steam 8 64位)服务器做测试,打开xshell(下载教程:https://zhangjia.io/506.html),连接我们刚刚购买的服务器
image.png
  1. 输入curl -sSL [https://get.daocloud.io/docker](https://get.daocloud.io/docker) | sh命令来一键安装docker,安装成功后可以通过docker-v 查看docker版本号来确认是否安装成功
  2. 安装成功后,通过systemctl start docker命令启动docker
  3. 通过mirrors / docker / compose 来查看docker compose的最新版本,并替换下面的v2.16.0执行curl -L https://get.daocloud.io/docker/compose/releases/download/v2.16.0/docker-compose-uname -s-uname -m > /usr/local/bin/docker-compose
  4. 将可执行权限应用于二进制文件:sudo chmod +x /usr/local/bin/docker-compose
  5. 创建软链接:sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
  6. 通过docker-compose -v查看版本号来确认是否安装成功
  7. 打开docker官网https://hub.docker.com,可以直接下载别人做好的镜像,我们搜索vluhub(需要先注册登录账户,Vulhub是一个基于docker和docker-compose的漏洞环境集合)选择Tomcat8.0版本,复制docker pull vulhub/tomcat:8.0到xshell中拉取镜像
image.png
  1. 通过docker run -it -d -p 8080:8080 vulhub/tomcat:8.0命令启用我们拉取的镜像,启用成功后,访问ip:8080,即可看到Tomcat的启动页
image.png
  1. 通过docker ps 可以列出我们的docker容器,通过docker stop [CONTAINER ID] 可以停止某个容器
  2. 我们先停止掉刚刚创建的容器,打开Vulhub – Docker-Compose file for vulnerability environment,获取vulhub的GitHub地址并下载 git clone [https://github.com/vulhub/vulhub.git](https://github.com/vulhub/vulhub.git)如果没有安装过Git,则需要先安装Git,安装教程:
  3. 打开Tomcat文件夹:cd vulhub/tomcat/tomcat8/,启动容器docker-compose up -d,此时再次访问ip:8080,可以看到Tomcat的启动页,达到了和第9步一样的效果
  4. 点击Manager App,输入用户名和密码(都是tomcat),通过ONE-FOX集成工具生成java的后门,命名为1.jsp,并打包成zip包后,再将后缀修改为war的格式,并通过Manager的WAR file to deploy模块上传
image.png
  1. 接下来我们访问ip:8080/1/1.jsp,并通过ONE-FOX集成工具即可拿到该服务器的权限
image.png
  1. 虽然看似拿到了该网站所有的权限和目录,但因为是通过docker部署,所以即使我们拿到了权限,也只能拿到当前镜像的权限,无法获取整个服务器的权限(可以通过验证docker的目录和服务器的根目录文件来确认),需要后期通过docker 逃逸来完成攻击

六、建站分配站

某些网站是通过类似凡科建站的方式申请搭建的,网站所有者没有自己的专属服务器,只有使用权,没有所有权,网站的所有内容都是通过凡科建站的后台去配置的(类似于QQ空间),我们安全测试的真实目标并不是网站本身,而是凡科建站平台,一般此类网站会分配一个免费的二级域名,安全测试难度极大

七、静态网站

静态网站就是单个页面,简单来说就是只有单个html页面,不包含程序代码的网站,数据没有传输型,一般以.html结尾,因此访问速度快,但是功能简单,页面单调,此类网站不存在任何安全漏洞,和静态网站对应的是动态网站,像知乎、谷歌等都是动态网站

八、伪静态

伪静态是将动态网页伪装成静态网站的技术,即从文件后缀来看和静态页面一样,但是实际上是个动态页面,只是通过技术手段伪装成静态页面的样子,伪静态页面的内容是通过读取数据库生成的,伪静态对SEO益处较大

参考资料

以上内容整理自小迪安全2023年列课程 xiaodi8.com