Rebuild代码审计

文摘   其他   2024-02-07 15:12   陕西  

首先提前祝大家新年快乐,祝各位师傅身体健康,事业顺利。

前段时间在先知社区逛的时候看到Rebuild这个项目的代码审计,故来自己审一下。

源码如下:

https://gitee.com/getrebuild/rebuild

SSRF漏洞

漏洞点在:

com.rebuild.web.commons.FileDownloader.java

请求路径:  /filex/proxy-download Get接收url参数,先进行URLdecode解码,然后调用getStorageFile方法,我们跟进去。

这里首先判断我们传递过来的URL参数是否是以http://开头的或是以https://开头的,如果是的话进入IF。

通过正则将我们的路径进行切割。

然后通过substring方法来分割我们传递过来的字符串,首先通过lastIndexOf获取到最后一个字符为 / 的下标然后+1,最后通过substring进行截取。

最终调用readBinary方法来发起请求。

成功读取1.txt文件。

SSRF漏洞2

漏洞点:

com.rebuild.web.commons

主要是isExternalUrl这个函数会判断我们传递的url参数是否是http或者https,跟进去。

可以看到他会判断我们是否以http://或https://开头的,如果是这两个开头的话,那么进入if。

这里就会对我们传递进去的URL参数进行请求。

请求获取到文件之后会以HTML的方式进行展示。

请求包:

GET /filex/read-raw?url=http://127.0.0.1:8000/1.txt&cut=1 HTTP/1.1Host: 192.168.1.102:18080Cache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36Accept: 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, deflateAccept-Language: zh-CN,zh;q=0.9Cookie: rb.lastFilesPath=docs; _ga=GA1.1.1772810206.1707272563; rb.TourEnd=session; rb.sidebarCollapsed=false; RBSESSION=CA5050475939DFC2B5B3E8DEE29E24B5; _ga_ZCZHJPMEG7=GS1.1.1707272562.1.1.1707275508.0.0.0Connection: close

读取数据库配置文件

这里和先知师傅9h0st的不太一样。

如下文:

https://xz.aliyun.com/t/13324#reply-19587

9h0st写的是通过proxyDownload进行读取的,测了一下发现download方法也是可以读取的。

如下:

构造的链接为:

/filex/download/.rebuild?attname=.rebuild

首先获取到URL链接之后判断路径中是否有/filex/access,如果没有的话则进入else中进行切割,将真正要读取的文件的路径连带文件名一块读取出来。

最后通过writeLocalFile方法输出到页面中。

这里其实.rebuild虽然在URL里面,但是也是文件路径。

Relay学安全
这是一个纯分享技术的公众号,只想做安全圈的一股清流,不会发任何广告,不会接受任何广告,只会分享纯技术文章,欢迎各行各业的小伙伴关注。让我们一起提升技术。
 最新文章