CTFHUB--SSRF详解

SSRF详解

  • SSRF漏洞介绍
  • 一、(内网访问、伪协议利用)
    • 1.1内网访问
    • 1.2伪协议读取文件
    • 1.3端口扫描
  • 二、(POST 上传文件 FastCGI协议 Redis协议)
    • 2.1 POST请求
    • 2.2 上传文件
    • 2.3 FastCGI协议
    • 2.4 Redis协议
  • 三、(Bypass系列)
    • 3.1 URL Bypass
    • 3.2 数字IP Bypass
    • 3.3 302跳转 Bypass
    • 3.4 DNS重绑定 Bypass

SSRF漏洞介绍

   SSRT(Server-Side Request Forgery,服务器端请求伪造),就是攻击者利用服务器能访问其他的服务器的功能,通过自己的构造服务器请求来攻击与外界不相连接的内网,我们知道内网与外网是不相通的,所以利用这一个特性,就可以利用存在缺陷的WEB应用作为代理 攻击远程本地的服务器
  通常造成这个漏洞的原因就是运维人员没有对web请求进行过滤和筛选处理,举个例子:以WEB服务器作为跳板进行攻击内网,当然还有其他的攻击,由于个人知识不足无法讲解。
CTFHUB--SSRF详解_第1张图片

一、(内网访问、伪协议利用)

1.1内网访问

直接构造:,即可拿到flag.

/?url=http://127.0.0.1/flag.php

1.2伪协议读取文件

file:// 协议
作用:
用于访问本地文件系统,在CTF中通常用来读取本地文件的且不受allow_url_fopen与allow_url_include的影响。

http/s协议
作用:
探测内网主机存活

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

Gopher协议
作用:
Gopher协议可以说是SSRF中的万金油。利用此协议可以攻击内网的 Redis、Mysql、FastCGI、Ftp等等,也可以发送 GET、POST 请求。这无疑极大拓宽了 SSRF 的攻击面。

在这里我们直接构造(WEB常用的本地地址):

/?url=file:///var/www/html/flag.php

CTFHUB--SSRF详解_第2张图片

1.3端口扫描

  题目有提醒我们端口是8000-9000,根据往常经验,而且不会写脚本+BS只能开一个线程,我直接从8400多开始扫描。
1.抓包之后,然后发到intruder,构造直接开始扫描,发现返回的长度不一样就是那一个端口,直接构造结课拿到flag。(我截图的时候没往下翻。)
CTFHUB--SSRF详解_第3张图片

二、(POST 上传文件 FastCGI协议 Redis协议)

2.1 POST请求

  打开目录发现还是和之前的目录一样,既然如此根据题目提示这次是发一个HTTP POST请求。对了,ssrf是用php的curl实现的。并且会跟踪302跳转,我准备了一个302.php,可能对你有用哦。 可能文件放到了一个网页的目录之下,所以我们直接使用disrearch进行扫描,发现目录直线有flag.php和index.php(放置网页源码地方)
构造,查看源码。

/?url=var/www/html/index.php

构造,查看flag.php文件

/?url=var/www/html/flag.php

CTFHUB--SSRF详解_第4张图片
告诉我们需要从127.0.0.1去访问,我们继续访问,
CTFHUB--SSRF详解_第5张图片
拿到KEY,这个题目因该就是告诉我需要给服务器发送一个KEY就能得到你想要的东西。但是页面上又什么都没有,这就需要我们构建一个POST请求包来发送这个KEY。
POST包的最基本的要求如下:

gopher://127.0.0.1:80/_POST /flag.php HTTP/1.1
Host: 127.0.0.1:80
Content-Type: application/x-www-form-urlencoded
Content-Length: 36

key=00f001523d0b955749ea5e3b0ca09b5f

Content-Length: 36就是你需要发送的信息的长度,然后就可以开始编码了,但是要进行几次编码呢?取决于你的请求次数

gopher://127.0.0.1:80/_POST%20/flag.php%20HTTP/1.1%0AHost:%20127.0.0.1:80%0AContent-Type:%20application/x-www-form-urlencoded%0AContent-Length:%2036%0A%0Akey=00f001523d0b955749ea5e3b0ca09b5f

然后把并把%0A替换成%0d%0A,结尾加上%0d%0A,并且末尾要加上%0d%0a(\r\n)

