目录

http数据包和https数据包

浏览器向网站服务器发送和接受数据的图示

http和https之间的不同

HTTP/HTTPS具体区别?

HTTP简要通信过程

HTTPS简要通信过程(见图)

 Request请求数据包数据格式:

请求行详细解说:

请求头详细解说:

空行解说:

请求数据

空行和请求数据的图片示例:

Response返回数据包数据格式

搭建安全问题

涉及知识

web的组成架构模型

域名IP目录解析安全问题

常见文件后缀解析对应安全

对应实验演示:

Web源码拓展

前言

知识点

关于WEB源码目录结构

关于WEB源码脚本类型

关于WEB源码应用分类

关于WEB源码其他说明

web源码目录

关于源码获取的相关途径:

总结:

演示案例:

ASP,PHP等源码下安全测试

源码应用分类下的针对漏洞

简要目标从识别到源码获取

cms识别

靶场试炼(HACK靶场)

这里以8003为例

以8006端口为例

简要目标从识别到源码获取

 操作系统和数据库

前言:

操作系统层面

数据库层面

识别数据库类型常见方法

数据库类型区别及识别意义

数据库常见漏洞类型及攻击

简要数据库层面漏洞影响范围

第三方层面

补充

加密算法

前言:

较为常用的加密解密工具

常见加密编码等算法解析

MD5加密

SHA加密

 时间戳

URL

BASE64编码

Unescape编码

AES加密

DES加密

常见加密形式算法解析

常见解密方式(针对)

了解常规加密算法的特性


http数据包和https数据包

浏览器向网站服务器发送和接受数据的图示

 该图是一个浏览器向网站服务器发送和收到请求的图片

#Request请求数据包

#Response返回数据包

如果有代理的话:

 #proxy代理服务器

如果是有代理的话,不管是请求还是返回都要经过代理,就意味着你在接收或者发送数据的时候,再经过代理时一些数据包可能会被修改

http和https之间的不同

http:   

HTTP

TCP

IP

 https:

HTTP

SLL or TLS

TCP

IP

总之就是https比http多了一层明文加密,就是说如果https被抓到了之后,被抓到的数据也是一些加密之后的信息,而http被抓到之后,抓到的数据是明文,SLL和TLS就是它里面会有一些为证书和加密协议在里面

HTTP/HTTPS具体区别?

HTTP简要通信过程

建立连接—>发送请求数据包—>返回响应数据包—>关闭连接

①浏览器建立与web服务器之间的连接

②浏览器将请求数据打包(生成请求数据包)并发送到web服务器

③web服务器将处理结果打包(生成响应数据包)并发送给浏览器

④web服务器关闭连接

HTTPS简要通信过程(见图)

 Request请求数据包数据格式:

①请求行:请求类型/请求资源路径、协议的版本和类型

②请求头:一些键值对,浏览器与web服务器之间都可以发送,特定的某种含义

③空行:请求头与请求体之间用一个空行隔开;

④请求体:要发送的数据(一般post提交会使用);例: user=123&pass=123

请求行详细解说:

请求行由三个标记组成:请求方法、请求URL和HTTP版本,它们用空格分开。

例如

GET /index.html HTTP/1.1:

HTTP规划定义了8种可能的请求方法:

GET:检索URL中标识资源的一个简单请求

HEAD:与GET方法相同,服务器只返回状态行和头标,并不返回请求文档

POST:服务器接受被写入客户端输出流中的数据的请求

PUT:服务器保存请求数据作为指定URL新内容的请求

DELETE:服务器删除URL中命令的资源的请求

OPTIONS:关于服务器支持的请求方法信息的请求

TRACE: web服务器反馈Http请求和其头标的请求

CONNECT :已文档化,但当前未实现的一个方法,预留做隧道处理

请求头详细解说:

由关键字/值对组成,每行一对,关键字和值用冒号分开。请求头标通知服务器腾于客户端的功能和标识。

