大厂超全安全测试--关于安全测试的分类及如何测试

安全测试(总结)

1.jsonNP劫持

(其实json劫持和jsonNP 劫持属于CSRF跨站请求伪造)的攻击范畴,解决方法和CSRF一样

定义:构造带有jsonp接口的恶意页面发给用户点击,从而将用户的敏感信息通过jsonp接口传输到攻击者服务器

json语法规则:数据在名称/值对中、数据由逗号分隔、花括号保存对象、方括号保存数据组

JSONP : JSON with Padding•是基于 JSON 格式的为解决跨域请求资源而产生的解决方案,由于同源策略,JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对领象,但也在一定程度上限制了一些前端功能的实现,一般来说位于 server1example.com 的网页无法与不是 server1.example.com 的服务器沟通,而 HTML的sscript元素是一个例外。利用<script>元素的这个开放策略,网页可以得到从其他来源动态产生的 JSON资料,而这种模式就是所谓的JSONP

测试步骤:对返回值为json、jsonp为接口是否存在敏感信息;看是否存在劫持漏洞:检查是否存在有效token;无token,是否对referer进行校验,设置referer为空或者baidu.com,看是否返回数据

1.对所有返回值为json/jsonp的接口进行检查,如果不存在敏感信息則可以不用关心该风险
2.如果存在敏感信息,且为同域json,检查头部是否有while(1),如果有则不存在漏洞,否则进入第3步。
3.检查是否存在token, 无token进入第5步,否則进入第4步。
4. token设置为空进行重放,检查是否能够成功执行,如果执行成功則存在漏洞。
5. 使用空referer、该站城名1baidu.com作为referer,检测是否存在referer校验机制,如也不存在,則说明存在漏洞。

防御:敏感数据尽量不要操作JSONP跨域传输;检查referer,白名单

测试目的:测试返回内容为json/jsonNP 的接口,查看是否存在敏感信息,是否进行了json劫持防御(token、referer等)json劫持的目的主要是用于获取敏感信息,如没有,则不处置

2、SQL注入

定义:Web系统的代码中,经常会出现未对用户输入数据的合法性进行验证的情况,这样让恶意用户有机可乘,用户可以提交数据库语句)片段,根据程序返回的结果 ,甚至是异常信息来获得数据库信息等有用数据,这被称作SQL注入。

欺骗服务器执行恶意的SQL命令以到达对数想库的数据进行猜解、查询、规除、添加,如果应用程序使用权限较高的数据库用户连接数据库,那么通过SQL注入攻击很可能就直接得到系统权限,可以通过一步步的猜解或者联合查询就得到管理员的用户名和密码。
比如在一个登录界面,要求输入用戶名和密码:
可以这样途入实现免帐号登录:用户名:or1=1密码:
点登陆如若没有做特殊处理那么这个非法用户就很得意的登姑进去了 ,SELECT * FROM user table WHERE username=" or 1 =1  -and password="-为注释符

以下说明发现此现此漏洞的几种特特征输入

1.输入url参致中加单引号‘

比如http//:www.test com/testphp?id=12这个urL后加上单引号’,而后台逻辑在获取到url参数id时,直接拼装sql语句并执行,此时会号致sql语句出现这种情况:selecta where id =12’, sql执行时会发生错误,若代码中未对异常页面另加处理,很可能用户就会获知数据库类型等信息。

2.输入中增加 and 1 =1或 and1=2

如上例中的url,id参数输入id=12 and 1 =1 或者id= 12 and 1 =2
这是常见的2=1 1=2的测试方法,如果程序不可以进行SQL注入,对于一 个整型参数,这两类输入一股都会有程序定义的错误提示或者类型转换错误提示,或直接跳转到错误的url项面,若可以进行SQL注入,1=1输入与正场输入id=12的显示应无差异,而1=2可能会导致提示无记录,页面显示为空的情况。

3.尝话大小写不同的输入,尝试特殊字符对应ASCII码

有些程序中会过滤select等关键词,但是 记区分大小写,此时可以用selecT等尝法进行注入。或者尝试ASCII码来绕过程序中特殊字符的过滤

