WEB安全入门 --持续更新

本文为网络搬运整合,仅供学习使用,侵权联系删除!

 

Web安全岗位需求

 

1 职位描述

对公司各类系统进行安全加固;

对公司网站、业务系统进行安全评估测试(黑盒、白盒测试)

对公司安全事件进行响应、清理后门、根据日志分析攻击途径

安全技术研究,包括安全防范技术、黑客技术等;

跟踪最新漏洞信息,进行业务产品的安全检查。

岗位要求

熟悉Web渗透测试方法和攻防技术,包括SQL注入、XSS跨站、CSRF伪造请求、命令执行等OWSP TOP10 安全漏洞与防御;

熟悉LinuxWindows不同平台的渗透测试,对网络安全、系统安全、应用安全有深入理解和自己的认识;

熟悉国内外安全工具,包括KaliLinuxMetasploitNessusNampAWVSBurp等;

Web安全整体有深刻理解,有一定漏洞分析和挖掘能力;

本篇文章目录参考链接:https://www.secpulse.com/archives/144410.html

一. HTTP基础

  1. HTTP协议介绍

(1) HTTP协议(HyperText Transfer Protocol,超文本传输协议),是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准;

(2) HTTP是基于TCP/IP通信协议来传递数据的(HTML 文件, 图片文件, 查询结果等);

(3) HTTP协议通常承载于TCP协议之上,有时也承载于TLSSSL协议层之上,这个时候,就成了我们常说的HTTPS

(4) HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型,HTTP是一个无状态的协议;

(5) HTTP默认的端口号为80HTTPS的端口号为443

 

  1. HTTP工作流程

1)用户在浏览器输入URL网址;

2)浏览器根据URL网址中的域名,通过DNS解析出服务器IP地址;

3)然后通过TCP/IP协议来和服务端建立链接(TCP三次握手);

4)建立链接后,发送请求给服务器;

5)服务器回复浏览器请求;

6)浏览器拿到对应的html等资源,渲染页面

3.  短链接

短连接的操作步骤是:

建立连接——数据传输——关闭连接,...建立连接——数据传输——关闭连接;

如果客户请求频繁,将在TCP的建立和关闭操作上浪费较多时间和带宽;

4. 长链接

长链接,指在一个连接上可以连续发送多个数据包,

在连接保持期间,如果没有数据包发送,需要双方发链路检测包。

长链接操作步骤: 建立连接——数据传输...(保持连接)...数据传输——关闭连接。

长连接可以省去较多的TCP建立和关闭的操作,减少浪费,节约时间。

5. HTTP存在的安全问题

可能被窃听

(1) HTTP 本身不具备加密的功能,HTTP 报文使用明文方式发送;

(2) 由于互联网是由联通世界各个地方的网络设施组成,

所有发送和接收经过某些设备的数据都可能被截获或窥视。(例如大家都熟悉的抓

包工具:Wireshark);

认证问题

1无法确认你发送到的服务器就是真正的目标服务器(可能服务器是伪装的)

2无法确定返回的客户端是否是按照真实意图接收的客户端(可能是伪装的客户端)

3可能被篡改

请求或响应在传输途中,遭攻击者拦截并篡改内容的攻击被称为中间人攻击

二.HTTPS基础

基于HTTP存在的一些安全问题,出现了HTTPS来解决这类问题

  1. HTTPS介绍

超文本传输安全协议(英语:Hypertext Transfer Protocol Secure,缩写:HTTPS

常称为HTTP over TLSHTTP over SSLHTTP Secure,是一种通过计算机网

络进行安全通信的传输协议。

HTTPS经由HTTP进行通信,但利用SSL/TLS来加密数据包。

HTTPS开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私

与完整性。简言之,就是对HTTP加了一层安全策略

  1. HTTPS怎么解决HTTP存在的安全问题的?

HTTPS是在通信接口部分用 TLS(Transport Layer Security 传输层安全性协议)

TLS协议采用主从式架构模型,用于在两个应用程序间通过网络创建起安全的连

接,防止在交换数据时受到窃听及篡改;

3. SSLTLS的关系

 

(1) 传输层安全性协议(英语:Transport Layer Security,缩写作 TLS),及其前

身安全套接层(Secure Sockets Layer,缩写作 SSL)是一种安全协议,目的

是为互联网通信,提供安全及数据完整性保障。

(2) 网景公司(Netscape)在1994年推出首版网页浏览器,网景导航者时,推出

HTTPS协议,以SSL进行加密,这是SSL的起源。

(3) IETFSSL进行标准化,1999年公布第一版TLS标准文件。随后又公布RFC

5246 20088月)与 RFC 6176 20113月)。

