渗透测试之SSRF漏洞

SSRF(服务端请求伪造漏洞)由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格的过滤与限制,导致攻击者可以传入任意地址来让后端服务器对其发起请求,并返回对该目标地址请求的数据。

漏洞场景:在线翻译、转码服务、图片的加载与下载、图片文章的收藏功能、社交分享(数据请求要想另一个服务器发起)

功能点:参数传的是一个url(形如:?url=http://abc.com/1.jpg) 除url外敏感的参数还有share、wap、link、src、source、target比参数名更重要的是看参数值是否为一个url地址。

漏洞函数:php中file_get_content()、fsockopen()、fopen()、curl_exec()、curl()、read_file()

java中HttpClient、OKHTTP()、HTTPRequest

漏洞函数的一般特点是会发起请求

SSRF漏洞实战

1、发现功能点

将地址更改为www.baidu.com发现有回显的访问

如果是不回显的,可以访问到自己部署的服务器看是否有请求,或dnslog平台

利用SSRF可以进行内网的探测,伪协议上传从而getshell

(伪协议读取文件)

dict://127.0.0.1:80伪协议可以看到目标端口的指纹信息

1、找到传参点,看是否有回显

2、apache的默认网站目录var/www/html/flag.php

(端口扫描)

1、找到传参点,看是否有回显

2、获取到信息后根据提示(8000-9000)端口,抓包进行爆破。爆破得到一个长度不同的包,找到flag

(DNS重绑定Bypass)

1、输入访问文件地址,发现被禁掉

2、重定向dns

将127.0.0.1改为如下图,访问拿到flag

(POST请求)

抓一个post包为构造gopher(这里要在源代码中添加提交按钮)

1、构建gopher协议请求包,请求包的内容有(post host(127.0.0.1:80)content-type content-length以及key值)

2、把请求包进行url编码

POST%20%2fflag.php%20HTTP%2f1.1%0AHost:%20127.0.0.1:80%0AContent-Type:%20application%2fx-www-form-urlencoded%0AContent-Length:%2036%0A%0Akey=b06fe6c4a10ae58176ee2b520c927017

3、把编码后的内容里面所有%0A编码为%0D%0A(\r变为\r\n)

POST%20%2fflag.php%20HTTP%2f1.1%0D%0AHost:%20127.0.0.1:80%0D%0AContent-Type:%20application%2fx-www-form-urlencoded%0D%0AContent-Length:%2036%0D%0A%0D%0Akey=b06fe6c4a10ae58176ee2b520c927017

4、进行url编码形成payload

POST%2520%252fflag.php%2520HTTP%252f1.1%250D%250AHost:%2520127.0.0.1:80%250D%250AContent-Type:%2520application%252fx-www-form-urlencoded%250D%250AContent-Length:%252036%250D%250A%250D%250Akey=b06fe6c4a10ae58176ee2b520c927017

5、再参数传入点赋值发送请求(?url=gopher://127.0.0.1:80/_payload)

url=gopher://127.0.0.1:80/_POST%2520%252fflag.php%2520HTTP%252f1.1%250D%250AHost:%2520127.0.0.1:80%250D%250AContent-Type:%2520application%252fx-www-form-urlencoded%250D%250AContent-Length:%252036%250D%250A%250D%250Akey=b06fe6c4a10ae58176ee2b520c927017

总结一下SSRF挖掘漏洞

1、寻找传参点url,如?url=http://xxxx,并且结合业务功能点一起判断,如转载,在线翻译等

2、判断SSRF有无回显

3、尝试SSRF哪些协议可以使用

4、dict协议用于探测端口指纹信息,gopher协议可以发送get或post请求,file协议可以用于文件读取

SSRF的防御

1、设置IP白名单

2、禁止不需要的协议(如gopher、dict)

相关推荐

  1. 渗透测试漏洞XSS漏洞

    2024-02-21 19:58:02       38 阅读
  2. Web 安全 VAPT (漏洞评估与渗透测试)详解

    2024-02-21 19:58:02       23 阅读
  3. SSRF漏洞

    2024-02-21 19:58:02       39 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-21 19:58:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-21 19:58:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-21 19:58:02       82 阅读
  4. Python语言-面向对象

    2024-02-21 19:58:02       91 阅读

热门阅读

  1. 01背包问题(c++题解)

    2024-02-21 19:58:02       50 阅读
  2. 控制与状态机算法

    2024-02-21 19:58:02       43 阅读
  3. postgres

    2024-02-21 19:58:02       58 阅读
  4. 当服务器磁盘空间报警时怎么处理?

    2024-02-21 19:58:02       56 阅读
  5. 本地TCP通讯(C++)

    2024-02-21 19:58:02       51 阅读
  6. Android 10 Android音量调节

    2024-02-21 19:58:02       47 阅读
  7. 块级上下文格式(Block Formatting Context,BFC)

    2024-02-21 19:58:02       45 阅读
  8. 算法:m*n网格最小路径

    2024-02-21 19:58:02       44 阅读
  9. golang的docker 简单部署

    2024-02-21 19:58:02       46 阅读