Web漏洞(六)权限相关漏洞

权限相关漏洞

权限缺失

Flash跨域访问

漏洞描述

跨域:协议,域名,端口三者为域,既三者之间有一个不同即为跨域。

flash访问另一个域的数据,flash player 会自动从该域加载策略文件(crossdomain.xml),如果访问的数据所在的域名在策略文件中设置过允许访问,则该域的数据即可正常访问。

【低危】allow-access-from属性为*,allow-http-request-headers-from属性为*,site-control标签的permitted-cross-domain-policies属性为 all

【中危】可获取数据

漏洞挖掘

1)目录扫描,寻找crossdomain.xml文件,查看详细配置信息。

修复方式

1.禁止盲目反射Origin头,严格校验Origin头,避免出现权限泄露
2.不要配置Access-Control-Allow-Origin: null
3.HTTPS网站不要信任HTTP域,不要信任全部自身子域,减少攻击面
4.不要配置Origin:* 和Credentials: true,增加Vary: Origin头

jsonp跨域请求

当Ajax跨越请求时,json数据会被浏览器禁用。原因是浏览器禁止远程加载Json数据。Jsonp可以解决这一难题。Jsonp实现的前提:浏览器允许跨越加载同源数据。即在JavaScript脚本中发送请求,就可以远程加载js格式数据。

请求原理:

(1)异步请求的时候,加上一个名为callback的回调函数

(2)在接口中,将返回的json格式数据,伪装(包装)成js脚本格式。

(3)得到js格式数据后,提取里面的json数据。

漏洞描述

允许使用jsonp跨域请求
【高危】可获取敏感数据

【中危】可获取普通数据

还有一个JSONP劫持,实质上算是一种读类型的CSRF,在恶意的网页中构造恶意的JS代码,当合法用户点击该网页,由于目标站点存在JSONP劫持漏洞的接口,因此会将用户的该接口对应的信息劫持,并将其发送到攻击者的服务器。获取用户在其他网站的敏感信息。

漏洞挖掘

1)寻找script类型的并且包含jsonp特征的资源

  • 谷歌语法: site:target.com inurl:?callback
  • 浏览器-开发者工具-网络-搜索关键词(json / jsonp / callback)

修复方式

1.对referer字段进行验证
2.增加CSRF Token

CORS(跨资源共享)

漏洞描述

跨域资源共享(CORS)是一种放宽同源策略的机制,它允许浏览器向跨源服务器,发出 XMLHttpRequest 请求,从而克服了 AJAX 只能同源使用的限制,以使不同的网站可以跨域获取数据,目前已经被绝大多数浏览器支持,并被主流网站广泛部署使用。跨域资源共享 CORS 漏洞主要是由于程序员配置不当,对于 Origin 源校验不严格,从而造成跨域问题,攻击者可以利用 CORS 错误配置漏洞,从恶意网站跨域读取受害网站的敏感信息。

【高危】可获取敏感数据

【中危】可获取普通数据

漏洞挖掘

1)一般情况下,修改请求包 Header 中的 Origin 字段为任意域名或者为 null 的方式去检测该漏洞是否存在。

修复方式

1.禁止配置 “Access-Control-Allow-Origin” 为 “*” 和 “null”;
2.严格校验 “Origin” 值,避免出现权限泄露;
3.避免使用 “Access-Control-Allow-Credentials:true”;
4.减少 “Access-Control-Allow-Methods” 所允许的方法;

未授权访问

漏洞描述

高危漏洞,未授权访问漏洞,是在攻击者没有获取到登录权限或未授权的情况下,或者不需要输入密码,即可通过直接输入网站控制台主页面地址,或者不允许查看的链接便可进行访问,同时进行操作。

漏洞挖掘

通过抓包工具burpsuite、fiddler等,将抓取到的功能链接,在其他浏览器进行打开。

修复方式

加入用户身份认证机制或token验证,对系统的功能点增加权限控制。
1.采用Java过滤器技术,对/pages下所有的URL进行登录状态检查,通过session.getAttribute()方法从session中获取登录成功时存入的session中的身份标识,判断客户端传递过来的身份标识是否与session中保存的一致,不一致则跳转到登录页面
2.通过会话获取用户身份信息,进行权限判断等操作

权限篡改

任意用户密码修改/重置

漏洞描述

高危漏洞,可通过篡改用户名或ID、暴力破解验证码等方式修改/重置任意账户的密码。

漏洞挖掘

1)如果输入新密码的接口可以直接访问,那么在未知原始密码的的情况下即可直接修改密码,通常知道了他人的用户名即可任意修改他人的密码。

