<>Pikachu漏洞练习平台

<>暴力破解

<>概述

“暴力破解”是一攻击具手段,在web攻击中,一般会使用这种手段对应用系统的认证信息进行获取。
其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。 为了提高效率,暴力破解一般会使用带有字典的工具来进行自动化操作。
理论上来说,大多数系统都是可以被暴力破解的,只要攻击者有足够强大的计算能力和时间,所以断定一个系统是否存在暴力破解漏洞,其条件也不是绝对的。
我们说一个web应用系统存在暴力破解漏洞,一般是指该web应用系统没有采用或者采用了比较弱的认证安全策略,导致其被暴力破解的“可能性”变的比较高。
这里的认证安全策略, 包括:
1.是否要求用户设置复杂的密码;
2.是否每次认证都使用安全的验证码(想想你买火车票时输的验证码~)或者手机otp;
3.是否对尝试登录的行为进行判断和限制(如:连续5次错误登录,进行账号锁定或IP地址锁定等);
4.是否采用了双因素认证;


<>基于表单的暴力破解

<>方法:

1.使用burp suite抓包,最下面一行即可看出我们输入的用户名和密码;

2.将拦截到的访问请求发送到Intruder模块,可以看到Sniper、Battering ram、Pitchfork、Cluster bomb
四种攻击模式。
Sniper(狙击手):设置一个payload,先将第一个第一个变量使用字典进行测试,然后再将第二个变量使用字典进行测试;

Battering ram(冲撞车):设置一个payload,所有的变量一起用字典内容替换,然后一起尝试;

Pitchfork(草叉型):每个变量设置一个payload,分别使用对应的对变量进行同时替换;

Cluster bomb(焦束炸弹):为每个变量设置一个payload,分别使用字典内容组合对变量进行替换。
3.通过攻击,我们发现admin 123456这个组合响应后的结果长度与其他不同,即这个组合为正确的用户名和密码。

<>验证码绕过(on client——客户端)

<>验证码一般做什么?

1.登录暴力破解;
2.防止机器恶意注册。

<>验证码的认证流程:

1.客户端request登陆页面,后台生成验证码:
①后台使用算法生成图片,并将图片response给客户端;
②同时将算法生成的值全局赋值到SESSION(当访问服务器某个网页的时候,会在服务器 端的内存里开辟一块内存,这块内存就叫做SESSION)中。
2.校验验证码:
①客户端将认证信息和验证码一同提交;
②后台将提交的验证码与SESSION里面的进行比较;
3.客户端重新刷新页面,再次生成新的验证码:
①验证码算法中一般包含随机函数,所以每次刷新都会改变。

<>on client(只在前端处理,未在后端验证)常见问题:

1.使用前端js来实现验证码;
2.将验证码在cookie(指某些网站为了辨别用户身份、进行 Session
跟踪而存储在用户本地终端上的数据,而这些数据通常会经过加密处理)中泄露,容易获取;
3,将验证码在前端代码泄露,容易获取。

<>方法:

直接使用上述“基于表单的暴力破解”的方法——使用burp suite抓包,通过攻击输入正确的用户名和密码即可成功验证码。

<>验证码绕过(on server——服务端)

<>on server常见问题:

1.验证码在后台不过期,导致可以长期使用;
2.验证码校验不严格,逻辑出现问题;
3.验证码设计的太过简单和有规律,容易被猜解。

<>方法:

1.使用burp suite抓包,将拦截到的请求发送到repeater,使用正确的验证码,随便输入用户名和密码,点击“go”,查看response;
2.在repeater页面重新输入一组用户名和密码,同样的步骤,查看response;
3.若两次执行的结果显示相同“用户名或密码不存在”,说明验证码在后台不过期,即可采用上一题的方法直接暴力破解。

<>解决验证码后台不过期的方法:

1.在后台源码showcode.php文件夹中改变SESSION的过期时间。
2.或者在bf_server.php文件夹中添加源码使验证码用完即销毁,达到一次一用的目的。

<>token防爆破

