|
网站首页
|
新闻中心
|
系统安全
|
网络安全
|
安全技术
|
下载中心
|
安全365社区
|
首页
安全动态
IT新闻
安全人物
本站动态
漏洞公告
病毒警报
木马预警
流氓软件
漏洞分析
入侵检测
升级补丁
安全配置
信道安全
设备安全
协议安全
WEB安全
病毒分析
木马研究
脚本注入
后门探讨
技术应用
数据安全
企业专区
收藏本站
设为首页
会员登录:
站内搜索:
新闻中心
系统安全
网络安全
安全技术
下载中心
|
系统安全首页
|
漏洞分析
|
入侵检测
|
升级补丁
|
安全配置
|
凡人网络购物系统Jsp版漏洞分析
凡人网络购物系统Jsp版漏洞分析
作者:未知 文章来源:网络 点击数: 更新时间:2007-10-29 1:56:55
凡人
网络
购物
系统
Jsp版是网上少见的JSP开源的程序,说实话JSP的程序确实很少,
这套系统已经 被很多人改过了,所以只能用文件来试是不是这个
系统
,..数据库是ACCESS难得,以前学校写都是用SQL..所以JDBC那里很熟悉
这文章也没有投稿的价值.. 俺还有更好的文章投稿,所
正文:
现在虽然渗透的方法多彩多样,但是最具威胁最简单的还是injection攻击. 对于 injection
漏洞
的形成无非就是某某变量
没过滤或者过滤不严而已..
这几天一直在看凡人
网络
购物
系统
Jsp版的代码。 多少看出来点问题。这里共享下..
这套
系统
网上使用的并不是很多,但是大部分人喜欢改这套程序来用,所以我只是在笔记本上装了个tomcat环境来测试一下这个
漏洞
因为不投稿所以也没截图 只把
漏洞
代码简单说下
首先看一下就简单的JSP注射
漏洞
的形成,我从我们教材上随便找了一个后台登陆的代码来分析
现在的学校培训程序员只知道让写代码。对编码安全根本没有意识...
教材上的后台代码:
Statement stmt = conn.createStatement();
string checkUser = "select * from login where username =' "+userName + "' and userpassword ='"+userPassword + " ' ";
ResultSet rs = stmt.executeQuery(checkUser); //执行查询
if(rs.next())
response.sendRedirect("SuccessLogin.jsp");
else
response,sendRedirect("FailureLogin.jsp");
上边是一个正常的JSP登陆页面 . 但是userName跟userPassword都没有过滤直接就放到数据库中进行查询,存在典型的注射
漏洞
如果我们知道数据库里有个admin的用户 那么我们就可以用or'a'='a 或者 'or1=1/*进行登陆而不用输入密码登陆。
现在我们来看看凡人
网络
购物
系统
Jsp版的登陆页面login.jsp..代码如下,
<%@ page contentType="text/html;charset=GBK" language="java" import="java.sql.*,java.util.Date" errorPage="" %>
<jsp:useBean id="mdb" class="ckstudio.db.faq" scope="page"/>
<%
boolean foundeer=false;
String user_name,user_pass;
if(!foundeer){
if (session.getAttribute("user_name")==null){ //只判断是否为空,并未进行过滤
user_name=request.getParameter("user_name");
user_pass=request.getParameter("user_pass");
if(user_name==null || user_pass==null){
out.print("<font size=4 color=red>用户名和用户密码不能为空!</font>");
foundeer=true;
}
String sql="select * from member where user_name='"+user_name+"'";
ResultSet rs;
rs=mdb.executeQuery(sql);
以下省略
...
}
我们从
if (session.getAttribute("user_name")==null){
user_name=request.getParameter("user_name");
user_pass=request.getParameter("user_pass");
if(user_name==null || user_pass==null){
out.print("<font size=4 color=red>用户名和用户密码不能为空!</font>");
foundeer=true;
}
String sql="select * from member where user_name='"+user_name+"'";
ResultSet rs;
rs=mdb.executeQuery(sql);
这里可以看到, 只判断了user_name是否为空,并没有进行有效的过滤,导致注射
漏洞
的发生,如果让select成功,就能成功饶过验证. 算是一个典型的or 注入
先用or 1=1和or 1=2来测试是否存在注入点,我在本地测试是成功的..在本本上我没法截图 然后继续 or exists(select XX from XX)返回or 1=1的页面,这里没什么可说的... 不懂的可以去看鸡头的那个新or 注入 讲 的很明白的...
其实这太
系统
简直是漏洞百出,还一个跨站的
漏洞
,在留言那里限制是10个字符。但是我们可以本地写个表单来提交就可以成功跨站的,代码我就不发了。 稍微懂点JSP的都能看出来。
文章录入:郝丽 责任编辑:郝丽
上一篇文章:
全面禁止瑞星2008随机启动
下一篇文章: 没有了
【字体:
小
大
】【
发表评论
】【
加入收藏
】【
告诉好友
】【
打印此文
】【
关闭窗口
】
网友评论:
(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
Linux操作系统下的一些简
Linux操作系统网络服务器
Linux操作系统网络服务器
17点基础知识 教你详细
没有物理结点 改进无线网
杀毒软件网络防火墙一个
网络入侵四大主要途径及
抵挡DoS远程连接让网络更
1、基于Linux的网络安全
屏蔽网络设置小技巧 保
|
设为首页
|
加入收藏
|
联系站长
|
友情链接
|
版权申明
|
站长邮箱:
webmaster@anquan365.com
联系电话:86-10-67634029
Copyright © 2006-2008
www.anquan365.com
北京华安普特网络科技有限公司 版权所有