大家好,我是Shawar Khan。自我前次写作以来现已时隔好几个月了,这段时刻我一向忙于不同的测验方针。最近我在某个方针中发现了一个风趣的XSS缝隙,经过该缝隙我能够将我的权限提高为办理员用户。
XSS是一个十分风趣的缝隙,在发现它之后,你能够直接与运用程序进行通讯,而无需忧虑同源战略。一切都在咱们的操控之中,大部分维护都被打破了。
办理员用户具有运用程序的更高权限能够对恣意用户履行增加/删去/修正操作。而我终究得以提高到办理员权限便是经过XSS做到的。每逢我发现XSS,我都会测验运用一些共同的 *** 来运用它们。令牌抓取,CSRF维护绕过或是抓取cookie,现在看来现已显得有些过期。
在我的测验期间,在用户配置文件页面我发现了多个XSS缝隙。每个注册用户都有不同的配置文件页面,如“https://www.site.com/users/username-here”。
发现根据 Angular *** 的XSS:
这是一个一切特权用户均可拜访包括用户帐户名和姓的页面。运用简略的测验探针,如“>并没有显现任何成果,所以这说明该运用已做了恰当的XSS维护。一切特别字符都被正确过滤,这引发了我的另一考虑,为什么不测验获取根据Angular *** 的XSS呢?转到“ settings”并将帐户名更改为“{{alert(1)}}”。
因而,我以不同的特权用户身份测验了相同的内容,并导航到了我的配置文件/users/username_page(任何用户均可拜访)触发payload。
当测验提高权限时,你的首要方针是寻觅能够修正你人物的功用或是约请你进入不受限区域的功用。在我的比如中,办理员用户有权修正/增加用户。
在我的比如中,我有一个测验办理员帐户来测验这些问题,所以我知道要增加一个新的办理员特权用户需求仿制什么恳求。在没有拜访权限的情况下,你只需测验经过发送document.body.innerHTML的输出来获取办理帐户的源码,并测验获取有关内部功用的信息。能够运用XSSHunter和其他一些东西来获取此类信息。
怎么供给 payload ?
无论怎么,用户名字段的长度约束很短,因而无法在该字段中编写整个缝隙运用代码。用户名还会将条目增加到配置文件页面,此外它也会显现为歹意内容。相同受限于长度,无法注入引证外部JavaScript的脚本符号。
与平常相同,我经过window.name供给payload。我总是经过window.name供给payload,由于它没有运用约束,加载咱们的缝隙运用代码的payload约束为20个字符,由于咱们将只加载给定的payload并将其供给给eval(atob(top.name))运用这种技能的另一个优点是,能够绕过绕过许多歹意关键字的验证查看,由于咱们的首要缝隙运用代码不会被输入到易受进犯的运用程序中。因而简而言之,咱们的进犯代码不会被验证和查看。
因而,能够经过运用window.open(url,”window name here”) 翻开一个URL来设置window name,咱们将缝隙运用代码设置为base64。因而,经过调用window.name,它将回来咱们的缝隙代码,这些代码将由eval()履行
定位用户修正功用:
此功用发现于办理用户门户,而且更高权限用户能够恣意更改运用程序中用户的数据和权限。这里有不同的选项,如电子邮件更改和复选框,以承认用户是否具有更高的权限。经过设置参数“csc=1”,用户将被颁发full权限,但此操作只能由办理员用户履行。假如仅检索源码,则能够经过履行源码检查来了解哪些端点选用哪些参数来映射一切功用。
以下是将用户修正为办理员和彻底权限用户的恳求:
POST /users/attackers-username HTTP/1.1
Host: vulnerablesite.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: application/json, text/plain, */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 141
_method=PUT&_token=CSRF_TOKEN_HERE&name=USERNAME&email=USER_EMAIL&phone=&csc=1
为了提高咱们的权限,应该再现以上恳求,这样当更高权限用户拜访咱们的缝隙运用代码时,咱们的用户将被修正。
编写缝隙运用代码:
咱们首先要检索的是CSRF令牌,这样咱们就能够验证恳求。有时它会出现在cookie中,因而从document.cookie中检索它十分简单,但在本例中,是在一个meta符号中找到的:[1][2]黑客接单网