环境

虚拟机192.168.48.130

docker+centos8

安装

这里把启动指令写成脚本文件了,方便启动

启动完成后,访问http://your-ip:port,点击初始化安装后按照提示操作即可

docker search pikachu
docker pull area39/pikachu
docker images

vi pikachu.sh
	docker run -dt --name pikachu -p 80:80 --rm area39/pikachu

chmod +x pikachu.sh
./pikachu

docker ps
docker  //进入镜像
docker ps  //查看container id
docker exec -it container id /bin/bash  //进入docker容器
mysql -u root -p  pikachu  //数据库密码为空密码

暴力破解

基于表单的暴力破解

随便试个密码burp抓包,右键发送到intruder

Pikachu靶场之暴力破解、XSS、CSRF漏洞_web安全

设置攻击类型和暴破的对象

假如用户名和密码一个都不知道的话,可以用cluster bomb

暴破对象就选username和password的值

Pikachu靶场之暴力破解、XSS、CSRF漏洞_网络安全_02

设置字典和payload,1和2都需要设置字典

这里字典随便输几个就行

Pikachu靶场之暴力破解、XSS、CSRF漏洞_web安全_03

开始暴破,通过返回的length长度来判断成功的值为admin/123456

Pikachu靶场之暴力破解、XSS、CSRF漏洞_web安全_04

验证码绕过(on server)

burp抓包,右键发送到repeater

点击send,然后可以看到response里显示用户名或密码错误

再修改下密码然后发送,还是一样的提示用户名和密码错误

把验证码改一下后发送,会提示验证码输入错误

可以判断只要验证码不更新就可以一直进行暴破尝试

Pikachu靶场之暴力破解、XSS、CSRF漏洞_网络安全_05


Pikachu靶场之暴力破解、XSS、CSRF漏洞_web安全_06

还是跟之前一样的暴破方法即可

Pikachu靶场之暴力破解、XSS、CSRF漏洞_xss_07

验证码绕过(on client)

跟上面一样,先发到repeater测试一下

修改下验证码,发现随便输个验证码都是可以的

Pikachu靶场之暴力破解、XSS、CSRF漏洞_web安全_08


Pikachu靶场之暴力破解、XSS、CSRF漏洞_网络安全_09

token防暴破

将password和token设为变量

Pikachu靶场之暴力破解、XSS、CSRF漏洞_网络安全_10

设置下burp,intruder-options-grep extract

搜索下token,找到对应的值,双击自动填充表达式

Pikachu靶场之暴力破解、XSS、CSRF漏洞_csrf_11

在options中设置线程为1

Pikachu靶场之暴力破解、XSS、CSRF漏洞_docker_12

token的字典选成recursive grep,将抓包里token的值粘贴到下面

设置完成后start attack

Pikachu靶场之暴力破解、XSS、CSRF漏洞_xss_13

暴破完成

Pikachu靶场之暴力破解、XSS、CSRF漏洞_docker_14

XSS

反射型xss(get)

先试提交几个字符试下,没有对特殊符号做限制

Pikachu靶场之暴力破解、XSS、CSRF漏洞_xss_15

构造xss语句

输一半输不上了,检查下元素发现有长度限制,改下maxlength的值就可以了

<script>alert('xss')</script>

Pikachu靶场之暴力破解、XSS、CSRF漏洞_csrf_16


Pikachu靶场之暴力破解、XSS、CSRF漏洞_xss_17

反射型xss(post)

随便输入一些特殊字符测试下,发现括号跟斜杠被过滤掉了

Pikachu靶场之暴力破解、XSS、CSRF漏洞_网络安全_18

通过闭合p标签来实现弹框

</p><script>alert('xss')</script>

Pikachu靶场之暴力破解、XSS、CSRF漏洞_web安全_19

存储型xss

先用xss语句在留言板提交,留言列表中并没有显示我们的代码,但是检查元素中可以看到xss语句插入到代码中

<script>alert('xss')</script>

Pikachu靶场之暴力破解、XSS、CSRF漏洞_网络安全_20

在这之后每提交一次留言板都会出现弹框

Pikachu靶场之暴力破解、XSS、CSRF漏洞_docker_21

DOM型xss

输入内容点击click me 生成了超链接

点击what do you see跳转

Pikachu靶场之暴力破解、XSS、CSRF漏洞_csrf_22


