1、Web应用环境架构
我们常见的Web应用环境主要是由开发语言,程序源码,中间件容器,数据库,服务器操作系统,第三方软件等组成构建的。
开发语言:也就是指Web应用是使用什么程序语言所编写的,如php、asp、jsp、java、python、ruby,go、html、javascript等。
程序源码:就是由各种开发语言所编写好的程序代码,可根据开发语言分类;应用类型分类;开源CMS分类;开发框架分类等。
中间件容器:简单来说,中间件就是用来支撑Web应用运行的平台,主流的中间件有IIS、Apache、Nginx、Tomcat、Jboss、Weblogic、Glassfish等。
数据库:数据库是用来存储Web应用的各种数据的,常见的数据库有:Access、Mysql、Mssql、Oracle、db2、Sybase、Redis、MongoDB等。
服务器操作系统:主要有Windows系列、Linux系列和Mac系列等。
第三方软件:第三方软件就是管理员根据自己的需求所安装的其他软件,它不是Web应用环境所必需的,比如phpmyadmin、vs-ftpd、VNC、ELK、Openssh等。
2、Web应用安全漏洞分类
常见的Web安全漏洞包括SQL注入、XSS跨站脚本、RCE执行、CSRF/SSRF/CRLF、反序列化、逻辑越权、XXE、未授权访问、弱口令安全、文件安全(文件上传、文件包含、文件下载/删除)等。
在了解了Web应用的环境架构之后,我们需要对这些Web应用安全漏洞有明确的认识和理解。它们都是产生在程序源码层面的,主要是由于开发人员在编写程序代码时没有严格的规范和过滤所导致的各种漏洞,用一句话来概括就是漏洞函数决定是何种漏洞,可控变量决定漏洞是否可以利用。
所以说,这些漏洞的产生是和中间件、数据库、操作系统都没有关系的。
3、Web数据包请求响应过程
(1)请求数据包:
1.请求行:请求类型/请求资源路径、协议的版本和类型
2.请求头:一些键值对,一般由w3c定义,浏览器与web服务器之间都可以发送,表示特定的某种含义
3.【空行】请求头与请求体之间用一个空行隔开;
4.请求体:要发送的数据(一般post方式会使用);例:userName=123&password=123&code=…
(2)响应数据包:
1.状态行:协议版本、数字形式的状态代码和状态描述,个元素之间以空格分隔
2.响应头:包含服务器类型、日期、长度、内容类型等
3.【空行】响应头与响应体之间用空行隔开
4.响应正文:程序处理后果,浏览器会将实体内容中的数据取出来,生成相应的页面
其中有一些关键的参数含义我们需要了解,如:Host、User-Agent、Cookie、Referer、Server、Content-Length等。这里就不一一赘述了,可以参考以下链接:
https://www.cnblogs.com/cherrycui/p/10815465.html
这里需要介绍到一款本地代理工具,也可以叫抓包工具,Burpsuite。它上面集成了许多的模块,其中Proxy模块是一个拦截HTTP/S的代理服务器,作为一个在浏览器和目标应用程序之间的中间人,允许你拦截,查看,修改在两个方向上的原始数据流。
借助Burpsuite可以帮助我们更直观地了解数据包的请求响应过程。
这里还有一个需要了解的知识点就是我们常说的状态码,常见的状态码包括:
1**:提示信息-表示请求已收到,继续处理
2**:发送成功(200)
3**:重定向(302)
4**:客户端错误
400.发送请求有语法错误
401.访问页面没有授权
403.没有权限访问该页面
404.没有该页面
5**:服务端错误
500.服务器内部异常
504.服务器请求超时,没有返回结果
在渗透测试的信息收集过程中有一个关键的点就是针对网站文件后台目录的扫描,它的核心原理就是通过判断请求文件地址所返回的状态码来决定的。
4、实验
本次实验是关于网站的搭建,利用到宝塔的搭建平台来实现,它集成了我们所需的各种开发语言、中间件、数据库和第三方软件,并且可以根据我们的应用需求一键部署。
由于实验内容比较基础,在此就不予展示啦!