测试步骤:(SQL注入最经典最初的万能密码 OR ''=' ('or'a'='a) :

1、观察参数的值value是否为数字型。如果是数字型进行数字型测试,否则跳到第4步进行字符型测试(例如如果出现a那说明是字符型,如果出现2则将其当做数字型测试)
2、将被测参数后加上测试语句 "and 1=1“ ,即:地址栏中填入
"http://ww.exmaple.com/page.xx?name=value and 1=1〞 ,如果返回正确页面则进行下一步操作,杏则跳到第4步。
3、将被测参数后加上测试语句“and 1=2”(这里以第n个参数为例),其他爹数保持不变,即:地址栏中填入 "http://www.exmaple.com/page.xxx? name=value and 1=2”,如果返回正确页面则进行下一步操作,否则该参数存在注入漏洞,完成测试
4、将被测参数后加上测试语句 “ and '1' =' 1 ”,即:地址栏中填入
" http://wwww.exmaple.com/page.xx? name=value' and '1’ =’ 1 〞,如果返回正确页面则进行下一步操作,否则该经数存在注入漏洞,完成测试
5、将被测参数后加上测试语句 “ and “1' =’ 2 〞,即:地址栏中填入
"http://wwwexmaple.com/page xx? name=value’ and '1’ =’2 ”,如果返回正确页面则不存在漏洞,否则该参数存在汪入漏洞,完成测试

6.工具测试:测试时间型注入

显示SQL注入攻击:一般认为就是在url中添加非法的SQL注入语句来攻击的行为。由于web程序的语言不同和用的数据库不同,采用的注入语句也不同

隐式注入:http header注入:是不能在URL后添加非法的SQL语句根据页面的反应来进行注入,一般可以分为cookies注入、表单注入、http header注入

cookie注入:由于cookies是存放在客户端的验证用户数据,当服务器接受到cookies,并且没有经过任何过滤措施,往往会使攻击者在客户端修改为含有非法SQL语句的cookies,就形成了注入

表单注入:表单时用户直接向web程序输入的地方,经常在用户表单输入后会有对数据库的操作,由于表单的SQL注入不像显示注入那样直接,所以经常回忽视

用户的敏感信息不应该存在cookies中,登录状态下,cookies中涉及的登录信息等敏感字段,使用http only属性可以降低XSS产生后造成的危害。

防范:避免SQL注入的方法,采用过滤、合法性检查、和长度限制等方法,检查变量数据类型和格式,过滤特殊符号

3.权限漏洞

定义:web应用或接口缺乏权限鉴定(原因),攻击者可以获取或操作他人信息(危害)

分类:水平越权(同级别)、垂直越权(不同级别)、未授权访问(未登录用户)

水平越权:权限类型不变,权限ID不变,即同等角色下的用户,不但能够访问自己的私有数据,也能访问他人的私有数据

垂直越权:权限ID不变,权限类型改变,即低权限的角色经过一些途径,获得高权限的能力,就发生了越权访问。

预防:垂直使用账号1无法获取到2的信息

水平:使用账号1的session无法查看或操作2的数据

不要在URL(参数、路径),post数据、cookies等位置设置管理权限标识,而应该在后端通过session判断权限

4.XSS 跨站脚本攻击


定义:web页面缺乏HTML特殊字段的转义或者过滤机制(原因),攻击者可以通过插入恶意JS并执行,从而控制用户浏览器,盗取cookie(利用document.cookie得到cookies)等(危害)

           XSS跨站脚本攻击,是指攻击者往web页面插入恶意html代码,当用户浏览该页时,嵌入web 页面的恶意代码会被执行,从而达到攻击的目的,XSS是目前最为普遍和影响严重的web应用安全漏洞,当应用程序没有对用户提交的内容进行验证和重新编码,直接呈现给网站访问者时,可能会发生XSS攻击。

XSS攻击的过程涉及攻击者、受害者、存在漏洞的网站三方,只有受害者会实际执行攻击者的代码,网站仅仅是发起进攻的载体,一般不会受到影响,XSS可以让攻击者在页面访问者的浏览器中执行脚本(一般为javascript),从而执行获得用户会话的安全信息,插入恶意信息,操纵浏览器,植入病毒等。

分类:反射型(恶意JS在url),存储型(恶意JS在数据库中,访问更广,危害更大),DOM型(恶意JS由网页JS动态创建)

测试步骤:

    1. 在表单中填写或者抓包修改请求中的参数,(以下代码都是对的)

a)<script>alert(1)</script>
b)"alert(1);x='"
c) "> < img src=x οnerrοr=alert(1)>