在浏览器、电子邮件、即时通信、VoIP、网络传真等应用程序中,广泛支持这

个协议。

4 . TLS/SSL 协议

HTTPS 协议的主要功能基本都依赖于 TLS/SSL 协议

TLS/SSL 的功能实现主要依赖于三类基本算法:散列函数 、对称加密和非对称

加密,其利用非对称加密实现身份认证和密钥协商,对称加密算法采用协商的密

钥对数据加密,基于散列函数验证信息的完整性。

5.  HTTPS工作流程的通俗解释

信鸽解释,爱丽丝和鲍勃是通过信鸽异地联系

 开始阶段

爱丽丝给鲍勃发了个飞鸽传书。鲍勃收到了。很happy

但坏蛋马洛里拦截了爱丽丝的鸽子并且篡改了信息呢?

鲍勃就没有办法去知道爱丽丝发出的信息在传递过程中遭到了修改。

 

于是,爱丽丝和鲍勃见面商量后,决定对飞鸽传书内容进行加密。

加密方式:他们会将信息中的每个字母按照字母表中的顺序前移三位。

比如,D→AE→BF→C。如此一来,原文为 “secret” 的信息就变成了 “pbzobq”

这下。当爱丽丝给鲍勃再发了个飞鸽传书时。

坏蛋马洛里拦截了信息也没用;他不知道解密规则。

此时鲍勃收到信息消息后,再根据和爱丽丝商量的规则解密获取信息。

他很得意自己的聪明才智。他们的做法就是对称加密但他们的做法存在一些问题。

他们需要见面才能确定加密方式。这显然不方便。

问题是如果爱丽丝和鲍勃在开始用信鸽传信之前没有见过面怎么办,

他们没有一个安全的方式来确立密匙。如果他们自己来在信中传递密匙,

马洛里就会截获信息并发现密匙。

这就使得马洛里可以在爱丽丝和鲍勃开始加密他们的信息之前或之后,

阅读到他们信息的内容并按照她的意愿来篡改信息。

这是一个中间人攻击的典型例子,避免这个问题的唯一方法就是收发信的两方一起确

定加密方式。

 通过信鸽传递盒子

所以爱丽丝和鲍勃就想出了一个更好的系统。

当鲍勃想要给爱丽丝发送信息时,他会按照如下的步骤来进行:

鲍勃向爱丽丝送一只没有携带任何信息的鸽子。

爱丽丝给鲍勃送回鸽子,并且这只鸽子带有一个有开着的锁的盒子,爱丽丝保管着锁

的钥匙

鲍勃把信放进盒子中,把锁锁上然后把盒子送给爱丽丝。

爱丽丝收到盒子,用钥匙打开然后阅读信息。

这样马洛里就不能通过截获鸽子来篡改信息了,因为她没有打开盒子的钥匙。

当爱丽丝要给鲍勃发送消息的时候同样按照上述的流程。

爱丽丝和鲍勃所使用的流程通常被称为非对称密钥加密。之所以称之为非对称,是因

为即使是你把信息编码(锁上盒子)也不能破译信息(打开锁住的盒子)

在术语中,盒子被称为公匙而用来打开盒子的钥匙被称为私匙。

上面方式还是会存在问题

当鲍勃收到盒子时他如何能确定这个盒子来自爱丽丝的,

而不是马洛里截获了鸽子然后换了一个她有钥匙能打开的盒子呢

如何信任盒子

爱丽丝决定签名标记一下盒子,这样鲍勃收到盒子的时候就可以检查签名来确定是爱

丽丝送出的盒子了。

那么鲍勃如何打一开始就能识别出爱丽丝的签名呢?这是个好问题。爱丽丝和鲍勃也

确实有这个问题,所以他们决定让泰德代替爱丽丝来标记这个盒子。

那么谁是泰德呢?泰德很有名的,是一个值得信任的家伙。他会给任何人签名并且所

有人都信任他只会给合法的人签名标记盒子。

如果泰德可以确认索要签名的人是爱丽丝,他就会在爱丽丝的盒子上签名。因此马洛

里就不可能搞到一个有着泰德代表爱丽丝签了名的盒子,因为鲍勃知道泰德只会给他

确认过的人签名,从而识破马洛里的诡计。

泰德的角色在术语中被称为认证机构。而你阅读此文时所用的浏览器打包存有许多认

证机构的签名。

所以当你首次接入一个网站的时候你可以信任来自这个站点的盒子因为你信任泰德

而泰德会告诉你盒子是合法的。

上述方式虽然比较完美的解决来存在的安全问题。

but,盒子装东西太多太重。让飞鸽传书很慢。

这也是个问题

如何解决盒子太重问题

