Java 审计之SSRF篇(续)

Java审计之SSRF篇(续)0x00前言先来说说为啥会有该篇章,在刚刚码完上篇文章后,后来又去找了找在Java中的一些远程请求的类。果然翻到了一些有意思的东西,在这里就拿出来给大家分享一下。

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

Java 审计之SSRF篇(续)

0x00 前言

先来说说为啥会有该篇章,在刚刚码完上篇文章后,后来又去找了找在Java中的一些远程请求的类。果然翻到了一些有意思的东西,在这里就拿出来给大家分享一下。

0x01 imageIO中的SSRF

imageIO类是jdk中自带的一个类,主要用于操作一些图片文件。比如读写、压缩图片。

ssrf 类:

public class ssrf {
    public static BufferedImage read(URL url) throws IOException {
        if (url == null) {
            System.out.println("输入内容为空");
        }


        InputStream  istream = url.openStream();
        ImageInputStream stream =  ImageIO.createImageInputStream(istream);  //获取文件流


        BufferedImage bi = ImageIO.read(stream);  //返回 BufferedImage作为供给的解码结果

        return bi;
    }
}

servlet:

@WebServlet("/httpclientServlet")
public class httpclientServlet extends HttpServlet {


    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String geturl = request.getParameter("url");
        ServletOutputStream outputStream = response.getOutputStream();
        ByteArrayOutputStream os = new ByteArrayOutputStream();
        URL url = new URL(geturl);
        BufferedImage image = ssrf.read(url);

        ImageIO.write(image, "png", os);
        InputStream input = new ByteArrayInputStream(os.toByteArray());
        int len;
        byte[] bytes = new byte[1024];
        while ((len = input.read(bytes)) > 0) {
            outputStream.write(bytes, 0, len);
        }


    }

}

写完后来测试一下,先来测试一下传入一个图片的url试试。

Java 审计之SSRF篇(续)

成功输出出来了。证明远程请求图片的功能是没问题的。

再来读取一下本地文件试试

Java 审计之SSRF篇(续)

发现报错了 貌似读取不了除了图片以外的文件。

再来尝试一下读取本地的图片试试

Java 审计之SSRF篇(续)

读取成功,看来只能读取图片。

但这里发现一个东西,就是文件虽然不能读取,但是可以看到该文件存不存在。

Java 审计之SSRF篇(续)

Java 审计之SSRF篇(续)

如果文件不存在的话会显示找不到指定文件,而存在但文件不为图片文件的话则显示image==null。

HttpClient下的SSRF

CloseableHttpClient httpClient = HttpClients.createDefault();
HttpClient client = new HttpClient();
HttpGet getRequest = new HttpGet(url);
HttpResponse response = httpClient.execute(getRequest);

OkHttp 下的SSRF

 Request request = new Request.Builder()
      .url("http://publicobject.com/helloworld.txt")
      .build();

  Response response = client.newCall(request).execute();

HttpRequest

HttpRequest request = HttpRequest.get("http://www.baidu.com",true,'q',"baseball gloves","size",100);
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119920.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python操作gitlab_git的使用教程

    python操作gitlab_git的使用教程文章目录一、安装git二、pycharm配置gitlab1、在pycharmsetting中设置git.exe的目录2、VCS—Checkoutfromversioncontrol—Git3、pycharm自动生成.ignore文件三、pycharm中gitlab基础操作1、分支2、pull3、push4、merge一、安装git下载地址:https://git-scm.com/downloads安装说明:https://git-scm.com/downloads二、pycharm配置

    2022年8月25日
    3
  • realsense深度图像保存方法

    realsense深度图像保存方法一般使用realsense时会保存视频序列,当保存深度图像时,需要注意保存的图像矩阵的格式,不然可能造成深度值的丢失。在众多图像库中,一般会使用opencv中的imwrite()函数进行深度图像的保存。一般深度图像中深度值的单位是mm,因此一般使用np.uint16作为最终数据格式保存。例子:importnumpyasnpimportcv2deffun1(…

    2022年4月25日
    29
  • Java正则表达式的语法与示例

    Java正则表达式的语法与示例Java正则表达式的语法与示例正则表达式是什么?用我的理解就是一个表达式。用来匹配,替换,判断字符串,之前业务就出现过判断返回值是否为邮箱。以下内容来自于http://baike.xsoftlab.net/view/207.html#3java正则表达式正则表达式语法java正则表达式语法java正则表达式概要:Java正则表达式的语法与示例

    2022年7月19日
    15
  • js 字符串截取(包含中英文)

    js 字符串截取(包含中英文)有一个项目中需要兼容ie6,在使用ztree中很难修改符合ie下面的字符截取样式,于是使用js方法来截取,字符串截取推荐使用: //截取字符串包含中文处理     //(串,长度,增加…)     functionsubString(str,len,hasDot){      varnewLength=0;    

    2022年6月6日
    52
  • Java锁详解[通俗易懂]

    Java锁详解[通俗易懂]文章目录什么是锁锁的实现方式锁涉及的几个重要概念类锁和对象锁(重要)synchronized实现原理什么是锁计算机还是单线程的时代,下面代码中的count,始终只会被一个线程累加,调用addOne()10次,count的值一定就累加了10。publicclassTest{//计数器privateIntegercount=0;//累加…

    2022年7月8日
    19
  • Win7如何简单的关闭445端口及445端口入侵详解

    Win7如何简单的关闭445端口及445端口入侵详解最近永恒之蓝病毒攻击了很多教育网的同学,下面我们就来看一下如何关闭445端口根据网络安全机构通报,这是不法分子利用NSA黑客武器库泄漏的“永恒之蓝”发起的病毒攻击事件。“永恒之蓝”会扫描开放445文件共享端口的Windows机器,无需用户任何操作,只要开机上网,不法分子就能在电脑和服务器中植入勒索软件、远程控制木马、虚拟货币挖矿机等恶意程序。由于以前国内多次爆发利用445端口传播的蠕虫,运

    2022年6月15日
    124

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号