1、验证码暴力破解

手机或者邮箱验证码可枚举破解。

参考案例:http://wooyun.jozxing.cc/static/bugs/wooyun-2013-029132.html

 

2、验证码直接返回

服务器直接将验证码返回,例如某APP找回密码返回包。

另外还有返回在Cookie中,例如

另外还有可能在返回的页面源码中,需要注意提交的每一个参数。

参考链接:http://wooyun.jozxing.cc/static/bugs/wooyun-2012-04728.html

密码找回问题的答案隐藏在HTML中。

 

3、跳过验证步骤

输入重置账号后,跳过验证步骤,直接访问重置密码页面。

参考案例:http://wooyun.jozxing.cc/static/bugs/wooyun-2013-042404.html

 

4、利用邮箱、手机号绑定

绑定用户邮箱的时候,可以通过修改uid将其他用户的邮箱绑定为自己的,从而任意重置用户密码。

参考案例:http://wooyun.jozxing.cc/static/bugs/wooyun-2012-08307.html

 

5、三方登录绑定其他用户

例如绑定微博账号的时候,先登录微博并且获取code,然后绑定code和UID的请求如下:

thirdPartyType=1&uid=60570181&state=test&code=fb3a6454736e15534486c5a214067943

通过修改uid可以绑定将自己的微博绑定到其他用户账号,然后通过微博登录就可以登录任意用户账号。

 

6、没有验证验证码接受手机号是否与username或者session一致

例如发送验证码的请求如下:

username=***&mobilePhone=***&randcodeAjax=6119

没有验证username是否和mobilePhone一致,通过修改mobilePhone为自己的手机号接受验证码。

 

7、本地验证绕过

客户端在本地进行验证码是否正确的判断,而该判断结果也可以在本地修改,最终导致欺骗客户端,误以为我们已经输入了正确的验证码。

例如将返回包中的0修改为1即可绕过验证。

 

8、重置密码最后一步uid或者username可控

重置密码最后一步,重置账户通过用户传递的uid或者username控制,导致修改该UID即可重置其他用户密码。

 

9、个人中心修改密码逻辑错误

当前密码的校验和修改新密码是单独分开的两个包。所以可以理解为没有校验当前密码。

修改密码的请求中如下:

ssouid=***&passwd=***

修改该ssouid即可。

 

10、利用session重新绑定用户

重置密码最后一步是通过session获取用户名,然后再重置。而用户名是在重置密码第一步时与session进行绑定,那么如果重置密码的最后一步程序并没有验证该用户是够走完了验证流程,那么就可以通过重新绑定session为其他账号从而达到任意密码重置目的。

参考我之前提的案例:http://wooyun.jozxing.cc/static/bugs/wooyun-2015-0114804.html

 

11、接口暴露导致登录任意账户

测试过程中发现***.com/uc/md5Encode?encodeStr=这个连接会返回一个加密串pkey,而测试使用微博账号登录时,微博登录成功后,接口会返回的Oauth Code

然后站点会跳转到

***.com/api/thirdpart/backinvoke.shtm?thirdPartyType=1&state=test&code=ab8be935aba7d6857****64523524218

会返回一个自动提交的表单,内容如下:

可以看到这个是防篡改了做了校验,如果我修改该username的值那么pkey的值就不匹配,无法成功登录。

而我们知道这个暴露了一个加密接口,我们组合上述字段的值提交给该接口发现pkey是吻合的。这就意味着防篡改验证失效,我可以通过修改username和该pkey值登录任意账户。

 

12、重置密码Token可控

重置密码最后一步的URL中的Key在之前的步骤中可以获得。

参考案例:http://wooyun.jozxing.cc/static/bugs/wooyun-2014-058210.html

http://wooyun.jozxing.cc/static/bugs/wooyun-2015-094242.html

 

13、去掉验证参数绕过验证

邮件系统取回密码功能设计逻辑错误,存在认证绕过漏洞,通过抓取数据包可通过修改报文,将找回问题答案参数删除后,直接进行对密码更改