d)''></scritp> <script>alert(1) <script>< ''
e) <script src= "http://ox.com>
参数值填写上述代码,查看是否弹窗,如果在站点中,显示有该参数值的页面出现弹窗(如存在onmouseover则
需要移动鼠标后触发),则说明存在漏洞,停止测试

C会弹窗并显示1

2.查看源文件,搜索alert(1),检查payload中的引号,尖括号是否经过了转义,如果没有转义,则无论是否弹窗,都表示存在漏洞

3.功能测试时,可以有一些简单的方式测试是否经过正确的特殊字符的处理,常见的JS注入

防御:过滤输入:非字符串或者有固定值时,事先进行类型/值检查

转义输出:进行HTML转义,如转义为&gt

callback参数只允许数字、字母、下划线

长度限制:对输入输出进行过滤

5.CSRF跨站请求伪造

定义:链接的表单提交的所有请求参数都可被预测(原因),攻击者可构造一个自动提交表单的URL,当合法用户在登陆状态的时候,攻击者再诱导用户点击,此时用户在不知道请的情况下执行了攻击者伪造的增删改查请求(危害)CSRF是一种依赖web浏览器,欺骗代理人的攻击,代理人在正常访问页面中包含链接或者脚本时向与代理人保持会话的某个网站发送HTTP请求(即HTTP会话劫持或者session欺骗攻击)

简单来说就是攻击者用你的token,发送恶意请求或者往web页面插入恶意html代码

CSRF一度被认为是跨站脚本攻击XSS,但是CSRF伪造来自用户信任的请求,而XSS攻击者本身是站点内的信任用户。两者的相似之处,两种攻击都是被动攻击,都是利用链接或者页面中的脚本,CSRF常常利用跨站脚本攻击来实现(如XSS添加管理员)

CSRF攻击原理及过程:

1.用户C打开浏览器,访问受信任的网站A,输入用户名和密码请求登录网站A

2.在用户信息通过验证后,网站A产生cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A

3.用户未退出网站A之前,在同一浏览器中,打开一个tab页访问网站B

4.网站B接收到用户请求后,返回一些攻击性代码,并发出一个请求要求访问第三方站点A

5.浏览器在接收到这些攻击性代码后,根据网站B的请求,在用户不知情的情况下携带cookie信息,向网站A发出请求,网站A并不知道该请求是由B发起的,所以会根据用户C的cookie信息以及C的权限处理该请求,导致来自网站B的恶意代码被执行。

测试步骤:

1.对所有增删改查操作的URL进行检查,是否在post请求参数中存在token,若无则无风险,若是存在token,则进一步判断token 设置为空或者任意值时是否执行成功,成功则存在风险。

2.用burpsuit自带的生成CSRF poc,发送给被攻击者尝试是否触发

3.检测CSRF漏洞最简单的方法就是抓一个正常请求的数据包,去掉referer字段后再重新提交,如果该提交还有效,那么可以判定存在风险

防御:对所有增删改查操作,在http head 或者请求参数中加入CSRF token,并在服务端验证

1.利用http referer 检查访问的来路是否可信

2.提交每一个表单或者重要表单使用随机验证码

3.在重要操作中使用一次性密码使CSRF攻击者无法再伪造和猜测

4.在客户端安装防止会话攻击的软件

5.防止跨站脚本攻击

测试目的:增删改查操作是否进行了CSRF防御,防止攻击者诱导受害者进行数据敏感操作(修改个人资料),获取敏感信息

CSRF与XSS区别:

CSRF:无法获取受害者的cookie,无法看到cookie,只是利用受害者是被服务器信任的(靠验证cookie),而给服务器发送请求

