大汉jbook、jget、jvideo、source、jphoto和lm的通用越权漏洞

漏洞作者: wefgod

jbook=订阅系统(好像是)
source=数据源采集系统
jget=信息采集系统
jvideo=视频系统
jphoto=图片系统
lm=互动系统
大概就是这样。

详细说明:

某个同名文件虽然代码大同小异,但是都产生了同样的越权漏洞,可以重置这几个系统的安装目录相关配置信息。

漏洞证明:

[php]
<%
String strRealPath = application.getRealPath("");
//文件路径
String strDictionary = application.getRealPath("") +"/";

//构造上传类,传入上传的路径
CommonUploadFile upload = new CommonUploadFile(strDictionary);

//上传操作
boolean b = upload.uploadFile(request);
String jndi = upload.getFormValue( "jndi");
String product = upload.getFormValue( "product");
…………
……
String servername = upload.getFormValue( "servername");
servername = servername.toLowerCase();

//String jndi = upload.getFormValue( "jndi");
String adminpwd = upload.getFormValue( "adminpwd");
String debug1 = upload.getFormValue( "debug1");
int nDebug = Convert.getStringValueInt( debug1 );
//String dbtype = upload.getFormValue( request,"dbtype");
String dbtypename = upload.getFormValue( "dbtypename");
dbtypename = dbtypename.toLowerCase();

//获取系统参数
int b_email = Convert.getStringValueInt(upload.getFormValue("openmailbook"));
int b_mobile = Convert.getStringValueInt(upload.getFormValue("openmobilebook"));
int logsavedate = Convert.getStringValueInt(upload.getFormValue("logsavetime"));
String cleartime = Convert.getValue(upload.getFormValue("cleartime"));
String sysurl = Convert.getValue(upload.getFormValue("sysurl"));

//写sysconfig.xml配置文件
ConfigService configService = new ConfigService();
SysConfigEntity sysConfig = new SysConfigEntity();
sysConfig.setOpenmailbook(b_email);
sysConfig.setOpenmobilebook(b_mobile);
sysConfig.setLogsavetime(logsavedate);
sysConfig.setCleartime(cleartime);
sysConfig.setUrl(sysurl);
configService.saveSysConfig(sysConfig);

String sso = upload.getFormValue( "sso");
String kick = upload.getFormValue("kick");
String validate = upload.getFormValue("validate");…………
……

//写merpserver.ini配置文件
String iniPath = strRealPath + "/WEB-INF/ini/merpserver.ini";
com.hanweb.common.util.IniFile ini = new com.hanweb.common.util.IniFile( iniPath );
ini.readIni();
ini.setIniValue("WebServer",servername);
ini.setIniValue("AppPath",jndi);
ini.setIniValue("DBType",dbtypename);
ini.setIniValue("AdminPW",adminpwd);
ini.setIniValue("loglevel",debug1);
ini.setIniValue("sso",sso);
ini.setIniValue("kick",kick);
ini.setIniValue("validate",validate);
ini.writeIni();

[/php]

关键的几步代码基本如上,几个系统类似(VC或其它的一些系统代码和上面就不同,有比较大差别)

04145503629d4e4a5be0409950df2ddd702c6a89

结合里面的相关参数,整理出一个通用的exp,如下(比较简陋):

[php]












[/php]

先用jphoto来做例子。
041455324d5628c82531ca50a3e4d1b20f4637a7

 

http://www.xxx.gov.cn/jphoto/setup/ 这是jphoto的setup目录,先用exp提交数据:

04145553473316efb90e9dcbdbe6d960613e32ad

提交成功后,提示配置文件修改完成,重启服务。

Exp里面是把密码设置为123456的

<input type="hidden" name="adminpwd" value="123456" />

再回到登录界面,使用admin/123456登录

04145611bb94002f82e984dab598afd774c5da85
其它系统就不多做演示了,以免影响网站的业务政策运行。但是漏洞都是存在的,希望一次性可以修复掉。

3 条评论

  1. 7ky

    :evil: :evil: 你这exp 能用吗?

  2. x

    能getshell 吗

    1. 0day5
      @x

      能不逗吗?看图呗~

发表评论