Pikachu靶场之暴力破解、XSS、CSRF漏洞_web安全_23

这里要用onclick参数,完成a标签闭合,点击what do you see就可以弹窗了

6'οnclick=alert('xss')>

Pikachu靶场之暴力破解、XSS、CSRF漏洞_网络安全_24

DOM型xss-x

这个跟上面的策略差不多,直接试下上面的payload

6'οnclick=alert('xss')>

Pikachu靶场之暴力破解、XSS、CSRF漏洞_web安全_25

xss之盲打

这个得需要在后台才能看到输入的内容

提交后根据提示访问后台地址 http://your-ip/vul/xss/xssblind/admin.php

Pikachu靶场之暴力破解、XSS、CSRF漏洞_docker_26

提交后,登录后台出现弹框

Pikachu靶场之暴力破解、XSS、CSRF漏洞_docker_27

xss之过滤

测试一下发现很多关键词都被过滤

Pikachu靶场之暴力破解、XSS、CSRF漏洞_网络安全_28

可以使用大小写加输出数字来绕过

<Script>alert(666)</Script>

Pikachu靶场之暴力破解、XSS、CSRF漏洞_csrf_29

xss之htmlspecialchars

发现输入的内容会变成超链接

Pikachu靶场之暴力破解、XSS、CSRF漏洞_xss_30

跟之前那个差不多,多加个单引号进行闭合

6'οnclick='alert(666)'

Pikachu靶场之暴力破解、XSS、CSRF漏洞_web安全_31

xss之href输出

闭合了几次发现闭不上,要用javascript伪协议绕过

javascript:alert(666)

Pikachu靶场之暴力破解、XSS、CSRF漏洞_csrf_32

xss之js输出

发现输入的内容跑到js代码里去了

闭合下script标签

Pikachu靶场之暴力破解、XSS、CSRF漏洞_网络安全_33


Pikachu靶场之暴力破解、XSS、CSRF漏洞_docker_34

一点点试下去闭合就ok了

</script><script>alert('messi')</script>

Pikachu靶场之暴力破解、XSS、CSRF漏洞_web安全_35

CSRF

CSRF(get)

根据提示登录

Pikachu靶场之暴力破解、XSS、CSRF漏洞_xss_36


Pikachu靶场之暴力破解、XSS、CSRF漏洞_docker_37

点击修改个人信息,在提交的时候抓包

Pikachu靶场之暴力破解、XSS、CSRF漏洞_csrf_38

可以看到用户信息的格式,然后修改要更改的用户参数

GET /vul/csrf/csrfget/csrf_get_edit.php?sex=dog&phonenum=10010&add=666&email=67890%40qq.com&submit=submit HTTP/1.1

将更改后的用户参数加到url中

http://192.168.48.130/vul/csrf/csrfget/csrf_get_edit.php?sex=dog&phonenum=10010&add=666&email=67890%40qq.com&submit=submit

可以换个浏览器来访问,访问后可以看到个人信息已被更改

Pikachu靶场之暴力破解、XSS、CSRF漏洞_web安全_39

CSRF(post)

换了个用户登录,同样修改信息抓包看下

虽然也有用户信息,但是由于是post请求没法通过url来伪造请

Pikachu靶场之暴力破解、XSS、CSRF漏洞_csrf_40

需要自己写个html文件然后通过post方式提交

修改下路径和要修改的信息

<html>
<head>
	<script>
	window.onload = function() {
    	document.getElementById("postsubmit").click();
	}
	</script>
</head>
<body>
	<form method="post" action="http://192.168.48.130/vul/csrf/csrfpost/csrf_post_edit.php">
   	 	<input id="sex" type="text" name="sex" value="pig" />
   	 	<input id="phonenum" type="text" name="phonenum" value="1008611" />
        <input id="add" type="text" name="add" value="shanghai" />
   	 	<input id="email" type="text" name="email" value="123456@qq.com" />
    	<input id="postsubmit" type="submit" name="submit" value="submit" />
	</form>
</body>
</html

修改好代码后,将html文件拖入到浏览器中即可,修改成功

Pikachu靶场之暴力破解、XSS、CSRF漏洞_csrf_41

CSRF Token

每次请求都会加一个随机的token并进行验证

试了试做不出来,查了下好像没什么办法

Pikachu靶场之暴力破解、XSS、CSRF漏洞_网络安全_42