<>防暴力破解的方法:

1.设计安全的验证码(安全的流程+复杂又可用的图形);
2.对认证错误的提交进行计数并给出限制,比如连续五次密码错误,锁定两小时;
3.必要的情况下,使用双因素验证(三种不同类型的证据,可以证明一个人的身份:秘密信息、个人物品、生理信息。双因素认证就是指,通过认证同时需要两
个因素的证据。银行卡就是最常见的双因素认证。用户必须同时提供银行卡和密码,才能取到现金)。

<>解题方法:

1.按F12打开开发者工具,点击“查看器”,找到源码中的token(点开页面,后台发送请求,即可在后台生成一个token);

2.输入用户名和密码后,后台同时验证用户名、密码以及token,每登录一次,token就会变一次。
3.攻击者在每次提交前,即可获取一个正确的token存入字典中。

<>弊端:

token值输出在前端源码中,容易被获取,因此也就失去了防暴力破解的意义。

<>Unsafe Fileuploads

<>概述

文件上传功能在web应用系统很常见,比如很多网站注册的时候需要上传头像、上传附件等等。当用户点击上传按钮后,后台会对上传的文件进行判断
比如是否是指定的类型、后缀名、大小等等,然后将其按照设计的格式进行重命名后存储在指定的目录。
如果说后台对上传的文件没有进行任何的安全判断或者判断条件不够严谨,则攻击着可能会上传一些恶意的文件,比如一句话木马,从而导致后台服务器被webshell【
WebShell 是一个网站的后门,也是一个命令解释器,不过是以Web 方式(HTTP 协议)通信(传递命令消息),继承了Web 用户的权限。WebShell
本质上是服务器端可运行的脚本文件,后缀名为.php/.asp/.aspx/.jsp 等,也就是说WebShell 接受来自于Web
用的命令,然后在服务器端执行。它的分类包括大马和小马,需要配合中国菜刀或中国蚁剑使用】,从而通过对该恶意文件的访问来控制整个web后台。
所以,在设计文件上传功能时,一定要对传进来的文件进行严格的安全考虑。比如:
–验证文件类型、后缀名、大小;
–验证文件的上传方式;
–对文件进行一定复杂的重命名;
–不要暴露文件上传后的路径;
–等等…

<>文件上传漏洞测试流程

1.对文件上传的地方按照要求上传文件,查看返回结果(路径、提示等);
2.尝试上传不同类型的“恶意”文件,比如xx.php文件,分析结果;
3.查看html源码,看是否通过js在前端做了上传限制,可以绕过;
4.尝试使用不同方式进行绕过:黑白名单绕过/MIME类型绕过/目录0x00截断绕过等;
5.猜测或者结合其他漏洞(比如敏感信息泄露等)得到木马路径,连接测试。

<>client check

<>方法:

1.按F12键打开开发者工具;

2.上传文件是就会调用一次onchange,看上传文件是否符合要求,同时点击右键查看源码。3.该操作属于在前端的操作,很容易绕过,即改变onchange
后面的要求,即可成功上传我们想要上传的文件。

<>MIME type(服务端验证通过)

<>小知识介绍

MIME多用途互联网邮件扩展类型,是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问时,浏览器会自动使用指定应用程序来打开。多用于一些客户端自定义的文件名,以及一些媒体文件打开方式。
每个MIME类型由两部分组成,前面是数据的大类别,例如声音audio,图像image等,后面定义具体的种类。常见的MIME类型,比如:
超文本标记语言文本:.html,.html text/html
普通文本:.txt text/plain
PTF文本:.rtf application/rtf
GIF图形:.gif image/gif
JPEG图形:.ipeg,.jpg image/jpeg

<>方法:

1.分别新建一个.jpg文件和.php文件(新建一个.txt文件,保存一句话木马,比如<?php @eval($_POST['cmd']); ?>
,然后修改文件后缀为.php即可);
2.先上传.jpg文件,用burp抓包,复制符合要求的content type;
3.随后上传.php文件,使用burp抓包,发送到repeater,将符合要求的content type 替换了.php文件中的content type
,点击render一栏,即可发现一句话木马上传成功。

