041 web架构安全分析

一:web工作机制

我们学习渗透测试这门课程,主要是针对web应用。
输入网址:

本地缓存
host
IP/ARP
DNS
IP
网关
路由
到达对方主机
访问80  443
三次握手
建立连接
http 数据包
http 响应
	1 	.html文件
	2 	.php文件
	3	mysql
	4	.php运行结果

请添加图片描述

二:网页,网站

我们可以通过浏览器上网看到的精美页面,一般都是经过浏览器渲染过的html页面,其中包含了css等前端技术。多个网页的集合就是网站。
静态的网页
静态的页面,都是一些.html文件,是纯文本文件。在浏览器中解释运行

三:web容器

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

三:中间件服务器

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

四:apache调用php的三种方式

1、模块方式,这种方式中web server 与模块是同时加载的
2、cgi方式,每当一个请求到来时,web server调用一次php.exe,调用结束后php进程关闭;用的是进程间通信的方式
3、fast-cgi方式,php以服务器的形式提供服务,web 服务与php同时启动,当php服务启动时,会自动产生多个可执行的字php进程,
   每当一个请求到来时,web服务器将请求通过tcp的通信方式转交给php服务器,此时php服务器调用一个已经准备好的进程来处理请求,
   处理完成后php服务器将结果返回给web服务器同时不用关闭那个php进程。这样处理的速度要比cgi模式快的多。

五:数据库的出现:

静态网页与脚本都是事前设计好的,一般不经常改动,但网站上很多内容需要经常的更新,如新闻,博客文章,互动游戏等,这些变动的数据放在静态的程序中显然不合适,传统的办法是数据与程序分离,采用专业的数据库。web开发者在web服务器后边增加了一个数据库服务器,这些经常变化的数据存进数据库,可以随时更新。当用户请求页面时,脚本根据用户请求的页面,涉及到动态数据的地方,利用sql数据库语言,从数据中读取最新的数据,生成“完整”页面,最后发送给用户。

 

六:HTTP协议

HTTP(HyperText Transfer Protocol,超文本传输协议)是浏览器与web服务器之间的通信协议,是传递消息的规范和要求。
1990年提出的,当前版本1.1
http 是用来将html文档从web服务器传输到web浏览器
是一个请求和响应的协议。客户端发出请求,服务器端对请求给出回应。
http使用可靠的tcp连接,默认端口80
特点;支持浏览器/服务器模式(b/s架构)
简单快速:浏览器向服务器提出请求时,只需要传送请求方法和请求路径。
灵活:http运行传输任意类型的数据对象
	.html		纯文本
	.jpg		图片
	.mp3		音频
http协议是无状态的协议

报文分析工具:
	F12
	wireshark
	fiddler
	burp suite
	...

http请求由请求行,请求头,请求正文三个部分组成
	1:请求行:方法,资源路径,协议/版本
		方法:GET
		资源路径:/php/test/get.php
		协议/版本:HTTP/1.1
	2:请求头
		从请求报文第二行开始到第一个空行为止之间的内容。其中包含很多字段。
	3:请求正文。
GET
	是最常用的方法,通常用于请求服务器发送的某个资源
POST
	可以向服务器提交参数以及表单,包括文件流等。
HEAD
	与GET方法类似,但在服务器响应中只返回首部。
PUT
	与GET从服务器读取文档相反,PUT方法会向服务器写入文档。
TRACE
	回显浏览器的请求。提交什么请求,就显示出什么请求。
OPTIONS
	请求web 服务器告知其支持的各种功能。让浏览器返回它所支持的一些方法
DELETE
	请求服务器删除请求URL所指定的资源
	
http报文分析:web应用的所有通信的消息都要遵守HTTP协议的规范和要求。			
REQUEST:请求报文:
	Host: localhost
	User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.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://localhost/PHP/test/
	Connection: keep-alive
	Upgrade-Insecure-Requests: 1
	Cache-Control: max-age=0
	