现在爱丽丝和鲍勃有了一个可靠的系统来进行交流,然他们也意识到让鸽子携带盒子

比原本只携带信件要慢一些。

因此他们决定只有在选择用对称加密来给信息编码(还记得凯撒加密法吧?)的密匙

时,使用传递盒子的方法(非对称加密)。

这样就可以二者的优点兼具了,非对称加密的可靠性和对称加密的高效性。

现实世界中我们不会用信鸽这样慢的送信手段,但用非对称加密来编码信息仍要慢于

使用对称加密技术,所以我们只有在交换编码密匙的时候会使用非对称加密技术。

那么相信现在的你已经大概了解了HTTPS是如何工作的了~~~

参考链接:https://juejin.cn/post/6844903842056765447

 

三.HTTP协议请求响应过程

 

1. HTTP请求

 

1HTTP协议的请求报文

 

当浏览器向服务器发送一个请求到Web服务器,它发送一个数据块,或请求信息,

 

HTTP请求信息包括3部分:

 

请求方法URI协议/版本;

 

请求头(Request Header)

 

请求正文;

 

下面是一个HTTP请求的示例:

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

GET/test.jsp HTTP/1.1

 

Accept:image/test.image/jpeg,*/*

 

Accept-Language:zh-cn

 

Connection:Keep-Alive

 

Host:222.35.232.103

 

User-Agent:Mozila/5.0(compatible;MSIE5.01;Window NT5.0)

 

Accept-Encoding:gzip,deflate

 

username=bingyue&password=bingyue

 

  

 

1)请求方法URI协议/版本

 

请求的第一行是方法/内容 URL协议/协议版本名称

 

1

GET/test.jsp HTTP/1.1

 

上面的代码中,“GET”说明请求方法,“/test.jsp”表示网络资源,中间空格,最后说明

 

协议和协议的版本。

 

根据HTTP标准,HTTP请求可以使用多种不同的请求方法。例如:HTTP1.1

 

允许支持七种请求方法(也叫动作):GETPOSTHEADOPTIONSPUT

 

DELETETARCE。日常开发中, GETPOST是最常用的方法,主要在相关的

 

Web开发中。

 

URL路径指定了要访问的网络资源。一般来说,我们需要的是相对路径,因为确定资

 

源位置,知道网络资源相对于服务器的根目录的路径就可以,所以以“/”开头。在头信

 

息结束时,声明了通信过程中HTTP协议版本的使用版本。

 

需要注意,方法名称很重要的一点是严格区分大小写。有些时候,某个请求所针对的

 

资源可能不支持对应的请求方法,会通过不同的状态码给出响应。例如,服务器将返

 

回一个状态码405(方法不允许),当请求服务器或方法不理解不支持相应的时间,返回

 

一个状态码501(没有实现)

 

2)请求头(Request Header)

 

请求头包含了一些客户环境和请求的内容信息。例如,请求头可以声明浏览器内核和

 

语言使用,请求的长度等。

 

1

2

3

4

5

6

7

8

9

10

11

Accept:image/test.image/jpeg.*/*

 

Accept-Language:zh-cn

 

Connection:Keep-Alive

 

Host:222.35.232.103

 

User-Agent:Mozila/5.0(compatible:MSIE5.01:Windows NT5.0)

 

Accept-Encoding:gzip,deflate.

 

3)请求正文

 

请求正文和请求头要有空行。这个空行必须存在,说明结束请求头传输,开始传输正

 

文请求。请求正文中一般包含很多信息,例如用户提交的用户名和密码之类的登陆信

 

息:userlogin=bingyue¤tpwd=bingyue

 

在真实应用中,协议的请求正文可以包含大量的信息,而不是如示例的HTTP

 

求中一样,请求正文只有简单的一行数据。

 

2 . HTTP响应

 

和请求报文类似,HTTP响应主要也是3个部分构成:

 

1)协议状态版本代码描述

 

2)响应头(Response Header)

 

3)响应正文

 

下面是一个HTTP响应的示例:

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

HTTP/1.1 200 OK

 

Server:Apache Tomcat/7.0.1

 

Date:Mon,6Oct2014 13:23:42 GMT

 

Content-Length:102

 

<html>

<head>

 

<title>HTTP响应文件<title>

 

</head>

 

<body>

 

这是HTTP响应文件!

 

</body>

 

</html>

 

客户端向服务器发送请求,和请求报文类似,服务器会以状态行响应。

 

响应报文包括:HTTP协议的版本、结果编码以及其他的必要信息,如实体信息等。

 

响应类别不同,响应报文里可以包含或者不含实体内容。

 

