暴力破解
Burte Force(暴力破解)概述
“暴力破解”是一攻击手段,在web攻击中,一般会使用这种手段对应用系统的认证信息进行获取。 其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。 为了提高效率,暴力破解一般会使用带有字典的工具来进行自动化操作。
理论上来说,大多数系统都是可以被暴力破解的,只要攻击者有足够强大的计算能力和时间,所以断定一个系统是否存在暴力破解漏洞,其条件也不是绝对的。 我们说一个web应用系统存在暴力破解漏洞,一般是指该web应用系统没有采用或者采用了比较弱的认证安全策略,导致其被暴力破解的“可能性”变的比较高。 这里的认证安全策略, 包括:
1.是否要求用户设置复杂的密码;
2.是否每次认证都使用安全的验证码(想想你买火车票时输的验证码~)或者手机otp;
3.是否对尝试登录的行为进行判断和限制(如:连续5次错误登录,进行账号锁定或IP地址锁定等);
4.是否采用了双因素认证;
...等等。
千万不要小看暴力破解漏洞,往往这种简单粗暴的攻击方式带来的效果是超出预期的!
你可以通过“BurteForce”对应的测试栏目,来进一步的了解该漏洞。从来没有哪个时代的黑客像今天一样热衷于猜解密码 ---奥斯特洛夫斯基
基于表单的暴力破解
使用burp抓包
右键,发送至Intruder模块
Attack type:选择Cilster bomb
将用户名和密码Add为变量
payload 1:加载用户名字典 #字典可自行搜索下载
也可以Add手动添加
payload 2:加载密码字典
点击start attack
最后根据长度,得出账号密码
验证码绕过(on server)
填写表单及正确的验证码后提交并抓包,将数据包发送到Repeater
模块,多次发包发现只提示username or password is not exists
,而不提示验证码出错,得知验证码可以重复利用。因此只需要手动填写正确的验证码即可爆破
手动填写一次表单,需要输入正确的验证码,账号密码可任意
用户名和密码爆破,参考:基于表单的暴力破解
验证码绕过(on client)
输入正确的验证码,用户名和密码任意,抓包
可以看到验证码为空,回显提示用户名或密码不存在,证明验证码只在本地校验
下一步直接爆破用户名和密码。具体步骤参考:基于表单的暴力破解
token防爆破
Token在计算机身份认证中是令牌(临时)的意思,在词法分析中是标记的意思。一般作为邀请、登录系统使用。 --百度
输入用户名和任意密码,burp抓包
将请求发送至Intruder,
Attack type:设置为Cluster bomb
把password和token设置为变量
点击options
找到Grep-Extract,点击Add
点击 Fetch response(获取响应)
Refetch response(重新获取响应)
复制token值备用,点击OK
93366653de18202357884767598
找到Request Engine
Number of threads:设置为 1
找到Redirections(重定向)
设置为:Always
设置payload 1 ,添加密码字典
设置payload 2 ,Payload type:选择Recursive grep
输入token
根据长度不同,得出密码:123456
登录成功
Cross-Site Scripting(CSS)
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)
反射型XXS是一种非持久性的攻击,它指的是恶意攻击者往Web页面里插入恶意代码,当用户浏览该页时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的目的。这里插入的恶意代码并没有保存在目标网站,需要引诱用户点击一个链接到目标网站的恶意链接来实施攻击。
先点击submit
按照提示输入:kobe
地址栏显示,请求方式为GET
绕过方式一:浏览器地址栏
因为输入的Payload会在地址栏显示,而地址栏是没有长度限制的
所以可以之间在地址栏插入Payload
<script>alert("123")</script>
绕过方式二:修改html代码
将maxlength修改为:100
<script>alert("321")</script>
反射性xss(post)
根据提示登录
尝试输入
<script>alert("dd")</script>
#对输入内容没有长度限制
再输入:
<script>alert(document.cookie)</script>
存储型xss
存储型xss 顾名思义就是恶意脚本会同正常信息一起被存到数据库或者文件中,等到用户在访问这个页面时就会成为受害者,这种漏洞常见于论坛、博客以及留言板。
<img src=1 οnerrοr=alert(1) >
复制链接,新建页面打开,出现弹框,证明存储型XSS可以影响每一个访问此页面的用户
DOM型xss
什么是DOM:
文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展置标语言的标准编程接口。它是一种与平台和语言无关的应用程序接口(API),它可以动态地访问程序和脚本,更新其内容、结构和www文档的风格(HTMl和XML文档是通过说明部分定义的)。文档可以进一步被处理,处理的结果可以加入到当前的页面。DOM是一种基于树的API文档,它要求在处理过程中整个文档都表示在存储器中。另外一种简单的API是基于事件的SAX,它可以用于处理很大的XML文档,由于大,所以不适合全部放在存储器中处理。 -- 百度
这里利用了DOM
将字符串进行了拼接并把值给a
标签的href
,然后输出一个what do you see?
构造payload:
><img src='#' οnmοuseοver="alert('xss')">
DOM型xss-x
这一关也是利用了DOM将字符串进行了拼接并把值给a标签的href
构造payload:
><img src='#' οnmοuseοver="alert('xss')">
#' οnclick="alert(111)">
' οnclick="alert('xss')">
#没有弹窗?
xss盲打
输入内容,没有回显
查看提示,可以登录后台
输入payload:
<script>alert("xss")</script>
登录后台,发现弹窗
xss之过滤
输入:<script>alert("xss")</script>
发现网站做了过滤
大小写绕过:
<sCript>alert('xss')</scRIpt>
<SCRIPT>alert('xss')</SCRIPT>
使用非<script>的其他标签:
<img src=1 οnerrοr='alert("xss")'>
XSS之htmlspecialcharss
htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体。
预定义的字符是:
&(和号) 成为&
" (双引号) 成为 "
' (单引号) 成为 '
< (小于) 成为 <
> (大于) 成为 >
HTMLSpecialChars重要性:
如果不用HTMLSpecialChars,就会导致读取时,要把" <script>"之类的HTML标签“原本”的输出,而这一输出就有漏洞了,万一那个插入数据库的人是黑客,插入的不是一般的字符串,而是 “ <script> <b> <body>”等等之类的东西,读取后,就是一个HTML文档之类的东西,这样,他可以利用这个漏洞欺骗其他人,或者借这个漏洞攻击别人等等,搞个框架跳转到某一网站等等操作。
-- 源自百度
payload:
' οnmοuseοver='javascript:alert(1)'
xss之href输出
HTML小知识之src 和 href 的区别_src标签-CSDN博客
源码对双引号及单引号以及左右尖括号均会被转义,可以使用javascript伪协议来执行js
javascript: 这是一个伪协议,表示接下来的内容是 JavaScript 代码,可以在当前页面的上下文中执行。
alert(): JavaScript 函数,用于在浏览器中显示一个警告框,其中显示指定的消息。
document.cookie: 这是一个 JavaScript 表达式,用于获取当前页面的 Cookie 值。Cookie 是一种用于在客户端和服务器之间存储数据的机制,它可以用于标识和跟踪用户会话状态。
payload:
javascript:alert("/xss/")
显示当前页面cookie:
javascript:alert(document.cookie)
XSS之JS输出
javascript:alert("/xss/")
输入的攻击代码被发送到了最外面的<script>标签中了,并且没有被编码。
首先要用’:闭合掉当前的语句,然后插入新语句,最后再用//
注释掉老语句遗留下来的’;
';alert(document.cookie);//
参考:
跨站脚本攻击(XSS)_xss跨站脚本攻击_来日可期x的博客-CSDN博客