XSS:利用cookie只是XSS的一种体现,XSS还可以篡改网页,URL跳转等,跨站脚本,脚本可以做什么,XSS就可以做什么。XSS就利用cookie上,是获取受害者的cookie,得到服务器的信任后进行攻击。

6.CORS跨站资源共享

定义:跨源资源共享(CORS,或通俗地译为跨域资源共享)是一种基于 HTTP 头的机制,该机制通过允许服务器标示除了它自己以外的其他(域、协议或端口),使得浏览器允许这些源访问加载自己的资源。跨源资源共享还通过一种机制来检查服务器是否会允许要发送的真实请求,该机制通过浏览器发起一个到服务器托管的跨源资源的“预检”请求。在预检中,浏览器发送的头中标示有 HTTP 方法和真实请求中会用到的头

测试步骤:

 1.curl访问网站  curl https://www.junsec.com -H "Origin: https://test.com" -I,检查返回包的 Access-Control-Allow-Origin 字段是否为https://test.com

    2.burpsuite发送请求包,查看返回包,Access-Control-Allow-Origin的值,当其为null、意味着信任任何域

7.登录安全


定义:登录没有做好安全控制(原因),攻击者暴力破解,账号被盗(危害)

1.在注册页面进行注册,输入简单口令,检查前端是否会提示密码强度不够

2.使用burpSuite进行拦截,修改密码为简单口令,检查是否能够成功提交,成功提交就存在风险

登录封禁策略:

1.向开发询问登陆失败策略,其中封禁手段包括:封禁用户名,IP等,封禁依据包括:请求频率、错误次数等

2.打开登陆页面,输入正确的用户名,输入错误密码看封禁策略是否执行

3.尝试随机输入用户名和密码(均不正确)查看是否生效

4.每隔N次输入错误的,然后输入一次正确的,查看错误次数是否被重置

5.高频率请求登录操作,查看封禁是否生效

【密码找回】测试目的:测试密码找回流程是否可以被绕过,从而修改其他用户密码

【密码找回】测试方法:

1.进入密码找回页面,检查是否存在短信电话邮箱等二次验证,没有则存在风险

2.输入错误的手机号,其他正确,查看是不是能够收到密码找回验证

3.验证凭证为链接,检查链接中的参数是否可以被解密或者使用了弱token,是否存在有效期

4.检查找回密码的凭证是否会出现在html文本,url参数中

【会话固定】测试目的:测试登陆成功后,会话标识是否发生变更,如果没有变更,攻击者通过一些手段为受害者提供一个会话标识,待受害者成功登录后,攻击者也可以获得相应的权限。

【会话固定】测试方法:

1.访问未登录网站的页面,记录当前cookies中的会话标识

2.执行成功登录,记录登陆后的会话标识

3.对比登录前后的2个会话标识,如果相同,存在漏洞。

【会话固定】防御策略:用户登录时生成新的session ID,如果攻击者使用的会话标识符不是有效的,那这种方式会有效,因为不是有效的会话标识符,将会要求用户重新登录

大部分会话劫持的方法对会话固定攻击同样有效,如设置Httponly,关闭透明化session ID ,user-Agent验证,Token校验等

【账号体系】测试步骤:

1.查看是否使用了统一的账号体系或者第三方的

2.独立的账号体系,测试密码的传输方式是不是https,密码是否加密传输

3.向开发咨询密码的加密方式,是否过于简单(未使用盐,仅使用Md5,base64或者自定义的加密方式)

【密码强度】:强口令

【失败提示】:不要明确提示

【验证码】:短信通道验证码接口未作次数限制,短线轰炸,是不是有验证码,有没有错误尝试次数,验证码的重用,空值

【测试用例设计点】

1.用户密码后台存储是否加密

2.用户密码在网络传输过程中是否加密

3.密码是否具有有效期,有效期到后是否提示

4.不登录的情况下,直接输入登录后的地址看是否重定向到用户登录界面

5.密码输入框输入的密码在页面源码模式下是否可被查看

6.输入框输入SQL注入的字段或者XSS攻击的脚本

