嗨,大家好,这里是闪石星曜CyberSecurity。
本期分享的是来自【炼石计划@Java代码审计】内部圈子【misszhou123】的第一张代码审计出的 CNVD 经验分享。
主要是寻找资产这块小经验,大家可以学习一下。
如果你也想一起内卷,欢迎通过文末链接加入我们。
一、资产寻找之路
1、某鱼买爱企查会员
主要是因为穷,用个几块钱买个爱企查会员还是很划算的,主要是这东西就用个几天,开个一个月会员实在浪费
2、寻找 5000 万以上资产
使用爱企查的高级搜索功能,条件如下,一次可以导出一万条,依次更换行业,把所有行业5000W以上的公司,都导出来。
接下来就是导出了
导出来很多的url,一个个找吧,先找信息技术行业的,有产品的概率会大很多。要是你爬虫技术牛逼的话,也可以写个爬虫,自动获取有产品的公司。
3、探索产品
举个例子,打开网站能开到产品名称,这种算是有产品,但是没有下载链接,要通过资产搜索引擎,找资产,然后批量扫描源码,然后通过下载的方式获取,这种比较不推荐,搞不好就进去了.....
还有一种是有产品在首页也给出了产品链接的,这是重点要寻找的,直接下载下来就可以了
二、代码审计之路
1、获取源码
软开包下载下来,安装,看一下目录,你就知道是不是java写的产品了,有tomcat、webapps基本上可以确定是java写的
指定一下目录,搜索一下.jar和.class文件,拷贝出来
2、反编译
推荐使用 jad,真的挺好用的,命令如下所示:
jad -o -r -s java -d src classes/**/*.class
3、IDEA 分析源码
有了源码后,分析源码的方式,就只有两种
a、全文通读,这种方法比较适合有充分时间的情况下,挖掘逻辑漏洞使用
b、关键字查找,简单快速的方法,适合刚入门的小白,附查找JAVA的关键字
漏洞名称 | 关键词 |
---|---|
XSS | getParamter、<%=、param. |
SQL注入 | Select、${、order |
任意文件下载 | download、fileName |
任意文件删除 | Delete、deleteFile、fileName、filePath |
文件上传 | Upload、write、fileName、filePath |
命令注入 | getRuntime、exec、cmd、shell |
XML注入 | DocumentBuilder、XMLStreamReader、SAXBuilder、SAXParser、SAXReader、XMLReader、SAXSource |
反序列化漏洞 | ObjectInputStream.readObject、ObjectInputStream.readUnshared、XMLDecoder.readObject、Yaml.load、 |
url跳转 | sendRedirect、setHeader、forward |
不安全组件暴露 | activity、BroadcastReceiver、Content |
拿sql注入举例,一个基本判断漏洞逻辑是
1.有入口点,入口点一般为 Controller 类下
2.入口点参数可控
3.没有过滤传入参数
搜索关键字order by
往上追踪,发现参数是 int 型,基本上不存在 sql 注入漏洞,都不用在往上去 Controller 类了。
4、漏洞情况
发现的漏洞位于UsersController.class类,从代码逻辑上判断,只校验了 userId 存不存在,没有校验当前 userId 是不是属于当前登陆用户,直接就是遍历 ID,进而可以获取其他用户信息。
下面奉上片段代码,各位兄弟可以看看。
三、总结
终于通过代码审计,水到了人生中的第一个 CNVD 证书了,实在不容易,整个过程中,感觉最难的不是代码审计,而是找五千万资产以上公司的源码。
分享下个人小经验,希望能给大家一些小启发。
原文始发于微信公众号(闪石星曜CyberSecurity):第一张代码审计的 CNVD 资产寻找之旅经验分享
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论