0x00 前言
为了积累在工作中碰到的一些漏洞以及在一些文章中看到的一些漏洞,决定采用文本的方式记录下来,一来方便自己查看,二来也可以方便自己以后写报告。
0x01 web漏洞
1.1 SSRF
1.1.1 漏洞描述
1.1.2 风险分析
1.1.3 风险等级
1.1.4 修复建议
1.2 CSRF
1.2.1 漏洞描述
CSRF的形成是因为攻击者较容易猜测某些Web应用一个特定敏感操作的所有细节。利用浏览器能保存会话cookie等凭证,并会自动发送的特点,攻击者可以创建一个恶意web页面生成伪造请求,再利用社会工程学的手段诱惑受害者进行操作,从而在被攻击Web应用上伪装成受害者进行特定敏感操作,如修改密码、通信方式甚至转账等。
1.2.2 风险分析
可能会窃取或操纵客户会话和 cookie,它们可能用于模仿合法用户,从而使黑客能够以该用户身份查看或变更用户记录以及执行事务。
1.2.3 风险等级
中危
1.2.4 修复建议
避免 CSRF 攻击,每个请求都应该包含唯一标识,它是攻击者所无法猜测的参数,并且该参数不存在于cookie之中。可以在HTTP请求中以参数的形式加入一个随机产生的token,并在服务器端验证该token。若请求中没有token或token内容不正确,便废弃请求。
1.3 未授权访问
1.3.1 漏洞描述
未授权访问指需要安全配置或权限认证的授权页面可以直接访问。
1.3.2 风险分析
1.3.3 风险等级
为需要安全配置或权限认证的地址、授权页面存在缺陷,导致其他用户可以直接访问,从而引发重要权限可被操作、数据库、网站目录等敏感信息泄露
1.3.4 修复建议
未授权访问页面做Session认证,并对用户访问的每一个URL做身份鉴别,正确地校验用户ID及Token
1.4 微信公众号秘钥泄露
1.4.1 漏洞描述
可以通过反编译APK文件或者对APK文件进行逆向分析查看到微信的AppID和AppSecret。Appsecret 是应用接口使用密钥,泄漏后将可能导致应用数据泄漏、应用的用户数据泄漏等高风险后果;存储在客户端,极有可能被恶意窃取(如反编译获取Appsecret)
1.4.2 风险分析
使用这对AppID和AppSecret,可以在“微信公众平台接口调试工具”上获取access_token,然后利用这个access_token,可以进一步获取用户信息、给用户发送各类信息等
1.4.3 风险等级
低
1.4.4 修复建议
删除客户端的Appsecret ,如果确实需要,可以将Appsecret、用户数据(如access_token)放在App云端服务器,由云端中转接口调用请求
1.4.5 漏洞案例
通过逆向分析得到“大闹三国”的 微信公众号账号AppID和AppSecret:
获取公众号access_token
获取公众号粉丝的openid
获取公众号粉丝的昵称、地区等其他信息
0x02 逻辑漏洞
2.1 短信炸弹
2.1.1 漏洞描述
2.1.2 风险分析
2.1.3 风险等级
2.1.4 修复建议
2.1.5 漏洞案例
【案例一】
登陆处,这⾥对发送验证码做了两个限制:
js做的限制
1.限制发送周期
2.需要填写⼿机号和正确的验证码
这⾥的两个限制并不能杜绝短信炸弹:
1.在js⾥限制发送周期是没⽤的,包重放就绕过了
2.验证码在⽣命周期内可以反复使⽤
2.2 登录任意账户
2.2.1 漏洞描述
2.2.2 风险分析
2.2.3 风险等级
2.2.4 修复建议
2.2.5 漏洞案例
【案例一】
【⽤户注册界⾯】
在输⼊⼿机号后,⿏标焦点转移到其它输⼊框,此时⽹⻚会发送⼀个ajax请求,验证⼿机号是否注册:
⼿机号已注册返回flag为0,未注册flag为1,可以burp暴⼒跑出已注册⼿机号
【登陆处】
1.先输⼊⾃⼰的⼿机号,接收验证码
2.替换要登录的⼿机号
3.将⾃⼰⼿机号收到的验证码输⼊,即可登录他⼈账号
有两种登陆⽅式,我们选⼿机验证码登陆
这⾥填我们⾃⼰的⼿机号,收到验证码后,把⼿机号改为前⼀步跑出的已注册⽤户,验证码⽤我们收到的,成功登陆:
2.3 任意用户注册
2.3.1 漏洞描述
2.3.2 风险分析
2.3.3 风险等级
2.3.4 修复建议
2.3.5 漏洞案例
【案例一】
如果输⼊未注册的⼿机号,登陆,系统会默认这次登陆⾏为等同为注册
登陆前,显⽰为未注册
登陆后,⼿机号已注册,⼿机号原主⼈⽆法注册了
2.4 越权访问
2.4.1 漏洞描述
2.4.2 风险分析
2.4.5 漏洞案例
【案例一】
对一个网站做测试的时候发现了这样一条请求:
一开始的想法是变为 GET 请求(可行),然后增加 JSONP 劫持的回调参数。。。(失败),之前也有人问我怎么去做参数字典的收集:
A. 注意网站参数的命名方式
大写、英文
B. 返回变参数(注意值都为 B 用户 也就是你需要准备两个用户)
上面所述的返回信息中包含了很多“参数”,可生成如下:
userid=B 用户 id
login=B 用户名
password=B 用户密码
mobilenum=B 用户手机号
email=B 用户邮箱
C. 整合
A 规则+B 收集=C 整合
最后变成如下的字典:
USERID=B 用户 id
LOGIN=B 用户名
PASSWORD=B 用户密码
MOBILENUM=B 用户手机号
EMAIL=B 用户邮箱
然后 Burp Intruder 模块开启,导入字典(这里将参数设在 POST 请求正文),Start Fuzz:
测试结果发现使用 LOGIN 参数可以成功的从 A 用户的个人信息越权获取到 B 用户的个人信息~
0x03 APP漏洞
0x04 主机漏洞
0x04
###