文章目录
- Brute Force
- low
- high
- Command Injection
- low
- medium
- high
- CSRF
- low
- medium
- high
Brute Force
low
1.进入到Brute Force页面,随机输入一个用户名及密码,点击登录。使用 BurpSuite查看拦截历史,找到该登录请求,右键send to intrude。
2.清除其他变量,配置username和password为变量,并选择Cluster bomb模式进行匹配:
3.设置payload,填上一些常见的用户名和密码,进行排列组合。也可使用系统自带的一些用户名密码(系统性能有限没有选择):
4.开始攻击,将结果按照Length由高到低排序,找到和其他返回结果长度不一样的一组用户名和密码组合即得到结果:
high
1.安全级别选择high以后,登录拦截的时候发现请求参数多了一个 user_token。按照之前的方式进行密码爆破无法爆破成功。
2.这个user_token 是上次返回response中携带的token,需要作为下次request中的请求参数。现在就需要自动获取后端返回的token并携带在请求上。
3.发送一个登录请求,send to intrude,选择草叉模式,并对password和user_token进行爆破
4.设置payloads,其中变量2选择recursive grep 模式
5.在options中的request engine 下设置线程数为1(草叉模式需要):
6.在options中的 Grep-Extract 下点击 Add,并点击 refetch response,得到返回结果
7.双击 token 值,框中自动填入value等值。复制token值回到payloads页面,发现已自动填充模式。将token值粘贴入下框:
8.开始攻击,得到结果,按返回报文长度排序得到一个不一样的返回长度。查看response发现登录成功。密码爆破成功。
Command Injection
low
1.选择 command injection 菜单,输入一个 ip 地址可以返回正确的 ping结果。说明这个框是一个shell命令执行框,可以返回命令执行结果:
2.使用连接符 && ,执行我们想要注入的命令,执行成功:
- 可通过该漏洞执行命令获取服务器其他敏感信息。
medium
- 使用 && 无法得到结果,猜测可能是对 && 进行了过滤。尝试其他连接符,如 |,可成功执行注入语句:
- 同理使用 & 也可得到结果。
high
- 各种连接符都被过滤了,猜测其他可能的情况,如增删空格。在 | 后不加空格,命令注入成功:
CSRF
low
- 随便输入一个新密码进行修改并提交:
- 在 burpsuite 里找到该请求,send to repeater,修改两个变量的值再重新发送,修改密码成功,表示成功将密码修改为我们想要的值。
medium
同 low
high
- 使用burpsuite拦截请求,发现请求头中携带了token,仅修改两个密码值无法重放成功。
- 使用 burpsuite 拦截一次成功请求,从response中获取 token,并将其赋值在重放请求中,成功修改密码:
BTW:在 impossible 等级中,增加输入现有密码进行校验。这样其实和 Brute Force 的 hign 等级是一样的,练习时可以暴力破解现有密码,并循环替换token。但是两道题的场景是不一样的,Brute Force是登录场景,不需要获取受害人的token即可开始爆破密码,本题考察的是 CSRF,需要获取到受害人的 token才可以进行后续的爆破。