HOST:主机或域名地址

Accept:指浏览器或其他客户可以接爱的MIME文件格式。Servlet可以根据它判断并返回适当的文件格式。

User-Agent:是客户浏览器名称

Host:对应网址URL中的web名称和端口号。

Accept-Langeuage:指出浏览器可以接受的语言种类,如en或en-us,指英语。

connection:用来告诉服务器是否可以维持固定的HTTP连接。http是无连接的,HTTP/1.1使用Keep-Alive为默认值,这样,当浏览器需要多个文件时(比如一个HTML文件和相关的图形文件),不需要每次都建立连接

Cookie:浏览器用这个属性向服务器发送cookie。Cookie是在浏览器中寄存的小型数据体,它可以记载和服务器相关的用户信息,也可以用来实现会话功能。

Referer:表明产生请求的网页URL。如比从网页/icconcept/index.jsp中点击一个链接到网页/icwork/search,在向服务器发送的GET/icwork/search中的请求中,Referer是http : //hostname : 8080/icconcept/index.jsp。这个属性可以用来跟踪web请求是从什么网站来的。

Content-Type:用来表名request的内容类型。可以用HttpServletRequest的getContentType ()方法取得。

Accept-Charset:指出浏览器可以接受的字符编碑英文浏览器的默认值是ISo-8859-1.

Accept-Encoding:指出浏览器可以接受的编码方式。编码方式不同于文件格式,它是为了压缩文件并加速文件传递速度。浏览器在接收到web响应之后先解码,然后再检查文件格式。

空行解说:

最后一个请求头标之后是空行,发送回车符和退行,通知服务器以下不再有头标。

请求数据

使用PosT传送,最常使用的是 Content-Type 和 Content-Length头标。

空行和请求数据的图片示例:

 其中/zb_system/cmd.php也就是我们的源码文件

Response返回数据包数据格式

一个响应由四个部分组成;状态行、响应头标、空行、响应数据。

①状态行:协议版本、数字形式的状态代码和状态描述,个元素之间以空格分隔

②响应头标:包含服务器类型、日期、长度、内容类型等

③空行:响应头与响应体之间用空行隔开

④响应数据:浏览器会将实体内容中的数据取出来,生成相应的页面

HTTP响应码:

  1xx:信息,请求收到,继续处理

2xx:成功,行为被成功地接受、理解和采纳

3xx:重定向,为了完成请求,必须进一步执行的动作

4xx:客户端错误

5xx:服务器错误

返回为:200存在文件

返回为:403存在文件夹

返回为:3xx均可能存在

返回为:404不存在文件及文件夹

返回为:500均可能存在

查看的方法:输入要打开的文件或文件夹的路径,右键-检查

点击网络,下面会有该文件或者文件夹的状态,方法,域名等信息

 

 

可以看到status这个状态码显示的值是200,代表存在文件

也就是说访问这个地址的search.php文件是存在的

 可以看到访问这个dsdasdsd文件的时候是不存在的

 访问的结果是404,代表了文件不存在

也就是说,我们可以通过HTTP响应码的值来判断文件或文件夹存在的状态

像有一些扫描工具,会有下面的响应码勾选项,意思是如果在扫描的过程中碰到你所勾选的响应码对性的文件就输出显示到扫描器上

 想要判断文件或者文件夹是否存在可以打开hackbar,在后面加上要判断的文件或文件夹,按下execute

 在拦截请求下面可以找到改包

 发给重发器后出现404,说明没有jjj这个文件或者文件夹

响应头标:

像请求头标一样,它们指出服务器的功能,标识出响应数据的细节。

空行:

最后一个响应头标之后是一个空行,发送回车符和退行,表明服务器以下不再有头标。

响应数据:

HTML文档和图像等,也就是HTML本身

搭建安全问题

涉及知识

常见搭建平台脚本启用

域名IP目录解析安全问题

常见文件后缀解析对应安全

常见安全测试中的安全防护

