安装pikachu靶场,并复现暴力破解漏洞
环境搭建
windows server 2016+phpstudy 2016
这里默认phpstudy 2016已经配置完毕
pikachu直接再GitHub上下载
1.下载pikachu靶场:
GitHub - zhuifengshaonianhanlu/pikachu: 一个好玩的Web安全-漏洞测试平台
下载好后,是一个zip压缩包
2.导入虚拟机,并解压在phpstudy 2016根目录下:
3.修改配置文件:
phpstudy_2016\WWW\pikachu\inc\config.inc.php
注意!
不是phpstudy_2016\WWW\pikachu\pkxss\inc\config.inc.php
这个文件!
确认连接数据库的账户与密码正确,启动phpstudy 2016
4.进入网页:
会出现这个提示你初始化,然后点击进行初始化就行:
安装完毕:
注意!!!
因为某些原因,我重新在安装时,出现了没有往外蹦红色初始化,反而是出现第一行报错。
解决方法:
错误原因为没有找到这个数据库,一开始以为要手动添加,但是我在查看配置文件时发现,是自动添加这个数据库,不需要手动。
直接进入/pikachu/install.php
这个地方初始化就行。
还会有一些别的报错,但是这种一般都是修改配置文件时,没有按照正规步骤进行修改。
因此就只写这个解决方法了。
通关暴力破解漏洞
启动Burp
博主懒,就直接使用Burp的自带浏览器了
随便输入一个账户与密码,进行猜测
发现错误回显信息为账户或密码错误。
其实在右上角有提示,admin为正确账户。
一些题外话
那么为什么要这么回显错误信息呢?
因为最小化反馈
最小化反馈是指在程序内部处理时,尽量将少的信息反馈到运行界面,即避免给予不可靠用户过多信息,防止不可靠用户据此猜测软件程序的运行处理机制。
举个栗子:
你要登录一个软件或web网页,账户为admin,密码为aaa
在登录时,不小心输入错了账户,但是密码是对的。
此时就会给你返回一个报错的信息,即回显信息为账户或密码错误。
你修改完后,再次输入,但是密码这回输入错误了。
注意,这个漏洞就来了。
他会回显一个错误信息为密码错误。
那么,在根本不知道用户名与密码的情况下,突然出现了这种回显,就说明这个用户名我们已经猜对了。即存在了用户名遍历漏洞。
接下来只需要根据这个用户名来进行密码爆破就行。
所以这个漏洞十分危险,因此就有了最小化反馈原则。
回归正题
使用Burp进行暴力破解
把刚才的POST请求发送到Intruder模块
首先选择Attack type(攻击类型)
选择Cluster bomb(集束炸弹)
我们需要变更的内容只有两个,username
跟password
后面的值
选中等号后面的值字段,点击add
点击Payloads(攻击有效载荷)模块
POC,EXP,Payloads一定要整明白
POC:这个程序能验证这个漏洞是否真实存在
EXP:能够使用这个漏洞,攻击这个漏洞
Payload:攻击这个漏洞或验证这个漏洞所使用的具有危害的代码
但是有些大佬会乱整啊,比如他们写的POC可以直接拿来攻击。
因此有句话说得好“假面骑士的事情不用搞那么清楚”
概念是概念,实际是实际,你要是一直把概念当成实际。
那你只会越理越乱,永远不用把概念带入到实际里。
攻击值的设置
paste:从别处复制值粘贴进去
Load … :导入密码/账号字典
这里我图个方便,直接手动输入了,回车就自动添加进去了
切换第二个,输入或导入密码,然后点击Start attack开始攻击:
根据这个结果推算,哪些是真实的账户密码
首先前面三个不用看,都知道是什么东西
第四个是Status code状态码,但都是200的回复,没有参考价值
最后一个是报文的长度,发现有个报文长度不一样,因此有理由怀疑是正确的账户密码。
尝试进行登录:
在实际测试中,字典动辄几万行,测试的结果不可能一个个去看,因此,我们就需要跟着状态码的不同跟报文长度的不同,来减少范围。
Status code状态码,但都是200的回复,没有参考价值
最后一个是报文的长度,发现有个报文长度不一样,因此有理由怀疑是正确的账户密码。
尝试进行登录:
在实际测试中,字典动辄几万行,测试的结果不可能一个个去看,因此,我们就需要跟着状态码的不同跟报文长度的不同,来减少范围。