环境
虚拟机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
设置攻击类型和暴破的对象
假如用户名和密码一个都不知道的话,可以用cluster bomb
暴破对象就选username和password的值
设置字典和payload,1和2都需要设置字典
这里字典随便输几个就行
开始暴破,通过返回的length长度来判断成功的值为admin/123456
验证码绕过(on server)
burp抓包,右键发送到repeater
点击send,然后可以看到response里显示用户名或密码错误
再修改下密码然后发送,还是一样的提示用户名和密码错误
把验证码改一下后发送,会提示验证码输入错误
可以判断只要验证码不更新就可以一直进行暴破尝试
还是跟之前一样的暴破方法即可
验证码绕过(on client)
跟上面一样,先发到repeater测试一下
修改下验证码,发现随便输个验证码都是可以的
token防暴破
将password和token设为变量
设置下burp,intruder-options-grep extract
搜索下token,找到对应的值,双击自动填充表达式
在options中设置线程为1
token的字典选成recursive grep,将抓包里token的值粘贴到下面
设置完成后start attack
暴破完成
XSS
反射型xss(get)
先试提交几个字符试下,没有对特殊符号做限制
构造xss语句
输一半输不上了,检查下元素发现有长度限制,改下maxlength的值就可以了
<script>alert('xss')</script>
反射型xss(post)
随便输入一些特殊字符测试下,发现括号跟斜杠被过滤掉了
通过闭合p标签来实现弹框
</p><script>alert('xss')</script>
存储型xss
先用xss语句在留言板提交,留言列表中并没有显示我们的代码,但是检查元素中可以看到xss语句插入到代码中
<script>alert('xss')</script>
在这之后每提交一次留言板都会出现弹框
DOM型xss
输入内容点击click me 生成了超链接
点击what do you see跳转
这里要用onclick参数,完成a标签闭合,点击what do you see就可以弹窗了
6'οnclick=alert('xss')>
DOM型xss-x
这个跟上面的策略差不多,直接试下上面的payload
6'οnclick=alert('xss')>
xss之盲打
这个得需要在后台才能看到输入的内容
提交后根据提示访问后台地址 http://your-ip/vul/xss/xssblind/admin.php
提交后,登录后台出现弹框
xss之过滤
测试一下发现很多关键词都被过滤
可以使用大小写加输出数字来绕过
<Script>alert(666)</Script>
xss之htmlspecialchars
发现输入的内容会变成超链接
跟之前那个差不多,多加个单引号进行闭合
6'οnclick='alert(666)'
xss之href输出
闭合了几次发现闭不上,要用javascript伪协议绕过
javascript:alert(666)
xss之js输出
发现输入的内容跑到js代码里去了
闭合下script标签
一点点试下去闭合就ok了
</script><script>alert('messi')</script>
CSRF
CSRF(get)
根据提示登录
点击修改个人信息,在提交的时候抓包
可以看到用户信息的格式,然后修改要更改的用户参数
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
可以换个浏览器来访问,访问后可以看到个人信息已被更改
CSRF(post)
换了个用户登录,同样修改信息抓包看下
虽然也有用户信息,但是由于是post请求没法通过url来伪造请
需要自己写个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文件拖入到浏览器中即可,修改成功
CSRF Token
每次请求都会加一个随机的token并进行验证
试了试做不出来,查了下好像没什么办法