记java代码审计(1)

admin 2025年2月15日23:04:21评论10 views字数 3040阅读10分8秒阅读模式

  “ 腰疼,脖子疼

        最近闲着没事,弄了几十套源码下来玩。资产都是满足cnvd要求的(懂得都懂,想要的尽快),定个小目标,二十四套源码,一半得拿shell啊,最次也得挖个注入吧。从黑盒,白盒,两个方面来看,还能让你有更多的攻击方向,以后去单纯挖黑盒,也有更多的操作空间。

漏洞表

漏洞审计

01

反射xss

02

任意文件下载

03

sql注入,dba权限

                                                          

    野路子出生的我,其实更喜欢直接找危险函数的,结果搜了一遍危险函数,寥寥无几,就慢慢看传参,经过了哪些代码。

01

先来一个简简单单的反射xss,有存储xss的,但是我为啥不写存储xss,emmm我也不知道,可能就是想写反射的

存储xss证明

记java代码审计(1)

备注里直接填就好,没啥意思。

我们还是来看反射xss。

记java代码审计(1)

直接return了mav

记java代码审计(1)

"></li><script>alert(1)</script>

payload随便写

记java代码审计(1)

对于反射xss这种,之后不继续关注啦,大致就是输入,然后show

02


任意文件下载

记java代码审计(1)

截图字小?我给你们复制出来。有想自己审的,也可以自己看看代码

@RequestMapping({"/download"})    public void fileDownload(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException {        String fileNameStr = request.getParameter("fileName");        String fileNameUtf = null;        String fileName = null;        try {            fileNameUtf = URLDecoder.decode(fileNameStr, "UTF-8");            fileName = URLEncoder.encode(fileNameUtf, "UTF-8");            fileName = new String(fileNameUtf.getBytes("GB2312"), "ISO_8859_1");        } catch (Exception var13) {            var13.printStackTrace();        }        String basePath = PropertiesUtils.getPara("downFileDir");        String savePath = request.getSession().getServletContext().getRealPath("/") + basePath + "/";        response.setContentType("multipart/form-data");        response.setHeader("Content-Disposition", "attachment;fileName=" + fileName);        File file = new File(savePath + fileNameUtf);        try {            FileInputStream inputStream = new FileInputStream(file);            ServletOutputStream out = response.getOutputStream();            byte[] buffer = new byte[1024];            boolean var12 = true;            int length;            while((length = inputStream.read(buffer)) != -1) {                out.write(buffer, 0, length);            }            inputStream.close();            out.close();            out.flush();        } catch (IOException var14) {            var14.printStackTrace();        }    }

这里先是传递一个fileName的参数

String fileNameStr = request.getParameter("fileName");

然后new file

File file = new File(savePath + fileNameUtf);

然后

FileInputStream inputStream = new FileInputStream(file);ServletOutputStream out = response.getOutputStream();

中间没有什么过滤,和限制。

记java代码审计(1)

03

多到数不清的sql注入

其实我一直觉得审计sql注入是最简单的,除非系统里自带了函数过滤啥的。

直接找xml文件即可

在xml文件里搜:${

记java代码审计(1)

记java代码审计(1)

@RequestMapping(        value = {"/list"},        method = {RequestMethod.GET}    )    public ModelAndView list(HttpServletRequest request) {        ModelAndView mav = new ModelAndView("page/sysmanage/user/list");        Map<String, Object> params = new HashMap();        String query_username = request.getParameter("query_username");        String pid = request.getParameter("pid");        String enterId = request.getParameter("enterId");        String level = request.getParameter("currentLevel");        try {            if (!StringUtils.isNullOrEmpty(query_username)) {                query_username = URLDecoder.decode(query_username, "UTF-8");                mav.addObject("query_username", query_username);            } else {                mav.addObject("query_username", (Object)null);            }        } catch (UnsupportedEncodingException var16) {            var16.printStackTrace();        }        int count = false;        if (!StringUtils.isNullOrEmpty(query_username)) {            params.put("username_fuzzy", query_username);        }

然后直接找功能点即可,找了好半天,然后抓包看一下,我敲。。还不如手动直接测

记java代码审计(1)

http://xxx.xx.xxx.xx/index.do?query_rolename=1*

dba权限

记java代码审计(1)

(可能注入这里代码和截图的点对不上,注入太多了,而且大多都一样,混一混总能过去的)

审计代码的菜鸡,不是专业队员。审完代码,交了两个cnvd,写完公众号,回头一看天亮了,我果然是菜鸡,这歌挺好听的。

---------------------

记java代码审计(1)

---------------------

欢迎关注公众号:虚拟尽头

一次src挖洞经历(不是一个)

SRC 挖洞tips

如何做到更加细致的信息搜集(上)

如何做到更加细致的信息搜集(下)

使用Yakit快速刷取cnvd

面试经历 - 某数字厂- 安服实习生

记java代码审计(1)记java代码审计(1)记java代码审计(1)师傅们,聊天框发送"二维码",加我好友一起交流呀(加的时候请备注来自公众号)。

原文始发于微信公众号(虚拟尽头):记java代码审计(1)

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

发表评论

匿名网友 填写信息