暴力破解
基于表单的暴力破解
前置:
Burpsuite 史上最详细 安装教程_burp suite安装包-CSDN博客
火狐浏览器上下代理插件并配置好bp代理
主要还是对BP使用,没有太多的技巧可言。
第一步,打开BP抓包,账号密码随便输点东西然后Login
此时浏览器会一直在加载中,这是正常的,正常情况下,login后会自动跳到BP,如没有自动跳转,请手动跳转。
右击鼠标选择“发给intruder", 点击测试器,在位置中选择“集束炸弹”,重新选择变量
在有效载荷当中给每个变量载入字典
然后点击开始攻击,拿到弱口令账号密码
验证码绕过(on server)
随便输个账号密码,正确填写验证码
BP抓包后不要放包,右击鼠标发送到重发器,连续几次重发,发现都没有提示验证码错误,可以判断极有可能是无条件不刷新
知识点:无条件不刷新
无条件不刷新是指在某一时间段内,无论登录失败多少次,只要不刷新页面,就可以无限次的使用同一个验证码来对一个或多个用户帐号进行暴力猜解。换句话说,攻击者可以在同一个会话下,在获得第一个验证码后,后面不再主动触发验证码生成页面,并且一直使用第一个验证码就可循环进行后面的表单操作,从而绕过了验证码的屏障作用,对登录进行暴力猜解。
只要不把刚刚抓到的包放掉,就能够重复利用同一个验证码,此时再把包发到测试器,像前面那题一样进行爆破,拿到正确账号密码。
验证码绕过(on client)
解法跟上面一题一摸一样。
解法二:
此验证码仅为前端验证,禁用javascript后验证码成摆设
token防爆破?
“随意登录,用BP抓包,全部放掉”,该操作重复两次后到拦截记录查看
将第二次抓到的POST包的token复制下来,到第一次抓到的POST包的响应中查询,发现规律--返回包中藏着下一次使用的token;
于是乎再次抓包发到重发器,选择音叉模式,此时要更换字典(因为音叉模式是一一对应的,username.txt和passsword.txt是一行对应一行的进行爆破,两个字典行数要一致且)
知识点:音叉模式(Pitchfork)
音叉模式允许使用多组payload
组合,在每个标记位置上遍历所有payload
组合,假设有两组数量相等的payload
,分别为{1、1、2、2}, {4、3、4、3},两个payload
一一对应组合
attack No. | location A | location B |
---|---|---|
1 | 1 | 4 |
2 | 1 | 3 |
3 | 2 | 4 |
4 | 2 | 3 |
载荷1、2载入字典,然后
最后,还要将线程设为1
然后开始攻击,爆破成功
Cross-Site Scripting
HTML/JavaScript注入攻击
前置:JavaScript 和 HTML DOM 参考手册 | 菜鸟教程 (runoob.com)
简单了解标签的语法,onclick,<a href=,等
反射型xss(get)
尝试写入<script>alert(1)</script> 发现限制了20个字节,于是查找元素(右击鼠标进入检查后,再“元素”页面下ctrl+f进行查找),找到20进行修改,改为大于25的数
再次输入<script>alert(1)</script>,点击submit,发现注入成功,代码被执行
反射型xss(post)
先是暴力破解得到账号密码admin:123456
登录后输入<script>alert(1)</script>提交,html代码成功被执行
存储型xss
直接提交<script>alert(1)</script>, 后续每当有人访问该页面,就会自动弹出
DOM型xss
提交<script>alert(1)</script>,发现行不通了,点击what do you see? 发现url后面变成我输入的东西。
参考了DOM-XSS攻击原理与防御 - Mysticbinary - 博客园 (cnblogs.com)
为了更好的理解DOM型XSS,先了解一下DOM,毕竟DOM型XSS就是基于DOM文档对象模型的。对于浏览器来说,DOM文档就是一份XML文档,当有了这个标准的技术之后,通过JavaScript就可以轻松的访问它们了。
于是提交javascript:alert(1)
再次点击what do you see?
DOM型xss-x
与前一题一致
xss之盲打
看到能填的就都填上<script>alert(1)</script>
查看提示,获得后台地址,登陆后发现上传的代码被执行,而且关不掉
xss之过滤
经过<script>alert(1)</script>、>alert(1)</script>、>alert(1)>等多个尝试,发现被过滤掉了<script>一类的标签;
查阅HTML语法规则发现,HTML标签对大小写不敏感
于是乎提交<Script>alert(1)</Script>,成功
后期在查阅前人write up时发现第二种写法为,重构payload:<a href="" οnclick="alert('1')">
xss之htmlspecialchars
提交javascript:alert(1),成功
查看页面元素,发现<a>标签可以利用
为什么" οnclick="alert('xss')不行呢?
查看页面源码后发现,我们上传的双引号(")被html编码了
于是乎我们上传' οnclick='alert("xss"),此时上传发现,已成功将href和onclick语句分开
成功注入
xss之href输出
老样子,先提交一遍<script>alert(1)</script>,发现不行再看页面元素,发现可以利用<a>标签
根据上一题的经验,查看源码发现单引号和双引号都被过滤了,因而只能提交javascript:alert(1)
xss之js输出
老样子,先提交一遍<script>alert(1)</script>,发现不行再看页面元素,发现提交的东西上传到了这里
这里存在一个代码漏洞,提交</script><script>alert(1)</script>,在前面多提交一个</script>是为了将上一个<script>收尾掉
于是乎,此时成功注入
CSRF
Web漏洞之CSRF(跨站请求伪造漏洞)详解 - 知乎 (zhihu.com)
1. GET型:
如果一个网站某个地方的功能,比如用户修改邮箱是通过GET请求进行修改的。如:/user.php?id=1&email=123@163.com ,这个链接的意思是用户id=1将邮箱修改为123@163.com。当我们把这个链接修改为 /user.php?id=1&email=abc@163.com ,然后通过各种手段发送给被攻击者,诱使被攻击者点击我们的链接,当用户刚好在访问这个网站,他同时又点击了这个链接,那么悲剧发生了。这个用户的邮箱被修改为 abc@163.com 了 。
2.POST型:
在普通用户的眼中,点击网页->打开试看视频->购买视频是一个很正常的一个流程。可是在攻击者的眼中可以算正常,但又不正常的,当然不正常的情况下,是在开发者安全意识不足所造成的。攻击者在购买处抓到购买时候网站处理购买(扣除)用户余额的地址。比如:/coures/user/handler/25332/buy.php 。通过提交表单,buy.php处理购买的信息,这里的25532为视频ID。那么攻击者现在构造一个链接,链接中包含以下内容
<form action=/coures/user/handler/25332/buy method=POST>
<input type="text" name="xx" value="xx" />
</form>
<script> document.forms[0].submit(); </script>
当用户访问该页面后,表单会自动提交,相当于模拟用户完成了一次POST操作,自动购买了id为25332的视频,从而导致受害者余额扣除
CSRF(get)
查看提示,随便登录一个账号
在修改信息界面修改后用BP抓一次包后,基本就确认了是get传参修改个人信息
此时可以重构一个url(如127.0.0.1/pikachu-master/vul/csrf/csrfget/csrf_get_edit.php?sex=M&phonenum=10086&add=usa&email=hacker%40qq.com&submit=submit),用各种方法诱导受害者去点击这个链接(存在cookie,因而需要受害者在本来就正在浏览该网站时点击),受害者点击后就会在受害者毫不知情的情况下修改受害者的账户信息。
如下:访问伪造的url后,邮箱改变了
CSRF (post)
为了使之更具象化,我们在这题用两个账号尝试
登录lili的账号,修改信息抓个包,然后 鼠标右键--相关工具--CSRF PoC生成 得到html源码
将html源码放到一个.html文件中
下面登录vince的账号
通过访问刚刚的1.html文件,点击submit request,页面跳转后发现信息已被修改
SQL-inject
RCE
命令连接符
符号 | 说明 |
---|---|
A&B | A后台运行,A和B同时执行 |
A&&B | A执行成功后才会执行B命令 |
A|B | A执行的输出结果作为B命令的参数,A不论正确与否都会执行B命令 |
A||B | A执行失败后才会执行B命令 |
exec "ping"
根据上面的命令连接符,输入baidu.com&ipconfig (因为我的环境在windows下,所以用ipconfig来判断是否控制成功)
同样的,还有其他三种方法,可根据上述说明使用
exec "evel"
此处应该为考察eval函数,远程代码执行,可输入system("ipconfig"); eval函数会将字符串当成代码执行。
File Inclusion
File Inclusion (local)
能够打开并包含服务器本地文件的漏洞,我们称为本地文件包含漏洞(LFI)
通过简单的几次查询可以发现这五个文件的规律,思考还会不会存在file6.php
将url修改后重新提交,果然拿到了隐藏的信息
通常情况下,LFI漏洞搭配文件上传漏洞一并使用
File Inclusion (remote)
如果PHP的配置选项allow_url_include
、allow_url_fopen
状态为ON的话,则include/requret函数是可以加载远程文件的,这种漏洞被称为远程文件包含(RFI)
在nssctf开一个upload_labs靶场,上传一个<?php phpinfo();?>
复制下来文件上传地址
回到pikachu靶场,包含刚刚那个文件
Unsafe Filedownload
题目:
在后台放一个flag
随便点一个图片进行抓包,然后对其修改
放包后成功下载到flag.txt
Unsafe Fileupload
client check
尝试上传含php代码的.php文件,出现alert()窗口,判断是前端过滤,只需禁用javascript即可
MIME tpye
根据题目即可得知是MIME绕过
开启bp抓包,将MIME类型改为image/png
getimagesize
在cmd中使用命令:copy pic.jpg/b + info.php/a shell.jpg 得到图片马
图片马上传后,利用上面的文件包含漏洞,呃……
按里来说应该可以了,但是就是报错了,尝试路径穿越访问flag.txt
文件包含成功
尝试一个在线靶场,将上面的操作再试一遍,结果发现又可行,有可能是我本机环境有问题
待续完善……