Java教程

web安全day42:使用BurpSuite理解Web工作机制

本文主要是介绍web安全day42:使用BurpSuite理解Web工作机制,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

web工作机制

web是通过http传输信息的,用户上网浏览网页时,首先通过浏览器向对方的web服务器发送http请求,接着web服务器收到请求后就会检索相应的页面,一旦检索到相应页面,web服务器就会向浏览器回送该页面。具体来说,一次通信,从浏览器发送请求到服务器响应请求,大致分为9步:

1.浏览器地址栏中输入请求页面的url(发送用户请求)

2.浏览器浏览系统hosts文件解析ip,如果没能查到,则请求dns域名服务系统,把域名解析为ip地址

3.根据解析出来的ip,浏览器与服务器建立连接

4.浏览器发送http请求报文

5.web服务器响应请求,找到相应的html资源文件

6.如果html文件中嵌入了jsp、asp、asp.net或php程序,则web服务器运行这些程序,并将结构嵌入页面。如果应用程序包含有对数据库的操作,则应用程序服务器把查询指令发送给数据库驱动程序,由数据库驱动程序对数据库执行查询操作,查询结果返回给数据库驱动程序,并由驱动程序返回给web服务器,web服务器将数据结果嵌入页面。

7.web服务器把结果页面发送给浏览器

8.浏览器与服务器断开连接

9.浏览器解释html文档,在客户端屏幕上显示结果

网页与网站

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

web容器

也叫web服务器,主要提供web服务,也就是常说的http服务。

常见的web容器有:Apache、IIS、Nginx等。

静态网页

静态网页一般都是.html文件,可以理解为纯文本文件,这些文件中包含了html代码。html是hypertext markup language的缩写,翻译为超文本标记语言,在浏览器中解释运行。

中间件服务器

静态网页只能单向给用户展示信息,而无法与用户产生交互。随着web的发展,信息需要双向流动,产生了交互的需求,也即是动态网页的概念;所谓动态就是利用flash、php、asp、java等技术在网页中嵌入一些可运行的脚本,用户浏览器在解释页面时,遇到脚本就启动运行它。

脚本的使用让web服务可以与用户交互。即信息的双向传递,web服务模式也可以像传统软件一样进行各种事务处理,如编辑文件、利息计算、提交表单等,web架构的适用面大大拓展。

这些脚本可以嵌入在页面中,如js等,也可以以文件的形式单独存放在web服务器的目录中,如.asp,.php,.jsp文件等。这样功能性的脚本越来越多,形成常用的工具包,单独管理,web业务开发时,直接使用就可以了,这就是中间件服务器,它实际上是web服务器处理能力的拓展。

数据库

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


HTTP协议

hypertext transfer protocol,超文本传输协议,是浏览器与web服务器之间的通信协议

用来将html文档从web服务器传输到web浏览器。是一个请求和响应的协议。客户端发出请求,服务器端对请求给出回应。http使用可靠的tcp连接,默认端口80.

特点是支持b/s架构;简单快速,可以传输任意类型的数据对象,比如html、jpg、mp3等,http是无状态的协议。

完整的URL地址

schema://login:password@address:port/path/to/resource/?query_string#fragment

比如

ftp://admin@passwd@192.168.1.1:21

fragment是锚点,实现页面内定位。

url编码

url中允许出现的字符是有限制的,url中path允许直接出现A-Z a-z 0-9 半角减号(-)、下划线句点(.)、波浪号(~)。其他字符会被百分号编号。

如:

“#”-----%23

[]------%20

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

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

ASCii打印字符对照表

十进制

十六进制

字符/缩写

解释

0

00

NUL (NULL)

空字符

1

01

SOH (Start Of Headling)

标题开始

2

02

STX (Start Of Text)

正文开始

3

03

ETX (End Of Text)

正文结束

4

04

EOT (End Of Transmission)

传输结束

5

05

ENQ (Enquiry)

请求

6

06

ACK (Acknowledge)

回应/响应/收到通知

7

07

BEL (Bell)

响铃

8

08

BS (Backspace)

退格

9

09

HT (Horizontal Tab)

水平制表符

10

0A

LF/NL(Line Feed/New Line)

换行键

11

0B

VT (Vertical Tab)

垂直制表符

12

0C

FF/NP (Form Feed/New Page)

换页键

13

0D

CR (Carriage Return)

回车键

14

0E

SO (Shift Out)

不用切换

15

0F

SI (Shift In)

启用切换

