弱口令&&XSS初始
Burt Force(暴力破解漏洞)
Burte Force(暴力破解)概述 “暴力破解”是一攻击具手段,在web攻击中,一般会使用这种手段对应用系统的认证信息进行获取。 其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。 为了提高效率,暴力破解一般会使用带有字典的工具来进行自动化操作。 理论上来说,大多数系统都是可以被暴力破解的,只要攻击者有足够强大的计算能力和时间,所以断定一个系统是否存在暴力破解漏洞,其条件也不是绝对的。 我们说一个web应用系统存在暴力破解漏洞,一般是指该web应用系统没有采用或者采用了比较弱的认证安全策略,导致其被暴力破解的“可能性”变的比较高。 这里的认证安全策略, 包括: 1.是否要求用户设置复杂的密码; 2.是否每次认证都使用安全的验证码(想想你买火车票时输的验证码~)或者手机otp; 3.是否对尝试登录的行为进行判断和限制(如:连续5次错误登录,进行账号锁定或IP地址锁定等); 4.是否采用了双因素认证; ...等等。 千万不要小看暴力破解漏洞,往往这种简单粗暴的攻击方式带来的效果是超出预期的!
你可以通过“BurteForce”对应的测试栏目,来进一步的了解该漏洞。
从来没有哪个时代的黑客像今天一样热衷于猜解密码 ---奥斯特洛夫斯基
基于表单的暴力破解
登陆抓包,放到 Intruder
模块
将账号&&密码字段 设置变量进行爆破
选择 狙击手
设置 Paylod
点击 Start attack
开始爆破
爆破完成后,对长度进行排序,可看到有几个返回包的长度不一致,length长度为35035、payload为123456的密码返回包中,发现login success登录成功字样,说明使用账号密码admin/123456即可登录成功,成功对该登录系统进行爆破。
验证码绕过(On Server)
扫到后台,发现系统后台登录处带有验证码。
服务端生成验证码,刷新网页验证码刷新(如果后台验证码刷新了那么上一次的验证吗就无效了)。
抓包后,发现验证码参数,
经测试直接放入Intruder模块爆破即可,不要在 Proxy->Intercept
模块放包后刷新页面,因为刷新页面后后台的验证码也会随之刷新,从而使上一次验证码失效,导致爆破不了。
返回包中,返回了login success字样,成功爆破到密码。admin/123456
验证码绕过(On Client)
基于客户端校验
在靶机上输入账号密码(随便输)验证码正确就行
抓取登录的请求包。
删除数据包中的验证码或者不用管它(相当于一个摆设)直接爆破就行。
发现返回包包含login success 说明暴力破解成功
不删除验证码也可以抓包爆破。(但是在前端登录的时候就会校验验证码)
Token防爆破?
token是计算机术语:令牌,令牌是一种能够控制站点占有媒体的特殊帧,以区别数据帧及其他控制帧。token其实说的更通俗点可以叫暗号,在一些数据传输之前,要先进行暗号的核对,不同的暗号被授权不同的数据操作。基于 Token 的身份验证方法
使用基于 Token 的身份验证方法,在服务端不需要存储用户的登录记录。大概的流程是这样的:
1.客户端使用用户名跟密码请求登录
2.服务端收到请求,去验证用户名与密码
3.验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端
4.客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里
5.客户端每次向服务端请求资源的时候需要带着服务端签发的 Token
6.服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据
经过测试发现此题的Token根本没用,删除token参数(或者不用管)即可直接爆破。(删除不能爆破,不知道为啥 求师傅解惑)
XSS跨站脚本攻击(Cross-Site Scripting)
XSS(跨站脚本)概述 Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型: 1.反射性XSS; 2.存储型XSS; 3.DOM型XSS;
XSS漏洞一直被评估为web漏洞中危害较大的漏洞,在OWASP TOP10的排名中一直属于前三的江湖地位。 XSS是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。因此在XSS漏洞的防范上,一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理: 输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入; 输出转义:根据输出点的位置对输出到前端的内容进行适当转义; 你可以通过“Cross-Site Scripting”对应的测试栏目,来进一步的了解该漏洞。
反射型XSS(get)
输入框长这样
首先输入 <script>alert('1')</script>
发现前端限制输入长度了。
f12大法审查元素,修改一下限制的长度即可
使用Payload <script>alert("1")</script>非作者预期的过滤方法
非预期的过滤方法,发现并不会弹框。
测试后失败,审查元素查看源码,发现alert参数值被加干扰了。"会将双引号这类特殊字符变成文本字符串,使原来我们输入的payload无法被正确识别。
沉思许久也没有找到原因,通过网络查阅,造成原因可能是由于php环境版本造成的,部分题目对双引号和单引号进行转义过滤。
这里要讲一下,alert参数是可以连接字符串的,如果不加/或者单引号双引号,会被当做变量处理,如果变量有值则会弹出参数值,如果没有则不会弹窗。而后接数字就可以直接弹出。所以alert参数后接字母需要加/、单引号、双引号,后接数字直接填写。
尝试使用 <script>alert(/1/)</script>
可以执行,尝试使用 <script>alert(1)</script>
补充一点:
GET方式的XSS 还能通过URL进行测试 如图:
反射型XSS(post)
admin/123456登录之后,使用Payload进行测试,发现语句被转义过滤了。情况和上一关相同。(不同在于不能URL进行测试,智能在输入框插入Payload)
使用Payload <script>alert(/1/)</script>
发现Payload被执行
使用 <script>alert(1)</script>
一样可以触发XSS
存储型XSS
本题目输入框中的内容提交后会存储在数据库中,比前两种漏洞危害性更大。 提交payload后页面上会对它进行加载,然后每次打开该页面就会执行。
这一题也是会“/”转义 单、双引号
使用Payload <script>alert(/1/)</script>
进行测试
成功触发Payload
使用Payload <img sec=javascript.:alert(1)>
也能触发