参考案例:http://wooyun.jozxing.cc/static/bugs/wooyun-2014-088927.html

 

14、邮箱找回Token可预测

参考案例:http://wooyun.jozxing.cc/static/bugs/wooyun-2015-090226.html

token是当前的时间

参考案例:http://wooyun.jozxing.cc/static/bugs/wooyun-2012-08333.html

token为时间戳MD5值

参考案例:http://wooyun.jozxing.cc/static/bugs/wooyun-2013-027138.html

token为md5($code.$email)

 

15、邮箱找回Token未与用户ID绑定

参考案例:http://wooyun.jozxing.cc/static/bugs/wooyun-2013-024956.html

虽然有Token,但是没有和用户绑定,仍然可以通过修改username重置其他用户密码。

 

16、绑定手机和邮箱处CSRF

没有Token和验证码

参考案例:http://wooyun.jozxing.cc/static/bugs/wooyun-2013-028893.html

 

 

漏洞描述

ActiveMQ 是 Apache 软件基金会下的一个开源消息驱动中间件软件。Jetty 是一个开源的 servlet 容器,它为基于 Java 的 web 容器,例如 JSP 和 servlet 提供运行环境。ActiveMQ 5.0 及以后版本默认集成了jetty。在启动后提供一个监控 ActiveMQ 的 Web 应用。

漏洞原理其实非常简单,就是fileserver支持写入文件(但不解析jsp),同时支持移动文件(MOVE请求),可以MOVE到admin目录下直接GETShell。

 

影响版本

Apache Group ActiveMQ 5.0.0 – 5.13.2

 

CVE编号

CVE-2016-3088

 

复现过程

下载地址:http://archive.apache.org/dist/activemq/5.10.1/apache-activemq-5.10.1-bin.tar.gz

解压:tar -xzf apache-activemq-5.10.1-bin.tar.gz

启动:./activemq start

[root@server120 conf]# netstat -antlp | grep 8161

tcp        0      0 :::8161                     :::*                        LISTEN      23502/java

默认认证已经开启,配置文件jetty.xml

    <bean id="securityConstraint" class="org.eclipse.jetty.util.security.Constraint">

        <property name="name" value="BASIC" />

        <property name="roles" value="user,admin" />

        <!-- set authenticate=false to disable login -->

        <property name="authenticate" value="true" />

    </bean>

authenticate设置为false,可以未授权访问。

用户名密码的配置文件jetty-realm.properties

默认为:

admin: admin, admin

user: user, user

这里必须将admin账户修改为强密码。否则就可以利用未授权访问或者默认弱密码上传Webshell。

 

ActiveMQ 中的 FileServer 服务允许用户通过 HTTP PUT 方法上传文件到指定目录,用户可以上传文件到指定目录,该路径在 conf/jetty.xml 中定义

                        <bean class="org.eclipse.jetty.webapp.WebAppContext">

                            <property name="contextPath" value="/fileserver" />

                            <property name="resourceBase" value="${activemq.home}/webapps/fileserver" />

                            <property name="logUrlOnStart" value="true" />

                            <property name="parentLoaderPriority" value="true" />

                        </bean>

 

上传SHELL

这里我随便上传一个文件

[root@server120 apache-activemq-5.10.1]# cat webapps/fileserver/1.jsp

hehe123

这里首先爆上传目录

可以看到上传目录为/tmp/apache-activemq-5.10.1webapps/fileserver/

然后PUT上传cmd.jsp

fileserver目录是不解析jsp的,因为刚才通过爆路径获取到了绝对路径,这里MOVE到admin目录下。

然后执行命令

 

上传公钥

生成公钥并上传

然后移动到authorized_keys

 

上传定时任务

[root@server120 ~]# cat /tmp/xxoo.txt^M

123

 

修复建议

ActiveMQ在5.12.x~5.13.x版本中,已经默认关闭了fileserver这个应用(你可以在conf/jetty.xml中开启);

在5.14.0版本以后,彻底删除了fileserver应用。