首先打开burp suite拦截,然后在随意输入账号密码,
可在burpsuite上抓到皮卡丘的包,可以看到刚才输入的账号密码
我们选择放包,然后看到提示“用户名或密码不存在”,说明刚刚随便输入的账号密码是错的(废话)
这怎么办呢,可以看到右上角有提示,我们点开发现三个账号密码,其中肯定有一个是正确的,当然我们可以一个一个地试。但是数量多的话我们就不好试了。把这三个记下来,下面用到。
再次随便输入账号密码,拦截抓包
发送
攻击类型选择集束炸弹
添加要攻击的位置,即账户和密码位置
第一个负载集对应账户,添加输入上面提示给的三个账户,第二个负载对应密码,
添加三个密码
然后开始攻击,返回长度与其他不一样的一组即为正确的账号密码
随意输入账号密码,输入正确的验证码,登录。然后提示账号密码不存在,验证码改变。
打开burp suite拦截,再次随机输入账号密码和正确的验证码,burp查看数据包
把数据包发送给重发器,修改数据包中的验证码,然后发送,在右边响应栏可以看到,验证码输入错误的提示,说明后台会对验证码进行验证。
点击右上角有个小提示告诉我们验证码一直有效
关闭burp拦截,返回平台重新随机输入账号密码和正确的验证码,burp拦截抓包
把数据包发送给重发器,点击发送,右侧响应栏提示账号密码不存在。
然后我们修改账号密码,验证码不动,再发送,还是提示账号密码不存在。但是却不提示验证码错误。说明我们修改账号密码登录,验证码不过期,可以重复使用。
把数据包发送给测试器,因为验证码不会改变,我们输入的验证码又是正确的,所以我们只要设置账号密码两个攻击变量
两个攻击载荷分别添加字典,开始攻击
返回长度不同的就是正确的账号密码。
首先随机输入用户名密码和正确的验证码,burp拦截抓包
把数据包发送给重发器,修改验证码,然后发送过去,发现响应栏只提示用户名和密码错误,却没有说验证码错误,是不是说明后台根本没有检验发送过来的验证码,或者说验证码根本没有发送到后台。
我们看一下右上角的提示
打开码源,发现这个验证码是JavaScript前端随机生成的,每点击一次就随机生成一个验证码,
并且验证码的检验也是由前端来检验的,后台没有检验这个验证码。
那就好办了,我们只需要随机输入账号密码,输入正确的验证码,然后只需要对发送到后台的数据包中的账号密码进行字典攻击就可以了。后面的操作跟1.1一样。
输入特殊字符,查看源码,发现被原封不动的输出,说明没有对输入的内容进行过滤处理
我们尝试输入script语句:
发现不能完整输入,输入长度被限制了。
F12打开码源,搜索length,修改长度,原来的是20,我们修改大一点,200。
返回,继续输入script语句提交,弹出xss窗口,刷新就消失,这就是反射型xss,也就是一次性的
这个xss是以get方式提交,也就是体现在url中
用burp拦截也能看到
登录
输入script语句,并用burp拦截才能发现,在url中没有体现。GET方式的XSS漏洞更加容易被利用, 一般利用的方式是将带有跨站脚本的URL伪装后发送给目标,而POST方式由于是以表单方式提交,无法直接使用URL方式进行攻击
这是一个留言板,我们输入什么信息,下面的留言列表就会永久存储该信息,没有对输入的内容进行过滤处理,包括特殊符号。
那我们尝试输入上面用到的Javascrip语句:
把scrip语句留言到留言板后,该语句就会被执行,弹出窗口,并且刷新后或者退出重新访问还是会弹出。
打开页面源码查看,我们写入的代码已经变成了页面的JavaScript脚本了,每次访问该页面都会运行脚本。也就是说我们可以利用这个漏洞写入恶意代码,每当用户访问该留言页面时,恶意代码将会被执行。
存储型xss与反射型差不多,区别就是一个是永久存储,一个是一次性的。
先随便输入,点击,出现一个类似a标签的东西。
打开源码查看,这个意思就是说当我们在这个标签里面输入一个字符串之后
就会把这个字符串通过dom方法 通过字符串拼接的方式拼接到a标签的herf属性中
这个a标签会被写道id=dom的div标签里面
what do you see?
复制源码 做对应的分析 构造闭合
what do you see?
Str我们输入的内容
我们可以把输入部分删除
what do you see?
在个这个地方把前面的a标签闭合掉
随便输入一个字符串 单引号 用一个conclik弹一个窗 然后闭合a标签
#'οnclick="alert(1111)">
这就是我们构造的payload
经过我们前面的分析 知道
通过dom的方式获取到我们的输入 在输出到div里面
我构造闭合后,并没有弹窗出现
换了另一条js语句,点击a标签,弹出窗口
与上面差不多
随便输入内容提交后内容消失,点击提示,需要我们登录后台
根据所给提示,登录到后台,发现我们刚才随意输入的内容发送到了后台存起来的
写入恶意弹窗代码,提交
再次登录后台,一登陆就出现弹窗,管理员被攻击到。这种情况就是xss盲打,对攻击者来说只是尝试的输入,并不知道后台是否被输出,只是尝试的输入跨站脚本。管理员被攻击到,攻击者成功。这种危害比较大,如果在前端输入一段盗取cookie的脚本,管理员一登陆,管理员的cookie就会被获取。攻击者就可以伪装管理员登陆后台,后台的权限就大了。
直接输入特殊字符,发现没有过滤处理
然后我们直接输入弹窗语句
提交后发现,我们的语句被吞掉了,应该是设置了过滤把我们的 我们来验证一下,输入 查看源码,所以可以确定的是它对标签 接下来,我们试试大小写混用,看看是不是还被过滤 看来它只是对小写进行简单的过滤,用大写就可以绕过了 我们也可以用img标签 关于htmlspecialchars()函数: htmlspecialchars()是PHP里面把预定义的字符转换为HTML实体的函数 预定义的字符是: & 成为 & " 成为 " ' 成为 ' < 成为 < > 成为 > 可用引号类型 ENT_COMPAT:默认,仅编码双引号 ENT_QUOTES:编码双引号和单引号 ENT_NOQUOTES:不编码任何引号 查看php源码,htmlspecialchars默认不对 ' 处理 构造闭合: 输入payload 查看页内源码 点击a标签,弹出窗口 查看php源码, 这个页面会接收我们的输入的message,然后判断我们输入的网址,如果输入的不是百度的网址会对我们输入的内容用 htmlspecialchars()函数 进行处理 这个函数转义单引号、双引号和左右尖括号 然后输出到 a 标签的 href 属性中,在 a 标签的href属性中,可以用javascript协议来执行JS 如果要对 href 做处理,一般有两个逻辑: 输入的时候只允许 http 或 https 开头的协议,才允许输出 其次再进行htmlspecialchars处理 根据提示,我们输入tmac,然后查看页内源码,发现它会把我们的输入放到JS中,然后对这个变量进行判断,然后再输出 我们可以构造一个闭合,先用一个单引号和闭合掉页面中的
对比上面的图,
2.8xss之htmlspecialchars
' onclick='alert(111)'
2.9xss之href输出
Javascript:alert(111),
2.10xss之js输出