HTTP响应报文的首先是以状态行开始,这些可以参考示例的代码。

 

响应头也就是报文首部,和请求头首部一样,包含重要的信息,例子中我们可以看到,

 

比如日期时间和服务器类型以及内容长度和数量等。

 

参考链接:https://www.cnblogs.com/binyue/p/4500578.html

 

四.了解HTMLJavascript

 

  1. HTML

 

   https://baike.baidu.com/item/HTML/97049?fr=aladdin

 

 

 

  1. JAVACRIPT   

 

https://baike.baidu.com/item/JSP/141543?fr=aladdin

 

五. Get/Post区别

 

  • GET 请求只能 URL 编码,而 POST 支持多种编码方式
  • GET 请求只接受 ASCII 字符的参数,而 POST 则没有限制
  • GET 请求的参数通过 URL 传送,而 POST 放在 Request Body
  • GET 相对于 POST 更不安全,因为参数直接暴露在 URL
  • GET 请求会被浏览器主动缓存,而 POST 不会(除非自己手动设置)
  • GET 请求在 URL 传参有长度限制,而 POST 则没有限制
  • GET 产生的 URL 地址可以被收藏,而 POST 不可以
  • GET 请求的参数会被完整的保留在浏览器的历史记录里,而 POST 的参数则不会
  • GET 在浏览器回退时是无害的,而 POST 会再次提交请求

 


链接:https://www.zhihu.com/question/28586791/answer/774605294   

 

六. Cookie/Session是什么?

 

1.背景介绍      

 

HTTP是一种无状态的协议,为了分辨链接是谁发起的,需自己去解决这个

 

问题。不然有些情况下即使是同一个网站每打开一个页面也都要登录一下

 

SessionCookie就是为解决这个问题而提出来的两个机制。

 

会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。

 

常用的会话跟踪技术是CookieSessionCookie通过在客户端记录信息确

 

定用户身份,Session通过在服务器端记录信息确定用户身份。

 

2 . cookie的主要内容

 

     主要包括:名字,值,过期时间,路径和域。

 

     :其中域可以指定某一个域比如.google.com,也可以指定一个域下的具体

 

某台机器比如www.google.com或者froogle.google.com。可以在java中通过

 

cookie.setDomain(".soncookie.com"); 设置,这个参数必须以“.”开始。

 

     路径:就是跟在域名后面的URL路径。

 

      路径与域合在一起就构成了cookie的作用范围。

 

     过期时间:如果不设置过期时间,则表示这个cookie的生命期为浏览器会

 

话期间,只要关闭浏览器窗口,cookie就消失了。这种cookie被称为会话

 

cookie。会话cookie是保存在内存里,当然这种行为并不是规范规定的。如

 

果设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开

 

浏览器,这些cookie仍然有效直到超过设定的过期时间。

 

3 . session的主要内容

 

包括:名字,值,失效时间等。

 

      4 . SessionCookie的主要区别

 

         (1) Cookie是把用户的数据写给用户的浏览器;

 

        (2)Session技术把用户的数据写到用户独占的session;

 

        (3)Session对象由服务器创建,开发人员可以调用request对象的

 

getSession方法得到session对象。

 

     5 . SessionCookie的应用场景

 

       (1)登录网站,今输入用户名密码登录了,第二天再打开很多情况下就直接

 

打开了。这个时候用到的一个机制就是cookie

 

       (2)session一个场景是购物车,添加了商品之后客户端处可以知道添加了哪

 

些商品,而服务器端如何判别呢,所以也需要存储一些信息就用session

 

 

 

详细:https://www.cnblogs.com/andy-zhou/p/5360107.html

 

七. Web安全专业术语

Webshell

 

菜刀

 

0day

 

SQL注入

 

上传漏洞

 

XSS

 

CSRF

 

一句话木马

 

其他:https://blog.csdn.net/fuhanghang/article/details/83756025

 

八. 渗透工具使用

 

  1. Vmware安装 下载地址:https://www.vmware.com/cn.html 

 

              密钥:ZF3R0-FHED2-M80TY-8QYGC-NPKYF
                        YF390-0HF8P-M81RQ-2DXQE-M2UT6
                        ZF71R-DMX85-08DQY-8YMNC-PPHV8

 

         2. Windows/kali虚拟机安装

         3. PhpstudyDVWA环境搭建渗透测试靶场

         4. Java环境变量安装

         5. Python环境变量安装

         6. Sqlmap

         7. Burpsuite

         8. Nmap

         9. Nessus

        10. Appscan

        11. AWVS

 

 

WEB安全入门 --持续更新

上一篇:报表生成器FastReport.Net购买或使用过程中的常见问题解答


下一篇:Java当中的异常(一)