本章节包含认证相关和错误的业务逻辑实现
未授权漏洞
- 案例1:【web】Dynamicweb安装完毕后,依然可以访问setup页面去增加管理员账号,登陆后台后,可以上传webshell实现RCE
- 案例2:【android】ES文件管理器监听了0.0.0.0:59777端口,接口格式为JSON,支持文件上传、下载、列目录等等。由于没有做权限管理,而且可以在本机以外访问,导致认证失效问题
- 案例3:【iot】Trustwave SWG 允许用户上传SSH key,而且接口没有认证
- 案例4:【android】FMMX1软件从/mnt/sdcard获取配置文件、解析服务器地址;更新服务器地址、执行指令的intent都没有保护,可以被其他APK调用;服务端返回的数据也没有校验。结合这几个漏洞可以实现mitm,控制手机
- 案例5:【web】对于开启缓存配置的路径,Cloudflare不会进行URL标准化,比如用户配置了
/share/开启缓存,则/share/%2F..%2Fapi/auth/session?cachebuster=123会被CF全局缓存。当用户访问后,任何人再次访问就会看到一样的页面,实现敏感信息窃取
源IP访问限制绕过
- 增加referer绕过访问限制
- 增加
X-forwarded-for、X-remote-IP、X-originating-IP、x-remote-addr、x-client-ip等可能的请求头,并将源地址设置为127.0.0.1或者其他白名单IP来绕过认证
伪造认证信息
- 案例1: intune MDM准入信息可以伪造,这是个通用问题
- 案例2: Moodle的PHP SESSION存储格式是在PHP序列化基础上用
|做了分割,只要能控制一个变量,就可以篡改$_SESSION、实现会话控制。由于用户登出逻辑实现有问题,执行登出后最后一个$_SESSION对象内容没有销毁,此时带上cookie请求就可以以最后那个用户的身份登录
越权漏洞
- 案例1:【web】yahoo notepad的笔记列表接口,传入用户名返回笔记列表。通过抓包发现用户名是加密的,e.g
fziy4wzxr41k4qwsgumu2v2qymynzat6kclqpwmc,但实际上传入明文用户名也能返回结果,进一步测试发现这个接口可以越权 - 案例2:【web】DeskPro可以未授权开启JWT认证,接口还会直接返回JWT secret,通过这个接口可以获取管理员身份,并进一步通过反序列化实现后台RCE
待补充
错误的校验逻辑
- 更换请求方法绕过
- 伪造URL参数绕过认证
- 绕过JWT校验
- Android构造包名绕过认证
- 直接指定路径绕过,比如
/admin禁止访问,/admin/xxx.php可能直接能访问
待补充
不安全的共享内存
- 案例1: Synaptics创建另一个内存映射,通过winobj查看未设置ACL。检查内存的内容后,发现有一个地方会执行插件注册命令,通过构造内存结构可以实现任意命令执行
- 案例2: Cylance防护程序通过IsEnabled()函数判断是否开启防护,是否开启存储在两个内存变量里。由于Cylance没有对内存修改做防护,启动另一个SYSTEM进行曲修改.NET managed heap就可以禁用防护
待补充