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

Jcms越权导致数据篡改和注入

2014-08-27 16:01

大汉修补漏洞做了不少努力,修补了很多问题,但是还有不少的问题,用户量大慢慢来吧,一起努力吧。

clipboard.png

漏洞证明:

数据篡改:

clipboard.png



//源文件

setup/opr_initjcmsdb.jsp



//程序开始执行,没有任何权限限制,直接能够访问。

//获取动态参数,没有任何过滤,直接传入参数。

String main_ip = Convert.getParameter( request,"jcms_ip");

String main_port = Convert.getParameter( request,"jcms_port");

String main_dbname = Convert.getParameter( request,"jcms_dbname");

String main_user = Convert.getParameter( request,"jcms_user");

String main_pwd1 = Convert.getParameter( request,"jcms_pwd1");

//数据库类型s

String dbtype = Convert.getParameter( request,"dbtype");

int ndbtype = Convert.getStringValueInt( dbtype );

String appname = Convert.getParameter( request,"appname","jcms");

String strRealPath = application.getRealPath("");



//创建表,初始化数据 ,能够导致关键信息被覆盖。

jcms.sys.Install install = new jcms.sys.Install( strRealPath );

boolean bl = install.setDBServer( ndbtype,main_ip,main_port,main_dbname,main_user,main_pwd1,appname );

String strMessage = "";

//......

strMessage = "创建失败,请查看日志文件!";

//......



SQL注入:

clipboard.png



//菜单管理页面

setup/opr_updatenewmenu.jsp



//程序开始执行,没有任何权限限制,直接能够访问。

//获取动态参数,没有任何过滤,直接传入参数。

String action = request.getParameter("action");

String menuid = Convert.getParameter(request,"vc_menuid");

String menuname = Convert.getParameter(request,"vc_menuname");

String menuurl = Convert.getParameter(request,"vc_menuurl");

String c_grade = Convert.getParameter(request,"c_grade","2"); //默认2

String parentid = Convert.getParameter(request,"vc_parentid");



//后面开始各种插入查询数据库语句,能够直接控制数据库。

if("do".equals(action)){

//插入 admin的菜单 webid=0

strSql = "INSERT INTO merp_pub_usermenu (vc_userid,vc_menuid,vc_menuname,vc_menuurl,c_grade,"

+" i_order,vc_parentid,c_enable,n_visitnum,i_webid) VALUES ("

+"'admin','"+menuid+"','"+menuname+"','"+menuurl+"','"+c_grade+"',"

+"99,'"+parentid+"','1',0,0)";

Manager.doExcute(strAppID,strSql);

//插入 def的菜单 webid=0

strSql = "INSERT INTO merp_pub_usermenu (vc_userid,vc_menuid,vc_menuname,vc_menuurl,c_grade,"

+" i_order,vc_parentid,c_enable,n_visitnum,i_webid) VALUES ("

+"'def','"+menuid+"','"+menuname+"','"+menuurl+"','"+c_grade+"',"

+"99,'"+parentid+"','1',0,0)";

Manager.doExcute(strAppID,strSql);

//......

//取出已设置菜单的用户

strSql = "select distinct vc_userid from merp_pub_usermenu where i_webid ="+webid+" ";

//......

//程序中已经提示删除本文件了,但是基本都没有删除。

out.println("<br><font color=red>执行完毕,请立刻删除本文件[./setup/update/opr_updatenewmenu.jsp]!</font><br>");

修复方案:

限制访问权限,添加过滤机制,注意加强新版本的权限验证问题。卖这么多套产品,有这么多用户了,多增加一些安全投入吧。

知识来源: www.wooyun.org/bugs/wooyun-2014-062300

阅读:94906 | 评论:0 | 标签:注入 cms

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

“Jcms越权导致数据篡改和注入”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

关注公众号hackdig,学习最新黑客技术

推广

工具

标签云