主要字段:
	Host:主要用于指定被请求资源的Internet主机和端口号
	User-Agent:浏览器指纹
	Referer:包含一个URL,代表当前URL的上一个URL。这一个页面是由哪一个页面跳转过来的。
	Cookie:记录请求者的身份认证消息
	Accept-Charset:用于指定客户端接收的字符集
	Content-Type:数据类型
	Content-Length:用于指明实体正文的长度,以字节方式存储的十进制数字来表示
	Last-Modified:用于指示资源的最后修改时间和日期
	
RESPONSE:响应报文,如下:
	HTTP/1.1 200 OK
	Date: Thu, 17 Feb 2022 09:08:56 GMT
	Server: Apache/2.4.18 (Win32) OpenSSL/1.0.2e PHP/5.3.29
	X-Powered-By: PHP/5.3.29
	Content-Length: 13
	Keep-Alive: timeout=5, max=100
	Connection: Keep-Alive
	Content-Type: text/html

响应报文由状态行,响应头,响应正文三部分组成。
	1:状态行:协议/版本,状态代码,描述短语
		协议/版本:HTTP
		状态代码: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头告诉浏览器定时刷新浏览器
	
Cookie与Session机制
	HTTP协议本身是无状态的协议,HTTP不会记录前一次传输的数据信息。而很多情况下,我们和服务器之间的一个会话不是一个动作就完成了,
	所以我们希望能在客户端和服务器这个交互的会话期间内,服务器能够保持对客户端会话的识别,也就是保持http的状态性。

七:URL与url编码

URL:统一资源定位符(网址),用来告诉web容器,浏览器所请求资源(文件)的路径。例如:
	http://localhost/test/request.php?name=ajest
	schema://login:password@address: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 的协议、域名和端口都相同,我们就称这两个 URL 同源。
	浏览器默认两个相同的源之间是可以相互访问资源和操作 DOM 的。两个不同的源之间若想要相互访问资源或者操作DOM,
	那么会有一套基础的安全策略的制约,我们把这称为 同源策略。它的存在可以保护用户隐私信息,防止身份伪造等(读取Cookie)。
	同源策略主要表现在 DOM、web 数据 和 网络 这三个层面。但是有三个标签是允许跨域加载资源:
	<img src=''>
	<link href=''>
    <script src=''>
	同源策略是禁止JavaScript进行跨域访问的安全策略。它也是浏览器沙盒环境所提供的一项制约。
	浏览器可以同时处理多个网站的内容,其典型方法为使用标签页或iframe等
同源策略的条件:
	URL的主机(全称域名)一致,比如:www.qq.com   www qq com都必须一致
		域名地址:scheme  ://  host:port  path  ?query
	Scheme(协议)一致
	端口号一致
	同源策略的保护对象不仅仅是iframe内的文档。比如,实现Ajax时所使用的XMLHttpRequest对象能够访问的URL,也受到了同源策略的限制。

九:实验:

9.1:利用telnet模拟浏览器发送http请求

		telnet ip port
		GET /PHP/test/get.php HTTP/1.1
		HOST:ip

win7端开启telnet客户端服务
在这里插入图片描述
win2008开启telnet服务端,并且在服务里面开启telnet服务,
netstat -an查看是否开启23端口号,
win7和win2008均需要关闭防火墙
win2008:
在这里插入图片描述

<?php
var_dump($_GET);
?>

win7:
在这里插入图片描述
然后回车,然后把

GET /PHP/test/get.php HTTP/1.1
HOST:ip

复制到命名窗口(页面不会显示),
在这里插入图片描述

然后敲两下回车
在这里插入图片描述
 

9.2:利用telnet传送GET参数

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

9.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

在这里插入图片描述

 
C:\phpStudy\WWW\PHP\test\location.php

<?php
header("Location:./get.php");
?>

在这里插入图片描述

9.4:同源策略的探究

准备两个页面
结构目录:
在这里插入图片描述

1:index.php

<html>
<head>
<title>跨 frame 的读取实验</title>
<meta charset="utf-8">
</head>
<body>
<iframe name="iframe1" width="300" height="80"
src="http://localhost/php/sop/iframe.html"
>
</iframe>
<input type="button" onclick="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>

2:iframe.html

<html>
<head>
<meta charset="utf-8">
</head>
<body>
<form name="form1"> iframe 的内层密码 <input type="text" name="passwd" value="password1">
</form>
</body>
</html>

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值