目录
Web服务器概述
Web服务器一般指网站服务器,也称为WWW服务器,是World Wide Web的简写,主要功能是提供网上信息的浏览服务。目前主流的Web服务器有Apache。
浏览器访问服务器的过程
- 用户在浏览器地址栏上输入网址,访问服务器
- 服务器处理请求会给浏览器发送响应信息
- 所浏览器请求的是动态资源,服务器会将动态资源转换成静态资源
Web架构
web架构由web应用、中间件、数据库和操作系统组成。不同的层对攻击者来说是不同的攻击点,例如之前危害巨大的永恒之蓝就是基于windows操作系统的高危漏洞。
常见数据库的端口号
- 关系型数据库
- Oracle数据库默认端口号:1521
- MySQL数据库默认端口号:3306
- SQLServer数据库默认端口号:1433
- postgreSQL数据库默认端口号:5432
- NOSQL数据库
- MongoDB默认端口号:27017
- Redis默认端口号:6379
- memcached默认端口号:11211
常见中间人端口号
- apache:80
- tomcat:8080
- weblogic:7001
- nginx:80
- iis:80
- jboss:8080
iis只能在windows上搭建
动态网站
动态网站是先从数据库里面获取数据再显示到网站页面上的,网站内容实时更新。与用户交互性强。
常见动态脚本语言
Perl、PHP、ASP、JSP
静态网站
由没采用任何程序开发的网站纯粹采用HTML语言编写
简单的网站模型
动态网站工作过程
HTTP协议
HTTP协议解析
HTTP协议(超文本传输协议)是一种详细规定了浏览器和万维网服务器之间相互通信的规则,它是万维网交换信息的基础,它允许将HTML文档从Web服务器传送到Web浏览器
HTTP协议详解
HTTP协议是一种无状态的协议,无状态是指WEB浏览器与WEB服务器之间不需要建立持久的连接,这意味着放一个客户端向服务器发送请求,浏览器返回响应(Response),连接就被关闭,再服务器端不保留连接的相关信息。HTTP请求只能由客户端发起,而服务器不能主动向客户端发送数据。
HTTP遵循请求(Request)应答(Response)模型,Web浏览器向Web服务器发送请求,然后Web服务器处理请求并返回适当的应答
URL
URL:(统一资源定位符)也被成为网页地址,是互联网标准的地址。
格式:协议://服务器IP[:端口]/路径/[?查询]
HTTP工具:借助浏览器可以快速发起一次HTTP请求,如果不借助浏览器也能发起HTTP请求,例如Linux系统中的curl命令。浏览器也属于HTTP工具的一种。
HTTP响应与请求
HTTP请求
HTTP请求包括三部分,分别是请求行、请求头和请求正文
POST /login.php HTTP/1.1 //请求行
Host:www.test.com //请求头
User-Agent:Mozilla/5.0 (compatible; MSIE 10.0;Windows NT 6.1;WOW64;Trident/6.0)
//空白行,代表请求头结束
Username=admin&password=admin //请求正文
请求方法
- GET
- 请求内容在url中显示
- 请求正文数据为空
- 请求数据的长度由限制
- 相对于POST方法不安全
- POST
- 请求内容不在url中显示
- 请求内容在请求正文
- 请求内容没有长度限制
- HEAD
- 向服务器索与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以再不必传输整个响应内容的情况下,就可以获取包含在响应小消息头中的元信息
- 探测目标网站是否存在某个文件--经常使用这个方法进行扫描
- PUT
- 向目标服务器上传数据
- 通常服务器都会关闭PUT方法,因为它会为服务器建立文件,属于危险的方法之一
- iis写权限漏洞
- DELETE
- 删除目标服务器上的文件
- OPTHINS
- 探测目标网站服务器开启了哪些HTTP请求方法
HTTP响应
HTTP状态码
- 1xx:代表请求已被接收,需要继续处理。范围:100-102
- 2xx:代表请求已成功被服务器接收、理解并接收。范围200-207
- 3xx:重定向。范围:300-307
- 4xx:请求错误。范围:400-449
- 5xx:服务器错误。范围:500-510
- 600:源站没有返回响应头部,只返回实体内容
常见状态码
- 200:服务器成功返回网页
- 403:请求的服务器资源权限不够
- 404:请求的网页不存在
- 503:服务不可用
字段
- Host:浏览器请求的主机和端口
- User-agent:浏览器信息
- Accept:描述客户端希望接收的响应体数据类型
- 常见的媒体测试类型如下
- text/html : HTML格式
- text/plain :纯文本格式
- text/xml : XML格式
- image/gif :gif图片格式
- image/jpeg :jpg图片格式
- image/png:png图片格式
- video/mpeg:视频
- vedio/quicktime:视频
- application/xhtml+xml :XHTML格式
- application/xml : XML数据格式
- application/atom+xml :Atom XML聚合格式
- application/json : JSON数据格式
- application/pdf :pdf格式
- application/msword : Word文档格式
- application/octet-stream : 二进制流数据(如常见的文件下载)
- application/x-www-form-urlencoded : < form encType=””>中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)
- 常见的媒体测试类型如下
- Accept-Language:浏览器可以接收的语言和国家类型
- Accept-Encoding:浏览器可以接收的压缩编码类型
- Accept-Encoding: gzip, deflate ,表示这个请求的内容希望被压缩
- Accept-Charset:请求的 HTTP 标头通告的字符集客户端能够理解。使用内容协商,服务器然后选择一个提议,使用它并在Content-Type响应头中通知客户它选择的内容。浏览器通常不会将此标题设置为每个内容类型的默认值,通常这是正确的,并且传输它将允许更容易的指纹识别。
- Cookie:浏览器缓存服务器信息
- Content-Type:用于定义网络文件的类型和网页的编码
- referer:告诉服务器该网页是从哪个页面链接过来的,服务器因此可以获得一些信息用于处理
- 一些网络安全设备在去加一些防御的安全规则会去检测请求数据包内的Referer值,如果是在Referer值内检测到fofa关键字样,会被认为恶意请求产生警告
- X-Forwarded-For:获得请求者的IP地址
- If-Modified-Since:(某个页面缓存时间)
- Connection:HTTP请求的版本的特点
- Date:请求网站的时间
HTTP协议与HTTPS协议的区别
- HTTPS协议需要到CA申请证书,一般免费证书很少,需要交费
- HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有ssl加密传输协议
- HTTP和HTTPS使用的是完全不同的连接方式用的端口也不一样,前者默认使用80,后者则是443
- HTTP的连接很简单是无状态的
- HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议要比HTTP协议安全