WEB后门与用户及文件权限

web的组成架构模型

网站源码:分脚本类型,分应用方向

操作系统: windows linux

中间件(搭建平台): apache iis tomcat nginx等

数据库:access mysql mssql oracle sybase db2 postsql等

域名IP目录解析安全问题

一个服务器ip下可以有或多个网站,所以用域名区分,所以用ip地址访问和用域名访问的结果不一定是相同的,有可能用域名访问的目录是用ip地址访问的的目录的子目录。有一些程序员在会将程序备份,一般备份就备份在www(是用ip地址访问时访问的文件)的这个文件下,而用域名访问时,就找不到这些备份文件(因为域名访问的是www文件下的一个子文件),所以我们在扫描的时候就要扫描ip地址,才可能扫描到这些文件

 总的来说,域名解析访问的是域名解析的目录,而ip解析访问的目录一般在域名解析的上一级目录

常见文件后缀解析对应安全

对应实验演示:

从这两张图可以看到,如果文件后缀名是asp的格式的话他对应的可执行文件的路径是图示路径下的asp.dll文件

 

 然后我们再添加一个其他的,新建一个拓展名(自己命名的文件后缀),同一个可执行路径

 再放置一个以它为后缀名的文件,这个文件明显就是一个未知的后缀名

 在里面写上一个sap的后门

 将其放入后保存

 然后再连接发现是可以连接成功的

上面的实验说明了在搭建平台上面有这样一个设置,这个设置是可以匹配后缀名和可执行文件,也就是说为什么.asp的文件可以解析呢,因为在这里有一个设置可执行文件路径,对应是解析这个asp.dll文件,那么如果其他后缀名也是对应的解析这个asp.dll文件的话,那么他就会以asp这个脚本的格式取解析相应的后缀

所以说我们碰到一些网站,在访问它的格式的时候,会发现有的网站在访问这个格式的时候会不解析,有的是正常解析,有的就报错,那么出现这种情况就是网站中间件上面的一个解析协议

也就解释了为什么cdx和cer可以都可以解析dll

 回到上面的问题,有些网站访问的时候解析不出来就可以是上上面的中间件会自己添加,修改目录路径等,所以就解析不出来

常见安全测试中的安全防护讲解

在这里有三种安全防护,这里安全通信就类似于证书一样的东西

 在身份验证里面有启动匿名访问,如果关闭的话也就是在访问的时候需要登入,也就是要有对应计算机的上的用户的账号密码才能访问它,如果开启的话,在访问时就会默认以下面的用户名去访问

 IP地址和域名限制也就是说是会限制访问的IP(域名也可以解析称IP地址)如果用被限制的IP地址访问就会出现

 WEB后门与用户及文件权限解说

 这个匿名访问时候是用这个用户去访问的,也叫来宾用户

 

 我们把他下面的拒绝选项全部勾选

 然后我们刷新之后再访问就发现看不到东西了

 

这个就是文件夹设置相关权限,他禁止wesite来宾用户的一个权限,导致连接的后门看不到任何东西,他也是一个防护技巧,也是测试里面经常碰上的一类问题

在IIS里面的执行权限里选择无,再访问xiaodi8,会提示错误,原因是他在目录下修改了执行权限,不给执行权限

然后我们绕过的思路是把后门放到其他可执行的文件下,比如根目录

 

 

演示案例:

基于中间件的简要识别

基于中间件的安全漏洞

基于中间件的靶场使用

我们去访问一个网站,抓取数据包,可以看到是由中间件的

 

我们再发现中间件(搭建平台后)可以翻阅一些资料查找中间件的漏洞

https://www.vulhub.org/

Web中间件常见漏洞总结,Vulhub靶场

Web源码拓展

前言

WEB源码在安全测试中是非常重要的信息来源,可以用来代码审计漏洞也可以用来做信息突破口,其中WEB源码有很多技术需要简明分析。比如:获取某ASP源码后可以采用默认数据库下载为突破,获取某其他脚本源码漏洞可以进行代码审计挖掘或分析其业务逻辑等,总之源码的获取将为后期的安全测试提供了更多的思路。

