暴力破解(Burte Force)

认证安全策略:

1.是否要求用户设置复杂的密码

2.是否每次认证都使用安全的验证码

3.是否对登陆行为进行判断和限制(如:连续5次错误登录,进行账号锁定或IP地址锁定等)

4.是否采用双因素认证

题目

1.基于表单的暴力破解

这个题很简单,我随手输入了admin,123456就成功了。

2.验证码绕过(on server)

这里分了两种,服务端的绕过与客户端的绕过方式不同。

这儿发现验证码是复用的没有自动刷新,导致抓包后可以复用。

直接用第一次输入的正确验证码即可暴力破解:

最后依然成功判断是admin/123456

3.验证码绕过(on client)

抓包就能看出和on server的区别,这个on client完全是前端校验,输入错了的话直接就弹窗验证码错误

而这个时候根本没抓到包。

所以同server方式相同爆破,输入正确然后抓包,就不会再校验验证码了,依然是123456密码。

4.token防爆破?

这个可以爆破的原因就在下图:

image-20201003185724843

所以依然可以送入bp的intruder模块中同时选中两个。然后使用正则表达式匹配到响应包中的token进行自动填充。

先在option中的

image-20201003191024549

加入匹配响应包token的正则。

然后加入集束炸弹的第二个就会自动填充响应包的token了。

image-20201003191004578

最后点击爆破即可。

XSS就不玩了。已经很熟练了。

CSRF

这个东西虽然经常见,但从来没挖到过。。

csrf(跨站请求伪造),攻击场景下攻击者会伪造一个请求(一般是个链接),然后欺骗目标用户进行点击,用户

一旦点击了这个请求,整改攻击就完成了。

真实场景:

攻击者需要修改小朋友在某购物网站上填写的会员地址。

首先了解下正常的操作:

登录-》修改会员信息-》提交请求-》修改成功。

因而如果攻击者想要修改小朋友的信息,他需要

1.登录权限,2修改个人信息的请求

因而攻击者需要自己先注册并登录一个账号然后发起这个修改请求

例如:http://www.xxx.com/edit.php?email=xiaohei@88.com&Change=Change

然后把这个链接发给小朋友,小朋友点击了就会被修改为攻击者的邮箱。

然而事实利用并不是这样,首先csrf要想利用成功需要如下几个点:

1.www.xxx.com这个网站在用户修改个人的信息时没有过多的校验,导致这个请求容易被伪造;
—因此,我们判断一个网站是否存在CSRF漏洞,其实就是判断其对关键信息(比如密码等敏感信息)的操作(增删改)是否容易被伪造。
2.小白点击了小黑发给的链接,并且这个时候小白刚好登录在购物网上;
—如果小白安全意识高,不点击不明链接,则攻击不会成功,又或者即使小白点击了链接,但小白此时并没有登录购物网站,也不会成功。
—因此,要成功实施一次CSRF攻击,需要“天时,地利,人和”的条件。
当然,如果小黑事先在xxx网的首页如果发现了一个XSS漏洞,则小黑可能会这样做: 欺骗小白访问埋伏了XSS脚本(盗取cookie的脚本)的页面,小白中招,小黑拿到小白的cookie,然后小黑顺利登录到小白的后台,小黑自己修改小白的相关信息。
—所以跟上面比一下,就可以看出CSRF与XSS的区别:CSRF是借用户的权限完成攻击,攻击者并没有拿到用户的权限,而XSS是直接盗取到了用户的权限,然后实施破坏。

如何防止CSRF攻击呢:

–对敏感信息的操作增加安全的token;
–对敏感信息的操作增加安全的验证码;
–对敏感信息的操作实施安全的逻辑流程,比如修改密码时,需要先校验旧密码等。

题目。。全是登录的CSRF没懂用途。。

Unsafe Fileupload

题目很简单

client check代表客户端也就是前端校验,抓包改后缀直接上传。

然后是MIME type代表检查的image/jepg直接上传图片然后改后缀和内容即可上传。

最后一个是getimagesize()

这个函数功能会对目标文件的16进制去进行一个读取,去读取头几个字符串是不是符合图片的要求的。

这个也好绕过,做一个图片马即可。。

可以直接用windows的copy命令做:

copy /b test.png + yijuhua.php cccc.png 

Unsafe Filedownload

文件下载漏洞,又叫做任意文件下载。

当下载链接类似path=./image/1.png

此时允许进行路径穿越时候即可造成任意文件下载。

例如构造

download.php?path=../../../../../../../../../etc/passwd

即可下载到/etc/passwd文件

敏感信息泄露

pikachu里面的题目大致意思是,get传入的用户名和密码导致密码容易被泄露。

其实很多情况跟这个类似,有些程序员把密钥,session,配置信息写到js或者前端代码里也大有人在。

还有一些敏感身份信息传输时候直接显示在回显包中用json显示的也属于这类。

SSRF

ssrf(服务器端请求伪造)

漏洞产生的原因是服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制。

导致攻击者可以传入任意地址来让后端服务器对其发起请求,并返回对该目标地址请求的数据

数据流:攻击者-》服务器-》目标地址

根据后台使用的函数的不同,对应的影响和利用方法又有不一样。

PHP中下面函数的使用不当会导致SSRF:
file_get_contents()
fsockopen()
curl_exec()

如果一定要通过后台服务器远程去对用户指定(“或者预埋在前端的请求”)的地址进行资源请求,则请做好目标地址的过滤。

SQL-Inject

为啥这个最后做?

因为它又简单又困难。

数字型注入,这个不做了。

字符型:1’ union select 1,database()– +

搜索型注入:

搜索使用%模糊查询。

例如我们输入a%:

image-20201004100750136

就会发现存在注入。

接下来让它报个错:a%’

image-20201004100933305

可以看到是单引号闭合的,那就很简单了:

payload:

a%' order by 4-- +

image-20201004101038591

然后换成3:

image-20201004101054569

说明数目3,还是老规矩查到数据库就停:

b%' union select 1,2,database()-- +

可以看到在第三个字段的显示位出现了数据库名:

image-20201004101157621

然后是xx型注入:

直接输入a’报错:

image-20201004101411214

那么闭合就很简单了:

a’) or 1=1– +

这里为什么用的是单引号闭合而不是双引号呢?

因为我们仔细看””是成对的代表没有被闭合。有可能只是用来保护字符串的。

而单引号少了一个说明被闭合了。所以使用单引号:

image-20201004101657427

其他的同理。

“delete注入”

image-20201004103715151

加单引号直接报错。。就不做了。

盲注不做了也很简单。