7.多次登录失败下,系统是否会阻止

8.同一用户不同浏览器登录,验证是否有互斥性

9.是否可以使用登录的api发送登录请求,绕开验证码校验

10.截取到的token信息,是否可以绕开登录直接在其他终端使用,token有效期

8.文件传输安全

测试方法:

1.上传任意后缀文件,检查是否可以上传成功

2.上传任意文件,使用BurpSuite拦截,修改Content-type为image,检查是否可上传成功

3.上传test.jpg,使用BurpSuite拦截,修改文件名为test.asp,检查文件是否可以上传成功

4.如为图片,咨询开发是否进行了resize或者水印处理

测试步骤:

见文件传输漏洞页

关于使用appscan进行安全测试步骤:如何从0到1做一次完整的安全测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/81056.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jtti:Ubuntu下如何迁移Thunderbird邮件

要迁移Thunderbird邮件&#xff0c;您需要复制和转移Thunderbird的邮件文件和配置文件。以下是一般的迁移步骤&#xff1a; 注意&#xff1a;在进行迁移之前&#xff0c;请确保Thunderbird已经安装在目标Ubuntu系统上。 备份旧系统的Thunderbird数据&#xff1a; 在源系统上打开…

MySQL——主从复制

简介 在实际的生产中&#xff0c;为了解决Mysql的单点故障已经提高MySQL的整体服务性能&#xff0c;一般都会采用「主从复制」。 主从复制开始前有个前提条件&#xff1a;两边的数据要一样&#xff0c;主必须开启二进制日志 dump thread 线程 基于位置点从是否需要开启二进…

【面试刷题】——什么是面向过程 什么是面向对象

"面向过程"和"面向对象"是两种不同的编程范式&#xff0c;它们描述了程序的设计和组织方式。 面向过程编程&#xff08;Procedural Programming&#xff09;&#xff1a; 面向过程编程是一种以过程或函数为中心的编程范式。在面向过程编程中&#xff0c;…

计算机组成原理——基础入门总结(一)

本帖更新一些关于计算机组成原理的重点内容。由于博主考研时并不会考这门课&#xff0c;但是考虑到操作系统中又很多重要晦涩的概念涉及很多诸如内存、存储器、磁盘、cpu乃至各种寄存器的知识&#xff0c;此处挑选一些核心的内容总结复盘一遍——实现声明&#xff1a;本帖的内容…

Python统计pdf中英文单词的个数

之前的文章提供了批量识别pdf中英文的方法,详见【python爬虫】批量识别pdf中的英文,自动翻译成中文上。以及自动pdf英文转中文文档,详见【python爬虫】批量识别pdf中的英文,自动翻译成中文下。    本文实现python统计pdf中英文字符的个数。 文章目录 一、要统计字符的pdf…

第16篇ESP32 platformio_arduino框架 wifi联网_连接WiFi热点并连接tcp server收发数据进行通讯

第1篇:Arduino与ESP32开发板的安装方法 第2篇:ESP32 helloword第一个程序示范点亮板载LED 第3篇:vscode搭建esp32 arduino开发环境 第4篇:vscodeplatformio搭建esp32 arduino开发环境 ​​​​​​第5篇:doit_esp32_devkit_v1使用pmw呼吸灯实验 第6篇:ESP32连接无源喇叭播…

许可分析 license分析 第十一章

许可分析是指对软件许可证进行详细的分析和评估&#xff0c;以了解组织内部对软件许可的需求和使用情况。通过许可分析&#xff0c;可以帮助组织更好地管理和优化软件许可证的使用。以下是一些可能的许可分析方法和步骤&#xff1a; 软件许可证监管合规性&#xff1a;严格遵守软…

Linux 文件创建、查看

touch、cat、more命令 ①touch命令——创建文件 ②cat命令——查看文件内容全部显示 这是txt.txt文件内容 使用cat命令查看 ③more命令——查看文件内容支持翻页 在查看的过程中&#xff0c;通过空格翻页&#xff0c;通过q退出查看

MySql(随记)