知识点

关于WEB源码目录结构

①后台目录

②模板目录

③数据库目录

④数据库配置文件

关于WEB源码脚本类型

①ASP

②PHP

③ASPX

④JSP

⑤JAVAWEB

⑥Python

关于WEB源码应用分类

①门户

②电商

③论坛

④第三方

⑤其他

关于WEB源码其他说明

①框架或非框架

②CM识别

③开源或内部

④源码获取

web源码目录

我们找一个源码来分析

 admin是网站后台的意思,也就是后台操作的地方,如果访问他的话可以看到一些后台路径

 

menber会员的,会员中心的一些东西,template这个就是一些模板文件

像一些数据库的配置文件一般就会再配置的英文单词的目录下面,这里应该是在includes这个目录下,我们可以试着把它打开,再找一些关键字来判断

 这里我们把includes这个文件打开

 

可以试着找一下,要是找不到可是试着去别的文件下找

如果打开到类似于这个的就数据库配置文件,这里有数据库的账号,地址,密码等信息,如果我们得到这个信息,就得到对方的这个网站和数据库通信之间的一些信息,包括他们连接的账号密码等等,如果有这个账号密码的话就可以去连接对方的数据库,然后从数据库里得到我这个网站的网站源码,里面涉及到的管理员的账号密码也就是它后台里面的账号密码,然后再可以利用这个账号密码去登入后台

 

关于源码获取的相关途径:

搜索,咸鱼淘宝,第三方源码站,各种行业对应

总结:

关注应用分类及脚本类型估摸出可能存在的漏洞(其中框架类例外),在获取源码后可进行本地安全测试或代码审计,也可以分析其目录工作原理(数据库备份,bak文件等),未获取到的源码采用各种方法想办法获取!

演示案例:

ASP,PHP等源码下安全测试

①平台识别-某CMs无漏洞-默认数据库2

②平台识别-某CMs有漏洞-漏洞利用

源码应用分类下的针对漏洞

niushop电商类关注漏洞点-业务逻辑

简要目标从识别到源码获取

①本地演示个人博客-手工发现其CMS-漏洞搜索或下载分析

②http://weipan .1016sangshen.cn/内部搭建的靶场

③人工爆框架-搜索特定url-获取其他相符站点-漏洞测试

④借助特定行业源码或咸鱼进行搜索获取-本地搭建-代码审计或其他

cms识别

(1)首先它是分为三种,人工,工具和平台

(2)工具识别需要长期的更新和维护,它的原理就是采用扫描特有文件,就是说cms的源码会有一个特有的文件,通过扫描特有文件是由存在来判断是否使用cms一些字典库网站:

打开后会看到一些cms的识别库,比对md5值

 前面的那个红色框起来的是文件路径,通过文件路径访问下载改文件,下载之后在cmd下执行certutil -hashfile +目标名字,这个命令来查到他的md5值,找到之后拿去对比

 

 

如果不想要自己手动识别就可以去平台去识别

靶场试炼(HACK靶场)

这里不做攻击,只讲思路

在虚拟器上打开靶场后,访问127.0.0.1会有相应的漏洞选择

 

这里以8003为例

访问8003端口

 在它网页下面可以看到有xycms,我们试着去网上下载xycms源码

 下载完之后打开看到的就是他的网站源码

 打开他的文件:xydata

 打开之后看到的这个文件是asp网站特有的,也就是说只有asp网站才会有这个文件这个mdb就是数据库的一个文件,可是直接用excel打开,打开之后可以看到它有很多东西

 一般情况下后台的账号密码就会在里面,把密码拿去解密一下就可以得到啦

 根据之前在源码找到的目录,访问他的admin目录就可以进入它的后台,然后根据之前破解出来的密码账号就可以登入了,然后就成功进入他的后台

 