16

10

DLE (Data Link Escape)

数据链路转义

17

11

DC1/XON

(Device Control 1/Transmission On)

设备控制1/传输开始

18

12

DC2 (Device Control 2)

设备控制2

19

13

DC3/XOFF

(Device Control 3/Transmission Off)

设备控制3/传输中断

20

14

DC4 (Device Control 4)

设备控制4

21

15

NAK (Negative Acknowledge)

无响应/非正常响应/拒绝接收

22

16

SYN (Synchronous Idle)

同步空闲

23

17

ETB (End of Transmission Block)

传输块结束/块传输终止

24

18

CAN (Cancel)

取消

25

19

EM (End of Medium)

已到介质末端/介质存储已满/介质中断

26

1A

SUB (Substitute)

替补/替换

27

1B

ESC (Escape)

逃离/取消

28

1C

FS (File Separator)

文件分割符

29

1D

GS (Group Separator)

组分隔符/分组符

30

1E

RS (Record Separator)

记录分离符

31

1F

US (Unit Separator)

单元分隔符

32

20

(Space)

空格

33

21

!

34

22

"

35

23

#

36

24

$

37

25

%

38

26

&

39

27

'

40

28

(

41

29

)

42

2A

*

43

2B

+

44

2C

,

45

2D

-

46

2E

.

47

2F

/

报文分析工具

  • F12
  • wireshark
  • fiddler
  • BurpSuite
  • ……

简单报文分析

使用burpsuite对报文进行抓包。

当Burp Suite 运行后,Burp Proxy 开启默认的8080 端口作为本地代理接口。通过设置一个web 浏览器使用其代理服务器,所有的网站流量可以被拦截,查看和修改。默认情况下,对非媒体资源的请求将被拦截并显示(可以通过Burp Proxy 选项里的options 选项修改默认值)。对所有通过Burp Proxy 网站流量使用预设的方案进行分析,然后纳入到目标站点地图中,来勾勒出一张包含访问的应用程序的内容和功能的画面。在Burp Suite 专业版中,默认情况下,Burp Scanner是被动地分析所有的请求来确定一系列的安全漏*洞。

我们使用社区版burpsuite进行测试。

下载地址为:​​https://portswigger.net/burp/communitydownload​​

burpsuite需要java环境支持,jdk7或者jdk8都可以。

下载地址为:​​https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html​​

浏览器需要针对burpsuite进行一些配置。

打开工具--internet选项--连接--局域网设置,配置代理服务器,勾选为LAN使用代理服务器。

打开burpsuite,进入proxy选项。intercept is on表示拦截浏览器数据,并显示在burpsuite中,forward表示转发。不转发浏览器就无法正常工作,无法得到请求的数据。

请求报文

GET /test/1.php HTTP/1.1
Accept: */*
Accept-Language: zh-CN
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)
Accept-Encoding: gzip, deflate
Host: 192.168.189.148
Pragma: no-cache
Cookie: PHPSESSID=pt5bvc0pu8s2d72si3cl8nslfv
Connection: close

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

1、请求行包括以下内容

方法:GET

资源路径:/test/1.php

协议/版本:HTTP/1.1

2、请求头包括以下内容

从请求报文第二行开始到第一个空行为为止之间的内容。

其中包括很多字段。

3、GET报文没有请求正文,只有POST报文有请求正文

请求方法

GET

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

POST

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

HEAD

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

PUT

与GET方法相反,PUT方法可以向服务器中写入文档。

TRACE

回显浏览器的请求。

OPTIONS

请求WEB服务器告知器支持的各种功能。

DELETE

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

响应报文

HTTP/1.1 200 OK
Date: Sat, 08 Jan 2022 13:58:31 GMT
Server: Apache/2.4.39 (Win64) OpenSSL/1.1.1b mod_fcgid/2.3.9a mod_log_rotate/1.02
X-Powered-By: PHP/7.1.9
Connection: close
Content-Type: text/html; charset=UTF-8
Content-Length: 13

array(0) {
}

实验:利用telnet模拟浏览器发送HTTP请求

cmd---telnet 192.168.189.148 80,回车

ctrl+]

回车

复制

GET /php/test/1.php HTTP/1.1
HOST:192.168.189.148

粘贴,回车

有响应,表示成功。

我们使用相同的方法对百度进行测试

获得了百度首页的源代码,将该源代码保存为2.html。进行访问。


这篇关于web安全day42:使用BurpSuite理解Web工作机制的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!