gopher://127.0.0.1:80/_POST%20/flag.php%20HTTP/1.1%0d%0AHost:%20127.0.0.1:80%0d%0AContent-Type:%20application/x-www-form-urlencoded%0d%0AContent-Length:%2036%0d%0A%0d%0Akey=00f001523d0b955749ea5e3b0ca09b5f%0d%0a

再进行一次URL编码

gopher://127.0.0.1:80/_POST%2520/flag.php%2520HTTP/1.1%250d%250AHost:%2520127.0.0.1:80%250d%250AContent-Type:%2520application/x-www-form-urlencoded%250d%250AContent-Length:%252036%250d%250A%250d%250Akey=00f001523d0b955749ea5e3b0ca09b5f%250d%250a

然后直接构造:
CTFHUB--SSRF详解_第6张图片

2.2 上传文件

2.3 FastCGI协议

这篇文章写的相当的详细,CGI 和 FastCGI 协议的运行原理.
点开发现页面什么都没有,还是和以前一样先试一试常规输入,出现404,
CTFHUB--SSRF详解_第7张图片
既然是FastCGI,接下来,我们使用 Gopherus.工具生成攻击FastCGI的payload。
安装工具
CTFHUB--SSRF详解_第8张图片
不知道为什么蚁剑一直连不上

2.4 Redis协议

三、(Bypass系列)

3.1 URL Bypass

题目给出以下提示:
在这里插入图片描述
通过前面的经验直接127.0.0.1/flag.php看看有什么东西,发现又弹出一个**“JUST VIEW FROM 127.0.0.1”**,题目这什么意思又要这个又要那个,所以我们进行构造以下这个,它的效果与http://127.0.0.1/flag.php相同。
用@实现绕过,构造:即可拿到flag。

/?url=http://[email protected]/flag.php

3.2 数字IP Bypass

  开始尝试了127.0.0.1/flag.php但是有提示**“Hack ban Intranet IP”**,既然是数字绕过,我们可以把127.0.0.1转化为其他的形式进行绕过。
127.0.0.1–>localhost
127.0.0.1–>7F000001       十六进制
127.0.0.1–>2130706433      十进制
127.0.0.1–>2130706433       Enclosed Alphanumerics
即可实现绕过。

3.3 302跳转 Bypass

  题目描述:SSRF中有个很重要的一点是请求可能会跟随302跳转,尝试利用这个来绕过对IP的检测访问到位于127.0.0.1的flag.php吧!
  这道题绕过的方式有很多,这里先讲讲302跳转,302跳转就是由一个URL跳转到另外一个URL当中去,就好比现实生活中的呼叫转移,在网页中比如一个网站的网址更新了,一部分的用户还不知道,就可以使用302跳转,从旧的网址跳转到新的网址上,按照这个思路,我们需要实现另外一种表达方式绕过127.0.0.1/flag/.php。
CTFHUB--SSRF详解_第9张图片
这道题按照上面的解法,我试了一下进制绕过,好像用的十进制就可以实现127.0.0.1绕过。即要构造

/?url=2130706433/flag.php

3.4 DNS重绑定 Bypass

  DNS重绑定DNS Rebinding攻击在网页浏览过程中,用户在地址栏中输入包含域名的网址。浏览器通过DNS服务器将域名解析为IP地址,然后向对应的IP地址请求资源,最后展现给用户。而对于域名所有者,他可以设置域名所对应的IP地址。当用户第一次访问,解析域名获取一个IP地址;然后,域名持有者修改对应的IP地址;用户再次请求该域名,就会获取一个新的IP地址。对于浏览器来说,整个过程访问的都是同一域名,所以认为是安全的。这就造成了DNS Rebinding攻击。
  放到这个题目的环境上来看,我们使用各种方法想来实现绕过,但是都无法访问,既然如此我们使用DNS重绑定,从DNS域名解析入手,有一个想法就是通过修该域名对应的IP,使一个域名对应两个IP,那么在多次的访问之下产生的访问效果是一样的实现IP绕过。
  这里师傅们用的一样用这个链接: NDS Rebinding.实现重绑定。
CTFHUB--SSRF详解_第10张图片
然后直接使用burpsuite的repeater返包即可。
CTFHUB--SSRF详解_第11张图片
结束。。。。。。。
CTFHUB--SSRF详解_第12张图片

你可能感兴趣的:(信息安全漏洞,web,kali,linux,安全漏洞,渗透测试)