SSRF
在审计ssrf的时候 一般都是搜索关键函数
URL.openConnection() URL.openStream() HttpClient.execute() HttpClient.executeMethod() HttpURLConnection.connect() HttpURLConnection.getInputStream() HttpServletRequest() BasicHttpEntityEnclosingRequest() DefaultBHttpClientConnection() BasicHttpRequest()
第一处
直接在idea里面搜索
然后一个一个点进去分析
找到这里
会进行连接 然后我们往上分析这个src的来源
发现这里是从请求中获取source[]参数来的 说明这个是我们所能控制的
在往上看 根据函数名能够大概猜出是编辑器图片相关的函数
看看哪里调用了这个函数
在uploadcontroller下 继续跟进ueditorCatchImage函数 看看那里调用
发现在同一页的66行找到 也找到这个路由是在ueditor.do下
最上面controller 是core
所以路径是/core/ueditor.do?action=catchimage
进行测试
但因为是在back下 所以是一个后台的洞
通过后面的代码可以看到 似乎是对一个图片的操作 直接就进行断点看看这里是到底执行了什么
测试:
传入了一个jpg地址 但这个地址是不存在的 来到断点的地方
这里获取到source的值存入数组
这里获得后缀
这里判断请求的是不是图片 因为我们传入的是不存在也就不是 到这里也就直接结束了 在此输入一个存在的链接
跟到这里是重新设置文件名
然后读取输入流
然后跟进这里创建文件对象
然后这里直接保存文件 中间也没有任何过滤操作 就判断了是不是图片 然后就保存了文件
相当于这里就是一个进行 图片请求然后保存到本地的操作
那么这里是不是可以进行svg的xss呢 尝试一些
测试:
先创建一个svg xss
第二处
继续搜索ssrf的关键函数HttpClient.execute()
然后查看哪里调用了这个函数
继续跟进
发现在这里进行的调用以及url的传入 而且这个url是 可控的
往上找到控制层
最后拼接 进行测试
http://192.168.1.2:8080/cmscp/ext/collect/fetch_url.do?url=http://127.0.0.1:8080
直接能访问到服务
最后在页面找到位置