一条MySql执行过程 首先Mysql的架构分为两层&#xff0c;Server层和存储引擎层。 Server层&#xff1a;MySql大多数核心功能&#xff0c;主要包括&#xff0c;连接器&#xff0c;查询缓存&#xff0c;解释器&#xff0c;预处理器&#xff0c;优化器&#xff0c;执行器等 存储引…

C语言练习题解析(2)

&#x1f493;博客主页&#xff1a;江池俊的博客⏩收录专栏&#xff1a;C语言刷题专栏&#x1f449;专栏推荐&#xff1a;✅C语言初阶之路 ✅C语言进阶之路&#x1f4bb;代码仓库&#xff1a;江池俊的代码仓库&#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐ 文…

Anaconda bug

报错如下&#xff1a; DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): repo.anaconda.com:443 DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): repo.anaconda.com:443 DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1):…

蓝桥杯2023年第十四届省赛真题-更小的数--题解

目录 蓝桥杯2023年第十四届省赛真题-更小的数 题目描述 输入格式 输出格式 样例输入 样例输出 提示 【思路解析】 【代码实现】 蓝桥杯2023年第十四届省赛真题-更小的数 时间限制: 3s 内存限制: 320MB 提交: 895 解决: 303 题目描述 小蓝有一个长度均为 n 且仅由数字…

C2基础设施威胁情报对抗策略

威胁情报是指在信息安全和安全防御领域&#xff0c;收集、分析和解释与潜在威胁相关的信息&#xff0c;以便预先发现并评估可能对组织资产造成损害的潜在威胁&#xff0c;是一种多维度、综合性的方法&#xff0c;其通过信息的收集、分析和研判&#xff0c;帮助组织了解可能对其…

准备篇(二)Python 教程

Part 1 Python 基础语法区分输入与输出注释文本列表if 语句for 语句range() 函数走向编程的第一个例子Part 2 函数 和 数据结构函数数据结构del 语句列表详解元组集合字典循环的技巧Part 3 输入与输出读写文件打开文件 open()读文件写文件

C++---继承

继承 前言继承的概念及定义继承的概念继承定义继承关系和访问限定符 基类和派生类对象赋值转换继承中的作用域派生类的默认成员函数继承与友元继承与静态成员**多重继承**多继承下的类作用域菱形继承虚继承使用虚基类 支持向基类的常规类型转换 前言 在需要写Father类和Mother…

征战开发板从无到有(三)

接上一篇&#xff0c;翘首已盼的PCB板子做好了&#xff0c;管脚约束信息都在PCB板上体现出来了&#xff0c;很满意&#xff0c;会不会成为爆款呢&#xff0c;嘿嘿&#xff0c;来&#xff0c;先看看PCB裸板美图 由于征战开发板电路功能兼容小梅哥ACX720&#xff0c;大家可以直…

【MySQL】 MySQL数据库基础

文章目录 &#x1f431;‍&#x1f453;数据库的操作&#x1f4cc;显示当前的数据库&#x1f4cc;创建数据库&#x1f388;语法&#xff1a;&#x1f388;语法说明&#x1f388;示例&#xff1a; &#x1f334;使用数据库&#x1f38b;删除数据库&#x1f431;‍&#x1f3cd;语…

Stable DIffusion 炫酷应用 | AI嵌入艺术字+光影光效

目录 1 生成AI艺术字基本流程 1.1 生成黑白图 1.2 启用ControlNet 参数设置 1.3 选择大模型 写提示词 2 不同效果组合 2.1 更改提示词 2.2 更改ControlNet 2.2.1 更改模型或者预处理器 2.2.2 更改参数 3. 其他应用 3.1 AI光影字 本节需要用到ControlNet&#xff0c;可…

Web 3.0 发展到什么水平了?

最初&#xff0c;有互联网&#xff1a;电线和服务器的物理基础设施&#xff0c;让计算机和它们前面的人相互交谈。美国政府的阿帕网在1969年发出了第一条消息&#xff0c;但我们今天所知道的网络直到1991年才出现&#xff0c;当时HTML和URL使用户可以在静态页面之间导航。将此视…

SpringBoot 使用异步方法

SpringBoot 使用异步方法 在pom文件引入相关依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframe…