web技术讲解(web安全入门03)

一、Web 工作机制

为什么学习这节课 我们学习渗透测试这门课程,主要针对的 Web 应用,所以对 Web 架构需要一定的了解

1.1 网页、网站

我么可通过浏览器上网看到精美的页面,一般都是经过浏览器渲染的.html 页面,其中包含 css 等前端技术。多个网页的集合就是网站。


1.2Web 容器

Web 容器,也叫 Web 服务器,主要提供 Web 服务,也就是常说的 HTTP 服务。 常见的 Web 容器有:Apache/IIS/Nginx 等。 

1.3 静态页面

静态页面,都是些.html 文件,是纯文本文件。这些文件中包含 html 代码。 HTML(HyperText Markup Language,超文本标记语言),在浏览器中解释运行。

1.4 中间件服务器

以上这种,只能单向给用户战术信息。随着 Web 的发展,信息要双向流动,产生了交互的 需求,也就是动态网页的概念;所谓动态就是利用 flash、Php、asp、Java 等技术在网页中 嵌入一些可以运行的脚本,用户浏览器在解释页面时,遇到脚本就启动运行它。 脚本的使用让 Web 服务模式有了双向交流的能力,Web 服务器模式也可以像传统的软件 一样进行各种事务的处理,如编辑文件、利息计算、提交表单等,Web 架构的适用面大大 扩展。 这些脚本可以嵌入到页面中,如 JS 等。也可以以文件的形式单独存放在 Web 服务器的目 录里,如.asp、.php、jsp 文件等。这样功能性的脚本越来越多,形成常用的工具包,单独管 理,Web 业务开发时,直接使用就可以了,这就是中间件服务器,它实际上时 Web 服务器 处理能力的扩展。 weblogic、jboss

1.5 数据库的出现

静态网页与脚本都是事先设计好的,一般不经常改动,但网站上的很多内容需要经常更新, 将这些变动的数据放在静态网页的程序中显然不合适,传统的办法是数据与程序分离,采用 的专业的数据库。

Web 开发者在 Web 服务器后边增加了一个数据库服务器,这些经常变动的数据被存进数 据库,可以随时更新。当用户请求页面时,脚本根据用户请求的页面,涉及到动态数据的地 方,利用 SQL 数据库语言,从数据中读取最新的数据,生产“完整”页面,最后送给用户。 

二、HTTP 协议概述

HTTP(HyperText Transfer Protocol),超文本传输协议,是传递消息的规范和要求。

2.1 概述

1990 年提出的,当前版本 1.1。

HTTP 是用来将 html 文档从 Web 服务器传输到 Web 浏览器。

是一个请求和响应的协议。客户端发出请求,服务器端对请求给出回应。 HTTP 使用可靠的 TCP 连接,默认端口 80 

2.2 特点

支持浏览器/服务器模式

简单快速:浏览器向服务器提出请求时,只需要传送请求方法和请求路径

灵活:HTTP 运行传输任意类型的数据对象

.html 纯文本

.jpg 图片

.mp3 音频

HTTP 协议是无状态的协议

2.3URL

统一资源定位符(网址),用来告诉 Web 容器,浏览器所请求的资源(文件)的路径。

例如:http://localhost/test/requests.php?id=32 Schema://login:password@adress:port/path/to/resource/?query_string#fragment

Port 80

Login 用户名

Password 密码 匿名访问时,默认没有用户名和密码

Fragment 锚点 实现页面内定位

url 编码 URL 只允许出现的字符是有限制的,URL 中 path 开始允许直接出现[A-Z][a-z][0-9],半角

减号(-)、下划线句点(.)、波浪号(~)。

其他字符均会被百分号编码(包括空格)

例如:

# %23

空格 %20

原理:%+ASCII 码十六进制形式

在进行编程的时候,会[+] 代替空格。

注意:不要对中文进行 url 编码

报文分析工具

1、F12

2、wireshark

3、fiddler

4、Burp suite

三、HTTP 报文分析

Web 应用的所有通信的消息都要遵守 HTTP 协议的规范和要求。

3.1REQUEST

请求报文,如下

GET /php/test/get.php HTTP/1.1

Host: 192.168.1.136

User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:75.0) Gecko/20100101

Firefox/75.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2

Accept-Encoding: gzip, deflate

Referer: http://192.168.1.136/php/test/

Connection: close

Upgrade-Insecure-Requests: 1

Cache-Control: max-age=0

HTTP 请求由请求行、请求头、请求正文三部分组成

1、请求行:方法,资源路径,协议/版本

方法:GET

资源路径:/php/test/get.php

协议/版本:HTTP/1.1

2、请求头

从请求报文第二行开始到第一个空行为止的内容。其中包含很多字段

3、请求正文

以上方法没有请求正文,后面会看到

3.2 请求方法

GET

最常用的方法,通常用户请求服务器发送的某个资源。

POST

可以向服务器提交参数以及表单,包括文件流等

HEAD

与 GET 方法类似,但在服务器响应中只返回首部

PUT

与 GET 从服务器读取文档相反,PUT 方法会向服务器写入文档

TRACE

回显浏览器的请求

OPTIONS

请求 Web 服务器告知其支持的各种功能

DELETE

请求服务器删除请求 URL 所指定的资源

3.3 实验

1、使用 telnet 模式浏览器发送 HTTP 请求

Telnet 192.168.1.136 80

GET /php/test/get.php HTTP/1.1

Host: 192.168.1.136


注意:进入 telnet 后,按 ctrl+]键,开启 telnet 的回显,然后按回车键

Telnet www.baidu.com 80

GET / HTTP/1.1

Host: www.baidu.com


2、利用 telnet 传送 GET 参数

GET /php/test/get.php?name=AJEST&pwd=123456 HTTP/1.1

Host:192.168.1.136



3、利用 telnet 模拟 POST,请求传递参数

POST /php/test/post.php?http://192.168.1.136/php/test/post.php HTTP/1.1

Host: 192.168.1.136

Content-Type: application/x-www-form-urlencoded

Content-Length: 19

name=GGG&pwd=123456


4、利用 OPTIONS 方法测试 Web 服务器允许的 HTTP 请求

OPTIONS / HTTP/1.1

Host: 192.168.1.136

get.php


<?php

str=$_GET;

var_dump($str);

$

?>


post.php

<?php

str=$_POST;

var_dump($str);

?>

3.4 主要字段

Host

主要用于指定被请求资源的 Internet 主机和端口号

User-Agent

浏览器指纹

Referer

包含一个 URL,代表当前的 URL 的上一个 URL

Cookie

记录请求者的身份认证信息

Accept-Charset

用户指定客户端接受的字符集

Content-Type

用于向接收方指示实体的介质类型(数据类型)

Content-Length

用于指明实体正文的长度,以字节的方式存储的十进制数字来表示

Last-Modified

用于指示资源的最后修改时间和日期

3.5RESPONSE

响应报文如下:

HTTP/1.1 200 OK

Date: Sat, 25 Apr 2020 09:50:59 GMT

Server: Apache/2.4.23 (Win32) OpenSSL/1.0.2j PHP/5.4.45

X-Powered-By: PHP/5.4.45

Content-Length: 13

Connection: close

Content-Type: text/html

array(0) {

}


响应报文由状态行(响应行)、响应头、响应正文三部分组成。

1、状态行:协议/版本,状态代码,描述短语

协议/版本:HTTP/1.1

状态代码:200

描述短语:OK

2、响应报头

第二行开始到第一个空行为止的所有内容,其中包含了关于 HTTP 响应的重要字段。

3、响应正文

服务器返回资源的内容,即浏览器接收到的 HTML 代码。

状态码

100~199

信息性状态码

200~299

成功状态码

300~399

重定向状态码

400~499

客户端错误状态码

500~599

服务器错误状态码

主要字段

Server

服务器指纹

Set-Cookie

向浏览器端设置 Cookie

Last-Modified

服务器通过这个头信息告诉浏览器,资源的最后修改时间

Content-Length

请求正文长度

Location

重定向目标页面

Refresh

服务器通过 Refresh 头告诉浏览器定时刷新浏览器

四、同源策略

同源策略是禁止 javascript 进行跨域访问的安全策略。它也是浏览器沙盒环境所提供的一项

制约。浏览器可以同时处理多个网站的内容,其典型方法为使用标签或 iframe 等。

4.1 同源策略的条件

URL 的主机(FQDN:Fully Qualified Domain Name 全程域名)一致

Schema 一致

端口号一致




同源策略的保护对象不仅仅时 iframe 内文档。比如实现 Ajax 时所使用的 XMLHttpRequest

对象能够访问的 URL 也受到了同源策略的限制。

4.2 同源策略探究

准备两个页面

index.html


<html>

<head>

<title> 跨 frame 的读取实验</title>

<meta charset="utf-8">

</head>

<body>

iframe name="iframe1" width="300"

height="80"src=http://192.168.1.136/sop/iframe.html>

</iframe>

<input type="button" οnclick="go()" value=" 密码: ">

<script>

function go(){

try {

var x = iframe1.document.form1.passwd.value;

document.getElementById('out').innerHTML = x;

}

catch (e){

alert(e.message);

}

}

</script>

<span id="out"></span>

</body>

</html>


iframe.html

<html>

<head>

<meta charset="utf-8">

</head>

<body>

<form name="form1"> iframe 的内层

密码 <input type="text" name="passwd" value="password1">

</form>

</body>

</html>

这里我们使用我们服务器的浏览器测试这个实验(因为我们要使用不同的两个 URL 来访问

我们的网页)

我们用指定的 IP 访问,可以正常读取




但是当我们使用我们本机的回环地址去访问时,打开页面,无法读取(这就是由同源策略限

制,无法访问内层 iframe)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,029评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,395评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,570评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,535评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,650评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,850评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,006评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,747评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,207评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,536评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,683评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,342评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,964评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,772评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,004评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,401评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,566评论 2 349