SSRF原理

1. 漏洞原理

    SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造,由服务端发起请求的一个网络攻击,一般用来在外网探测或攻击内网服务,其影响效果根据服务器用的函数不同,从而造成不同的影响。

    SSRF 形成的原因大都是由于服务端提供了从其他服务器获取数据的功能且没有对目标地址做过滤与限制。比如从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。

攻击的数据流:攻击者—>服务器—>目标主机

2.ssrf利用

    1.内外网的端口和服务扫描

    2.主机本地敏感数据的读取

    3.内外网主机应用程序漏洞的利用

    4.内外网Web站点漏洞的利用

    ......

3.SSRF漏洞的寻找(漏洞常见出没位置)

注:个人觉得所有调外部资源的参数都有可能存在ssrf漏洞,例  http://127.0.0.1/pikachu/vul/ssrf/ssrf_curl.php?url=http://外部url/1.png

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

    2)转码服务

    3)在线翻译

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

    5)图片、文章收藏功能

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

    7)从URL关键字中寻找

        share

        wap

        url

        link

        src

        source

        target

        u

        3g

        display

        sourceURl

        imageURL

        domain

4.例子

4.1    与csrf相关的函数

file_get_contents():将整个文件或一个url所指向的文件读入一个字符串中。

readfile():输出一个文件的内容。

fsockopen():打开一个网络连接或者一个Unix 套接字连接。

curl_init():初始化一个新的会话,返回一个cURL句柄,供cur_lsetopt(),curl_exec()和curl_close() 函数使用。

fopen():打开一个文件文件或者 URL。

......

上述函数函数使用不当会造成SSRF漏洞。此外,PHP原生类SoapClient在触发反序列化时可导致SSRF

4.2     SSRF漏洞利用的相关协议

file协议:在有回显的情况下,利用 file 协议可以读取任意文件的内容

dict协议:泄露安装软件版本信息,查看端口,操作内网redis服务等

gopher协议:gopher支持发出GET、POST请求。可以先截获get请求包和post请求包,再构造成符合gopher协议的请求。gopher协议是ssrf利用中一个最强大的协议(俗称万能协议)。可用于反弹shell

http/https协议:探测内网主机存活

4.3    代码例子

4.4 pikachu例子

根据后台利用函数的不同可造成不同的危害

参考链接

(1)https://www.cnblogs.com/iors/p/9777571.html

(2)https://www.jianshu.com/p/d1d1c40f6d4c

(3)https://mp.weixin.qq.com/s/0wdxfetcp8TUtLZFWI16uA

(4)https://www.cnblogs.com/-qing-/p/11785067.html

(5)https://blog.csdn.net/weixin_39664643/article/details/109819853

(6) http://www.manongjc.com/detail/13-gvexrefjseakwqk.html

(7) https://www.cnblogs.com/ahacker15/p/12508139.html

(8)https://www.freebuf.com/column/194040.html

你可能感兴趣的:(SSRF原理)