Web架构展示:
1、套用模版型(搭建在平台上的个人网站)
比如:csdn / cnblog / github / 建站系统等


类似于这种,一般是中小型应用的首选,这种建站方式流程简单,成本少,上线流程快,这种你想测试它的安全漏洞,由于管理者也不知道它的源码,也只是在这个网站上建立个分站而已,所以你测试的目标就是这个本身建站系统的官网或者是主题
安全测试思路上的不同:
一般以模版套用,基本模版无漏洞,大部分都采用测试用户管理权限为主
2、前后端分离
例子:https://www.rxthink.cn/
前端呢就是我们说的前端显示样式,什么JavaScript,HTML,CSS这些东西、PHP、JAVA这些是后端语言,它们主要的差异就是数据传递 前后端分离就是它的前端(就是我们能看到的地方)它只做了一个数据的展示,然后它的数据就会从网络的传输中产生,你调用他就会有,你不调用就没有,它的网站源码是两套,你看到的就是没有后端语言参与的,只做显示的后端只做处理的
总结:前端只做数据的显示,通过网络来调用数据,后端只做数据的处理
我们来看一个演示站点


这就是典型的前后端分离,www.rxthink.cn这个域名用来做前端数据的显示,manage.thinkphp5.1.elevue.rxthink.cn这个域名用来做后端数据的处理,也就是说 www.rxthink.cn这个网站的数据来自于manage.thinkphp5.1.elevue.rxthink.cn这个网站来控制。这么做的好处是一个后台能管理多个网站,效率提高
像这种网站,对于我们常规的安全测试思路有哪些影响呢?
大家按照常规的渗透测试思路流程来测试它是不行的,你打开它,它就只是做个数据的处理和显示,数据的显示都是远程调用的,很多一些逻辑性的,代码层面的漏洞都在后端处理好了就给到前端了,相当于我们测试的那个点在后端呢,而后端已经处理完了才给到前端,后端在哪我们都不知道,所以无法测试这个漏洞
这就是前后端分离带来安全测试的一些影响、挑战、难度
安全测试思路上的不同:前端以JS(Vue,NodeJS等)安全问题,主要以API接口测试,前端漏洞(如XSS)为主,后端隐蔽难度加大。
思路:https://mp.weixin.qq.com/s/HtLU_EBXWcbq-lt10oPYwA
3、集成软件包宝塔,Phpstudy,xamp等
(中小型、个人使用居多)
安全测试思路上的不同:主要是防护体系,权限差异为主
4、自主环境镜像
云镜像打包,自行一个个搭建
安全测试思路上的不同:主要是防护体系,权限差异为主
5、容器拉取镜像
Docker
安全测试思路上的不同:虚拟化技术,在后期测试要docker逃逸提权
对比以上三种搭建方式的差异(安全测试渗透测试过程中)采用PHP语言的Web应用(其他语言可能对结果有误差) 我们上传一个后门程序,它们的差异结果如下
后门的权限:
1、宝塔搭建:(命令执行不行 文件管理除web目录能看,其他都不能看)
为什么不能看?(使用人群广,宝塔内置一些安全防护 宝塔本身控权)
技术要点:绕过宝塔限制
2、镜像环境搭建:(命令执行可以 文件管理基本都能看 除去一些高权限目录(root等))
(如果你使用原生搭建,拉取镜像取搭建的话,那就是linux系统本身控权,除了高权限目录,剩下的都能看)
技术要点:提权横向
3、docker容器搭建:(内置的虚拟化技术 单独搞了一个磁盘空间在给这个应用做支撑)
简单来说,就是开了一个虚拟机,你搞进去了,也是这个虚拟机,跟我本机没有任何关系,所以需要逃离出来才能危害到我本机
技术要点:docker逃逸提权技术
6、纯静态页面
纯HTML+CSS+JS的设计
类似于游戏私服
安全测试思路上的不同:无后期讲到的Web漏洞,因为它就是一个静态的HTML页面
那么这种网站我们应该怎么进行测试呢?
找线索:找资产,域名,客户端等
我们可以从域名上做文章,这个静态网站的域名有没有子域名呢?子域名上有没有动态网站呢?从客户端进行测试(抓包等 有没有什么IP地址 扩大资产 从而进行更多范围的安全测试)
#Web源码形式:
(做代码审计的时候,你要知道这个源码是否是重要的 你要知道怎么看这个源码)
旨在了解源码差异,后期代码审计和测试中对源码真实性的判断
1、单纯简易源码(bluecms)
比如说,我搭建了这个网站,我想访问这个后台,那么我就可以 xxx.com/admin来访问

目录对应好,我就直接访问它,比如我想访问ann.php,那么我就直接加上这个文件名就可以直接访问到,例:xxx.com/ann.php 很直接了当,目录和访问地址是直接挂钩的
2、MVC框架源码(X交易)
这个是采用think PHP框架开发的

我们并没有看到类似于admin这样的后台目录,如果你想访问后台目录应该怎么办呢?
它的后台目录在这里 application\admin\controller

如果我们像上面的那种访问方式:
xxx.com/application/admin/controller (错误的)
可能正确的访问是这样的 具体的还要看路由访问关系
xxx.com/index.php/admin/ (了解url对应文件 文件对应url) 也就是知道漏洞该怎么触发文件(测试)
3、编译调用源码
如:NET-DLL封装(hdhcms_XiaZaiBa)

打开我们可以看到,大部分都是aspx文件,但是它代码逻辑处理是在bin目录下的dll文件

我们打开dll反编译工具。

这样我们就能反编译,看到它的源码了 核心价值代码都在bin目录里,我们可以打开一个aspx文件

可以看到,里面啥都没有,那么这里面怎么会显示内容出来呢?就是因为它调用了dll文件
这种就叫编译打包类源码
Java-Jar打包(pear-admin-boot-2.0.0.jar)
同上,我们也可以使用java的反编译工具(jadx-gui)来查看它的源码

4、前后端分离源码
https://segmentfault.com/a/1190000045026063
我们结合以上的文章,对它进行个剖析处理
我们可以看到,它的前端代码是放在了client目录下,都是json文件,没有任何后端语言 一般都是前端的nodejs、VUE等(js开发框架)


你看它的后端语言,用的就是java 一般后端语言就是PHP JAVA Python等
5、加密型源码
例如(通达OA)

我们可以看到,这种源码打开之后,都是人们看不懂的乱码,这种就是加密了。 为什么要加密呢?是因为软件开发者为了保护自己的版权,怕别人在它基础上进行二开魔改等等
我们想要看这种代码,就只能尝试对它进行解密操作
讲了这么多,我们主要理解什么呢? 理解后期渗透测试过程中,源码给到你了,你要知道这个源码是不是你想要的 或者说这个源码给到你有没有帮助 你要能直接判断出来(这个源码是不是你目标的源码、这个源码要怎么用,怎么打开)
