安装部署
Pikachu靶场,是一个带有漏洞的Web应用系统,在这里包含了常见的web安全漏洞。使用世界上最好的语言PHP进行开发-_-,数据库使用的是mysql,因此运行Pikachu你需要提前安装好"PHP+MYSQL+中间件(如apache,nginx等)"的基础环境。
1、下载
把下载下来的pikachu文件夹放到web服务器根目录下
[root@iZf8z2tte7i7r0cdyrk919Z html]# wget https://github.com/zhuifengshaonianhanlu/pikachu/archive/refs/heads/master.zip
[root@iZf8z2tte7i7r0cdyrk919Z html]# unzip master.zip (放在/var/www/html目录下)
简写文件名称[root@iZf8z2tte7i7r0cdyrk919Z html]# sudo mv pikachu-master/ pikachu

2、修改配置文件
根据实际情况修改inc/config.inc.php里面的数据库连接配置
修改配置文件(写入数据库密码)修改这个文件 ==> /var/www/html/pikachu/inc/config.inc.php
3、初始化安装
访问http://x.x.x.x/pikachu,会有一个红色的热情提示"欢迎使用,pikachu还没有初始化,点击进行初始化安装!",点击即可完成安装。

//如果此步骤遇到空白页面无法初始化,需要下载插件。
[root@iZf8z2tte7i7r0cdyrk919Z /]# yum install php-mysqli
刷题记录
一、暴力破解
"暴力破解"是一攻击具手段,在web攻击中,一般会使用这种手段对应用系统的认证信息进行获取。 其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。 为了提高效率,暴力破解一般会使用带有字典的工具来进行自动化操作。
理论上来说,大多数系统都是可以被暴力破解的,只要攻击者有足够强大的计算能力和时间,所以断定一个系统是否存在暴力破解漏洞,其条件也不是绝对的。 我们说一个web应用系统存在暴力破解漏洞,一般是指该web应用系统没有采用或者采用了比较弱的认证安全策略,导致其被暴力破解的"可能性"变的比较高。 这里的认证安全策略, 包括:
1.是否要求用户设置复杂的密码;
2.是否每次认证都使用安全的验证码(想想你买火车票时输的验证码~)或者手机otp;
3.是否对尝试登录的行为进行判断和限制(如:连续5次错误登录,进行账号锁定或IP地址锁定等);
4.是否采用了双因素认证;
...等等。
千万不要小看暴力破解漏洞,往往这种简单粗暴的攻击方式带来的效果是超出预期的!
1、基于表单的暴力破解
1)使用Burp Suite抓取登录过程表单,发送至爆破模块intrder。

2)设置攻击载荷(集束炸弹)
- 有效载荷1导入用户名字典
- 有效载荷2导入密码字典

观察长度,三个账号被爆破出来

登录测试,登录成功。

2、验证码绕过(on server)
验证码不过期,可以被重复利用
1)随便输入内容抓包,测试多次修改密码发现验证码为改变,存在验证码不过期情况。

2)登录包发送至爆破模块intrder(集束炸弹)。

3)爆破出账号和口令。

3、验证码绕过(on client)
前端校验
1)随便输入,点击登录,出现弹窗,很有可能是前端校验

方法一:
- 前端通过调试器删除验证码模块
- 集束炸弹暴力破解
方法二:
- 浏览器禁用JS模块
- 集束炸弹暴力破解
方法三
- 直接在数据包删除验证码字段
- 集束炸弹暴力破解
用方法一,找到验证码校验模块 并删除,然后进行暴力破解。


爆破登录成功

4、token防爆破?
Token是一种用于身份验证和授权的令牌。通常由服务器生成并返回给客户端,在客户端持久保存并在每次请求时发送给服务器。
1)随便输入抓包,多了一个token值。

2)通过重发器修改口令重发数据包,系统提示token错误,每一次登录的返回包会带有token相关数据用于下一次的登录认证。

3)暴力破解
- 草叉模式爆破
- 正则匹配返回数据加入爆破
选择爆破模式-草叉模式,有效载荷-口令、token

设置口令字典

设置burp,intruder-options-grep extract,搜索下token,找到对应的值,双击自动填充表达式

将抓包的token值填加进去

设置线程为1

爆破口令成功

二、Cross-Site Scripting
Cross-Site Scripting 简称为"CSS",为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型:
1.反射性XSS;
2.存储型XSS;
3.DOM型XSS;
XSS漏洞一直被评估为web漏洞中危害较大的漏洞,在OWASP TOP10的排名中一直属于前三的江湖地位。XSS是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。
形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致"精心构造"的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。
因此在XSS漏洞的防范上,一般会采用"对输入进行过滤"和"输出进行转义"的方式进行处理:
输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入;
输出转义:根据输出点的位置对输出到前端的内容进行适当转义;
1、反射型XSS (gest)
1)输入长度有限,不能插入一句完整的JS代码。

2)直接在 URL中插入JS代码or修改源代码可输入的长度值。
<script>alert(1)</script>
- 直接在 URL中插入JS代码

- 修改源代码可输入的长度值之后可以插入完整的JS代码,JS代码被执行出现弹窗。


2、反射型XSS (post)
1)根据提示,先登录系统。

2)插入JS代码被执行,出现弹窗。
<script>alert(1)</script>

3)根据作者提示,我们可以尝试登录后尝试用payload注入爆出cookie。
<script>alert(document.cookie)</script>

3、存储型xss
1)输入1点击submit,数据会存储在页面。

2)插入JS代码被执行,因为数据会存储,所以每次点击这个页面都会执行JS代码。

