转载:https://github.com/PyxYuYu/MyBlog/issues/102前端
业务逻辑漏洞
业务逻辑漏洞
HTTP/HTTPS
请求分析没有
验证码限制或者一次验证码可使用 屡次
使用的状况下
Burpsuite
Hydra
Cookie 和 Session
问题
Cookie
机制采用的是在客户端保持状态的方案,用来记录用户的一些信息,也是实现 Session
的一种方式Session
机制采用的是在服务器端保持状态的方案,用来跟踪用户的状态,能够保存在集群、数据库、文件中Cookie
的内容主要包括:名字、值、过时时间、路径和域,其中路径和域一块儿构成 Cookie
的做用范围,若不设置过时时间,则表示这个 Cookie
的生命期为浏览器会话期间,关闭浏览器窗口,则消失,这种生命期为浏览器会话期的 Cookie
被称为会话 Cookie
Session
机制是一种服务端的机制,当程序须要为某个客户端的请求建立一个 Session
时,服务器会首先检查这个客户端的请求里是否包含了一个 Session
标识(Session id
),若是已包含说明此前已经为此客户端建立过 Session
,服务器会按照 Session id
将这个 Session
检索出来使用(检索不到,会新建一个),若是客户端请求不包含 Session id
,则会为此客户端建立一个 Session
而且生成一个 Session id
,这个 Session id
将被在本次响应中返回给客户端保存,保存这个 Session id
的方式能够采用 Cookie
,若是客户端浏览器禁用了 Cookie
,通常这种状况下,会使用一种 URL
重写的技术来进行会话跟踪,即每次 HTTP
交互,URL
后都会被附加一个诸如 sid=xxxxxxxx
这样的参数,服务端根据此来识别用户Cookie
是否为空、Session
是否为 true
来判断用户是否能够登陆,只要构造一个 Cookie
或 Session
为 true
就能够绕过认证登陆Session
会话固定攻击
Session id
)的攻击手段Session id
,而后监听用户会话状态Session id
登陆站点Session id
得到合法会话Session id
的方式
XSS
Session id
在 URL
中,能够经过诱导用户去点击重置了 Session id
的 URL
Cookie
来存放 Session id
,可使用如下方法
Cookie
到浏览器
Cookie
document.cookie="sessionid=123"
XSS
攻击来达到目的HttpOnly
属性,但有少数浏览器存在漏洞,即便设置了 HttpOnly
,也能够重写 Cookie
,因此还须要其余验证方式,好比 User-Agent
、Token
等HTML
的 <META>
标签加 Set-Cookie
属性
HTML
文档中增长 <META>
标签的方式来设置 Cookie
<META>
标签的处理目前还不能被浏览器禁止Set-Cookie
的 HTTP
响应头部设置 Cookie
Web
服务器的响应中加入 Set-Cookie
的 HTTP
响应头部DNS
服务器Cookie
仿冒攻击
Cookie
中的某个参数来实现登陆其余用户HTTPS
,前端加密,用密文去后台验证,能够利用 smart decode
进行解码手机号
篡改
邮箱或者用户
篡改
Referer
和 POST
中的普通用户改为 admin
admin
的密码修改页面,利用逻辑漏洞获取超级权限订单ID
篡改
订单ID
查看是否能查看其余订单信息商品编号
篡改
goods_id
(商品编号)为高积分的商品编号用户ID
篡改
用户ID
,修改 ID
查看是否能查看其余用户信息简历ID
金额
篡改
商品数量
篡改
JS
脚本限制,未在服务端校验用户提交的数量,经过抓包修改商品最大限制数量,即将请求中的商品数量改成大于最大数值限制,查看是否能完成修改后的数量完成业务流程验证码
)
phone=18888888888abc
验证码
及 token
)
verifycode=xxxx
,或者由 md5
加密后显示,解密便可(同理,有的时候输入用户名,抓包能够看到返回的手机号等其余信息)token
),先记录下这个加密字符串URL
后新增了一个加密验证的字符串token
Unix时间戳 + md5
md5
加密字符串1491293277
(10位),能够判断为 Unix时间戳
Unix时间戳
进行暴力破解,便可得到重置密码的连接token
只差 1-2
,并且能够猜想出为服务器时间token
,就能够构造出未知账号的密码找回连接username
改成他人用户名,提交后成功修改他人密码token
token
,可是依然能够直接修改 用户ID
进而修改他人密码token
token
,重置密码Cookie
内从 JSESSIONID
开始的内容替换至正常流程的发生验证码包内,同时替换本身接受验证码的邮箱,提交Cookie
、他人账号、本身邮箱替换至验证验证码模块,提交(不用在乎返回是否错误)token
模块,提交获取 token
token
和上面的内容替换至最后的重置密码模块,提交成功修改密码URL
连接中有 uid
参数,修改 uid
参数为他人的,便可实现将他人的帐户绑定上本身的手机,以后经过手机来修改密码userId
为他人,修改 mobilePhone
为本身的手机,便可实现将他人的帐户绑定上本身的手机,以后经过手机来修改密码URL
连接中修改 用户ID
为他人,邮箱不变,以后经过连接能够将他人帐户绑定为本身的邮箱,以后经过邮箱找回密码Uid
参数,修改成他人,便可修改其余用户密码Session id
、用户ID
修改成刚刚从其余用户名抓包得到的内容,提交这个包,便可成功修改他人密码F12
审查元素,修改本身的手机为他人手机,提交成功修改他人手机(也能够抓包修改)URL
,记录下来USERNAME_COOKIE
为其余用户(有可能会通过编码,好比 base64
),提交便可修改其余用户密码step
参数,能够修改这个参数为最后一步(好比:5),提交即可略过以前的步骤Burpsuite
中能够选取 do intercept --> response to this request
)URL
跳转到验证身份页面,连接中就有一段加密字符串,记录下,随便输入验证码,抓包,修改包中数据为正常流程下的数据,替换加密字符串,Forward
发送,就能够绕过验证码,直接修改密码type
之类的参数,也能够尝试修改,有 email
之类的参数,能够尝试删除内容),发送修改后的包,手机成功接收验证码type
之类的参数,能够继续尝试修改,发送就能够成功修改密码txt
文件,导入 Sqlmap
中跑一遍token
生成
token
生成可控
URL
连接中的加密字符串同样,因此能够利用这个加密字符串User
为其余用户(User
有可能会使用 md5
加密),发送,就能够返回其余用户的加密字符串URL
连接,加入加密字符串,能够直接绕过验证码,重置密码admin
,至关于修改了密码session
覆盖
session
覆盖致使了,这个连接成为了修改他人密码的连接,成功修改他人密码Burpsuite
Hydra
用户名
(邮箱等等)type
之类的参数用于判断执行顺序,可直接更改跳转至支付成功页面业务逻辑漏洞终总结
JS
了解(JS
中可能会存在信息泄漏)特殊参数
,颇有可能就是这些 特殊参数
决定了业务步骤数字 + 字母
尝试绕过HTTP/HTTPS
请求分析,关注重点在各类能够用于区别的参数,绕过必要验证,跳过业务步骤