freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

某开源博客系统最新版源码审计记录TIPS
davichi8282 2018-10-20 08:00:59 466647

*本文中涉及到的相关漏洞已报送厂商并得到修复,本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担。

*本文原创作者:davichi8282,本文属于FreeBuf原创奖励计划,未经许可禁止转载

0×00 概述

近期审计一个JAVA开源博客系统mblog2.5最新版,整体系统还是很安全的,漏洞较少,传统的问题像XSS系统使用全局过滤的方式进行实体化处理,上传问题使用白名单校验,越权方面限制的也比较死,本次审计主要在于发现安全问题,具体实现页面没有去搞,感兴趣的可以自己去具体实现。

0×01 审计思路

下载此源码解压之后发现40多M,比较大的一个源码了,如果遇到这样比较大的源码,可以使用一些辅助工具去手工审计比如Notepad++,可以快速定位位置和查询一些关键字去审计,比较快,但是这样去审计可能一些逻辑安全问题发现不了,但是有利就有弊,这只是代码审计常用方法之一了,具体是哪些关键字比如可以查看所有用户输入的地方,会不会结合一些危险函数去执行。比如XSS,可以全局搜索"request."关键字,结果如下:

36.png我们以红框处举例,可以直接双击进入代码位置:

31.png可以看到直接获取content参数做更新文章操作,这里看似有XSS风险,但是还不能确定,可能update的时候已经做了安全处理,这时候可以看此文件有没有import其他,回到顶部:

66.png可以看到引入BaseController,这里可能含有一些全局基础处理相关的操作包括全局安全过滤等操作,跟踪。

可以看到BaseController.java文件含有全局过滤XSS机制,经跟踪发现是实体化操作,这么一来只要是import这个文件的地方基本不存在XSS问题了。

0×02 白盒审计

源码信息:mblog2.5

站点地址: https://gitee.com/szhirong/mblog

不安全的随机数生成(Fortify常扫出):

JAVA语言在生成URL或者一些需要加密密钥等情况下会需要使用随机数,随机数会分为统计学和密码学两种,统计学输出的数据易猜测,所以需要随机数生成的时候建议使用密码学PRNG,可以通过搜索random()函数判断;

代码位置:

\mblog\mblog-base\src\test\java\test\Keygen.java

78.png此处引入 java.util.Random里的random()函数进行随机数生成输出,其结果易猜测,所以需要使用

java.security.SecureRandom提供的SecureRandom()函数代替生成随机数。

SSRF:

ssrf(服务器端请求伪造漏洞)即一般在服务器提供从远程服务器获取内容并返回给用户的时候容易发生,比如下载图片,远程获取图片信息等,审计的时候可以重点关注url请求相关的操作,比如常见的url.openStream(),url.openConnection()等函数。

代码位置:

\mblog\mblog-base\src\main\java\mblog\base\utils\ImageUtils.java    

77.png这里是根据URL远程下载的地方,但是未对传入的URL做任何过滤并且输出到os,所以存在SSRF问题,需要对传入的URL做白名单地址限制和禁止一些除了http,https以外的协议,比如ftp,gopher协议等。

0×03 其他

除了这些问题之外,其他的比如XXE,可以去看哪些解析xml接口,有没有禁止解析外部实体,反序列化漏洞可以重点看readObject()等函数反序列话时候有没有做限制过滤,或者可以直接看那些实现serializable接口的类里有没有重写readObject(),readUnshared()等方法,是否存在逻辑问题,这里审计的时候未发现反序列化相关问题。

0×04 总结

本次审计发现的问题并不多,信息泄露这些就不写了,主要是演示如何快速通过搜索危险函数,关键字等来进行审计的方法吧。

*本文原创作者:davichi8282,本文属于FreeBuf原创奖励计划,未经许可禁止转载

# 代码审计
本文为 davichi8282 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
davichi8282 LV.4
这家伙太懒了,还未填写个人描述!
  • 4 文章数
  • 1 关注者
HDwiki二次注入案例分享
2018-07-04
代码审计之任意文件下载漏洞案例分享
2018-05-31
代码审计 | HDWiki v6.0最新版referer注入漏洞
2018-05-06
文章目录