以8006端口为例

打开之后可以看到是php的一个程序

 拉到最下面可以看到他的版本号,名字号

 然后我们可以看到在网上搜索是发现是有很多它的漏洞的

 当然也可以把它这个程序下载下来再做漏洞分析

源码应用分类下的针对漏洞

niushop电商类关注漏洞点-业务逻辑

电商系统主要就是支付,支付的话可能会存在一些业务漏洞

(这里主要讲思路)

先登入用户抓包

 我们估计购买的数量就是由他来控制的

 我们在点击提交订单后会生成订单

 

如果在上面我们把数量改为-1,就会显示需要付款0元

简要目标从识别到源码获取

本地演示个人博客-手工发现其CMS-漏洞搜索或下载分析

 http: / / weipan.1016sangshen.cn/ 内部搭建的靶场

人工爆框架-搜索特定url-获取其他相符站点-漏洞测试

借助特定行业源码或咸鱼进行搜索获取-本地搭建-代码审计或其他

如何手动发现CMS漏洞呢,先抓包,如图,看抓到的包里有没有一些特殊名字的文件,有的话可以复制下来去谷歌搜索一下信息

 操作系统和数据库

前言:

除去前期讲到过的搭建平台中间件,网站源码外,容易受到攻击的还有操作系统,数据库,第三方软件平台等,其中此类攻击也能直接影响到WEB或服务器的安全,导致网站或服务器权限的获取。

 

操作系统层面

识别操作系统常见方法

可以使用namp来识别操作系统

 

简要两者区别及识别意义

不同的操作系统不管是操作上面还是设置上面还是安全方面都有很大的不同,最主要的区别第一个就是网站的路径问题,第二就是大小写的区分(windows是部分大小写的而Linux是准确区分大小写的)第三,windows一些文件在Linux上是不能运行的而linux的一些文件在Windows上也不能运行。

操作系统层面漏洞类型对应意义

简要操作系统层面漏洞影响范围

数据库层面

识别数据库类型常见方法

首先先要知道网站分量两类,一类是静态的一类是动态的,静态的就类似于大学时候老师让我们自己制作网站的那种类型的网站,他是没有数据传输的,而动态网站是有数据传输的,大多数的网站都是动态网站,当然静态网站是没有漏洞的,因为它没有数据传输,也就是说必须要有数据传输才会有有漏洞

识别方式的话就是如果有网站就去网站里识别,如果没有网站的话就通过nmap也可以扫描

如何在网站上识别数据库?

一般如果是asp的就是access和sql server ,php的话一般就是MYSQL

如果是aspx的话一般就是mssql,jsp可以是mssql和oracle ,python的话一般就是可以是mysql,postgresql,mangodb等等

为什么可以用端口扫描呢?

在端口扫描的时候会扫描端口开放情况,数据库一旦在运行的时候就会开放一个默认端口,就比如mysql的默认打开端口是3306,access没有端口,mssal开放的端口是1433,oracle开放的端口是1521,MongoDB默认端口是27017,

Redis默认端口是6379等等

数据库类型区别及识别意义

数据库的不同表示他的结构也不同,每个数据库它里面的安全机制,写法结构都会有少许的不一样,所以它会产生的漏洞也不一样

数据库常见漏洞类型及攻击

有弱口令攻击

简要数据库层面漏洞影响范围

第三方层面

如何判断有那些第三方平台或软件

简要为什么要识别第三方平台或软件常见第三方平台或软件漏洞类型及攻击简要第三方平台或软件安全测试的范围

 

补充

除去常规wEE安全及APP安全测试外,类似服务器单一或复杂的其他服务(邮件,游戏,负载均衡等),也可以作为安全测试目标,此类目标测试原则只是少了web应用或其他安全问题。所以明确安全测试思路是很重要的!