<>getimagesize(php用来判断目标文件是否为图片)

<>思路:

使用xxd(Linux命令之xxd
命令主要用来查看文件对应的十六进制形式,也可以讲文件对应的十六进制形式输出到一个指定的文件。使用此命令所支持的特有选项,亦可以以二进制的形式查看文件)查看十六进制的第一行数据,可发现后缀为
.png的图片前几个字符为8950 4e47,因此可通过前几个字符来判断是否为后缀.png的图片,同时我们可以伪造一张图片,保证十六进制数据的前几个字符为
8950 4e47,在数据中插入一些恶意代码,从而实现getimagesize的绕过。

<>方法(图片木马的制作):

本质:
在图片的数据后面加入一句话木马;由于php判断目标文件是否为图片时时判断图片对应的十六进制形式的第一行数据,所以将木马加在数据的最后面可以不被识别出来。
方法:
在cmd命令行中输入copy/b ai.png+muma.php ccc.png,即可在相对应的文件夹中生成一个ccc.png的图片木马。

<>Over Permission

<>概述

如果使用A用户的权限去操作B用户的数据,A的权限小于B的权限,如果能够成功操作,则称之为越权操作。
越权漏洞形成的原因是后台使用了不合理的权限校验规则导致的。一般越权漏洞容易出现在权限页面(需要登录的页面)增、删、改、查的的地方,当用户对权限页面内的信息进行这些操作时,后台需要对当前用户的权限进行校验,看其是否具备操作的权限,从而给出响应,而如果校验的规则过于简单则容易出现越权漏洞。
因此,在在权限管理中应该遵守:
1.使用最小权限原则对用户进行赋权;
2.使用合理(严格)的权限校验规则;
3.使用后台登录态作为条件进行权限判断,别动不动就瞎用前端传进来的条件;

越权漏洞高于逻辑漏洞(逻辑漏洞就是指攻击者利用业务的设计缺陷,获取敏感信息或破坏业务的完整性。一般出现在密码修改、越权访问、密码找回、交易支付金额用户登录等功能),是由于权限校验的逻辑不够严谨导致的。每个应用系统其用户对应的权限是根据其用户功能划分的,而每个企业的业务又都是不一样的。因此越权漏洞很难通过扫描工具发现出来,往往需要手动进行测试。

<>水平越权(平行越权)

<>概述

A用户和B用户属于同一级别用户,但各自不能操作对方个人信息,A用户如果越权操作B用户的个人信息的情况称为平行越权操作。

<>方法

在当前已登陆的lucy的个人信息页面,修改url里面的username
,改为lili的用户名,如果可以登陆成功查看lili的信息,说明这是一种越权行为,我们需要在源代码中添加一段判断的get请求是否来自于lucy即当前登录的用户的代码,来拒绝越权的尝试。

<>垂直越权

<>概述

权限较低的用户去执行高权限用户的操作。

<>方法

用普通用户的身份进行超级管理员的操作,如果操作成功,即可说明后台存在垂直越权的漏洞。通过burp抓包拦截超级管理员登陆的数据包,然后将其登录态的cookie
代替普通用户登录态中的数据包中的cookie
,可以操作成功,即进行了一次垂直越权查看后台源码可发现,源码中只有判断超级管理员是否登录的代码,应该添加一段判断当前用户登陆的权限,判断用户级别是否为超级管理员的代码。

技术
©2019-2020 Toolsou All rights reserved,
JVM概述VUE+Canvas 实现桌面弹球消砖块小游戏javascript事件(零基础详解)Pikachu漏洞练习平台明解c/c++程序的内存模型--内存四区python实现vlookup_干货一:怎么在python里面实现vlookupswift 5.0 创建一个获取验证码的按钮,实现倒计时效果首期500亿,成立新部门,腾讯准备做什么?关于蓝桥杯大赛,你应该了解的那些事!解决Selenium ActionChains拖动元素无效