2)如果系统未校验修改密码的用户身份,那么在提交修改密码请求时,攻击者通过输入密码,将用户名或者用户ID修改为其他人的,即可成功修改他人的密码。

3)当修改密码时系统需要电子邮件或者手机短信确认,而应用程序未校验用户输入的邮箱和手机号,那么攻击者通过填写自己的邮箱或手机号接收修改密码的链接和验证码,以此修改他人的密码。

修复方式

1. 一次性填写校验信息(原始密码、新密码等)后再提交修改密码请求。
2. 对客户端提交的修改密码请求,应对请求的用户身份与当前登录的用户身份进行校验,判断是否有权修改用户的密码并对原始密码是否正确也进行判断。
3. 不应将用于接收验证信息的手机、邮箱等信息全部明文传到客户端,应对手机、邮箱等信息进行屏蔽处理,或不将此类信息返回到客户端。
4. 对原始密码进行了验证的情况下,限制输入原始密码的错误次数,防止攻击者暴力破解原始密码。
5. 重置密码链接中的关键信息应随机化,不可预测(例如token机制),且禁止将关键信息返回到客户端。

SSO认证缺陷

漏洞描述

单点登录SSO(Single Sign-On)是一种统一认证和授权机制,指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即通过一个应用中的安全验证后,再访问其他应用中的受保护资源时,不再需要重新登录验证。就是一个帐号,多个系统都能使用,且只要登录第一个系统,待认证通过后,其它系统可以直接使用,而不需要再次登录.

高危漏洞,SSO认证存在缺陷,可越权登录他人账户,可导致用户在单点登录之后任意登录其他系统和其他用户账号信息。

漏洞挖掘

抓包寻找认证共享的参数,尝试修改,看是否能登陆其他账号

修复方式

1.服务器端必须对每个页面链接进行权限判断
2.用户登陆后,服务器端不应再以客户端提交的用户身份信息为依据,而应以会话中服务端保存的已登陆的用户身份信息为准
3.页面提交的资源标志与已登陆的用户身份进行匹配比对,然后判断其对当前链接是否有权限
4.必须在服务器端对每个请求URL进行鉴权,而不能仅仅通过客户端的菜单屏蔽或者按钮Disable来限制

越权

漏洞描述

高危漏洞,越权漏洞是我们在测试过程中遇到比较多的漏洞,我们可以这样来理解越权漏洞,一个用户A一般只能够对自己本身的信息进行增删改查,然而由于后台开发人员的疏忽,没有在信息进行增删改查时候进行用户判断,从而导致用户A可以对其他用户进行增删改查等等操作。

漏洞挖掘

1)抓包修改参数

2)F12访问接口

修复方式

1.服务器端必须对每个页面链接进行权限判断
2.用户登陆后,服务器端不应再以客户端提交的用户身份信息为依据,而应以会话中服务端保存的已登陆的用户身份信息为准
3.页面提交的资源标志与已登陆的用户身份进行匹配比对,然后判断其对当前链接是否有权限
4.必须在服务器端对每个请求URL进行鉴权,而不能仅仅通过客户端的菜单屏蔽或者按钮Disable来限制

Cookies伪造

漏洞描述

高危漏洞,Cookie内容可以被预测,能过通过伪造cookie内容绕过认证或授权管理。

漏洞挖掘

1)正常登陆,获取Cookie,看Cookie内容是否可被预测,预测Cookie值,第二步替换Cookie登陆

修复方式

设置的Cookie值为不可预测,加密。

会话变量可控

漏洞描述

中危漏洞,会话中的参数可由客户端控制,导致客户端可以控制并修改会话参数

漏洞挖掘

直接抓包修改会话中的参数,看是否能修改会话

修复方式

1.避免会话中字段是由可控参数生成的

跨站请求伪造(CSRF)

漏洞描述

跨站请求伪造,是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨站脚本(XSS)相比,XSS利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。应用服务存在功能校验缺陷,导致攻击者可以诱使受害者发送恶意请求的请求达到恶意攻击。

【高危】核心系统关键操作

【中危】普通系统关键操作

漏洞挖掘

1)打开非静态操作的页面,抓包查看是否存在token,如果没有token,直接请求这个页面,不带referer,如果返回的数据是一样的话,那说明很有可能有CSRF漏洞了。

2)使用扫描工具进行漏洞扫描

修复方式

1.加验证码
2.尽量使用POST,少用GET
3.验证HTTP Referer字段
4.在请求地址中添加token并验证

Web漏洞(七)综合利用

posted @ 2022-04-15 13:45  九天揽月丶  阅读(522)  评论(0编辑  收藏  举报