也就是说如果一个目标上面既没有网站也灭有APP那么该怎么去操作他呢,这时候就需要去判定他有没有其他服务,比如说他是邮件服务器,或者上面是游戏的服务器等等,只要它上面有服务,都可以称为安全测试的目标,只是说找漏洞的方向就改变了

加密算法

前言:

在渗透测试中,常见的密码等敏感信息会采用加密处理,其中作为安全测试人员必须要了解常见的加密方式,才能为后续的安全测试做好准备,本次课程将讲解各种加密编码等知识,便于后期的学习和发展。

较为常用的加密解密工具

 

常见加密编码等算法解析

MD5,SHA,ASC,进制,时间戳,URL,BASE64,Unescape,AES,DES等

MD5加密

MD5加密是最常见,也是碰上最多的一种加密方式

这里分为两种,一个是MD5,一个是16位MD5,16位MD5是加密之后是16位的一个长度

 

例:

如果是MD5加密123456(显示的结果是32位的):

 如果是15位MD5加密123456

 

在这里它写的很清楚,MD5和16位MD5都是不可逆的,也就是说不可以逆向解密,网上的MD5解密不是直接从密文反解到明文,而是利用枚举的方来比对与结果是否匹配

一般MD5和16位的MD5的密文都是1-9得数字和26位小写英文字母随机组合而成的

SHA加密

我们可以看到他分有很多种

 可以看到后面数字选得越大,他的长度就越长,但其实这几种都是SHA得加密方式,只是选的不同说加密得长度不同,但是每一种加密得长度都是固定的,他的加密得方式和MD5是一样得都是由1-9得数字和26位小写英文字母随机组合而成,解密也和MD5一样

 

 

 时间戳

一般就是网站或者是服务器,脚本语言里面经常会使用的一种东西,就是计算机时间和一般在程序里面看时间一般就会采用时间戳

 

URL

URL就是我们访问网站得时候得一个地址信息

我们在访问地址得时候,凡是出现%开始后面加上0-9和a-z的这个组合,然后是两位的时候代表是URL编码,注意有时候我们看到%开头的步一营是一次加密有可能是二次加密或者多次加密。但浏览器只会加密一次,而这种多次加密一般实在关键字绕过会涉及到这种东西

 

BASE64编码

BASE64编码也是我们可以经常碰到的一种加密方式,从下图可以看出来他是我们写得越多加密的就越长,它的特点就是是由0-9和a到z得大小写字母随机组合而成得,它这里是区分大小写的,明文越长密文也就也长,经常惠子啊字符串后面出现两个等于号或者一个等于号或者(少)没有等于号,一般用在于代码上编码,为了代码得安全性,也可以对密码进行编码,或者一些参数值进行编码

 

 

 

Unescape编码

这个编码URL有点类似

 这个编码得特点是也是从%开始加上u加上四位的数字,每一位就对应一个东西

 也就是说它编码的每一位(以%号开头算起的到下一个%号结尾)对应明文的两个位

 可以看看到单数的时候前面是两个0,双数的时候是四个0

 

 

AES加密

可以看到他有密码和偏移量,也就是说它的解密难度会更大

 可以看到他的这个加密和BASE64的有点相似,因为他的这个输出是BASE64的这个转换也就是说他除了密文还进行了BASE64的编码

 这个是它AES的值,所以在碰到BASE64的编码的时候如果解码之后还是乱码可能是AES加密,同样的如果想要对AES解密的话,需要的条件是填充方式,数据块,密码,偏移量,其中密码的偏移量是一定要知道的

 还有一个十六进制的

 

DES加密

DES也有点类似于BASE64,他是明文越长,密文也就越长

 在DES加密时有时候会出现+,而AES加密时有时候会出现/

 

常见加密形式算法解析

直接加密,带salt,带密码,带偏移,带位数,带模式,带干扰,自定义组合等

常见解密方式(针对)

枚举,自定义逆向算法,可逆向

了解常规加密算法的特性

长度位数,字符规律,代码分析,搜索获取等

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