pikachu靶场通关教程(十四)——SSRF

发布于 2024-11-24  511 次阅读


一、介绍

SSRF,Server-Side Request Forgery,服务器请求伪造。攻击者通过漏洞应用等方式,伪造成服务器身份发起请求,一般会用于攻击内网等无法从外网访问的系统。

比如,内网中有一个服务仅对内网开放,你从外网没法访问。这是你拿下了一台映射至公网的内网服务器或是发现了一个SSRF漏洞,这个时候,你就可以以这台服务器作为跳板,在内网中进行进一步渗透。

前排踩坑提醒,如果环境是在虚拟机里搭建的,记得吧URL里的127.0.0.1换成对应的IP+端口喵~

二、SSRF(curl)

一步步点到诗歌的页面,可以看到URL中传入了一个参数。

页面中一眼看去,可以尝试的位置好像也之后这里了,既然题目叫curl,那么curl命令除了http协议,还支持什么协议呢?包括但不限于:

  • HTTP/HTTPS
  • FTP/FTPS
  • SCP/SFTP
  • TFTP
  • LDAP/LDAPS
  • DICT
  • FILE
  • IMAP/IMAPS
  • POP3/POP3S
  • SMTP/SMTPS
  • RTSP
  • Gopher/Gophers
  • MQTT

通过替换url参数的内容,是可以进行任意文件读取的。

url=file:///C:/Windows/System32/drivers/etc/hosts

又或者,通过dict协议对内网中的其他服务的进行查询。

url=dict://192.168.52.131:80

三、SSRF(file_get_content)

第二关同样也来到诗歌页面,看到参数使用的是file,猜测传入的是个文件位置。当然题目也提到了file_get_content方法,那么它支持的协议包括但不限于:

  • HTTP/HTTPS
  • FTP/FTPS
  • FILE
  • PHAR
  • DATA
  • ZIP

这里拿HTTP和FILE举例。

file=http://www.baidu.com
file=C:/Windows/System32/drivers/etc/hosts

四、修复方式

因为攻击者的利用这个漏洞是主要用于内网横向渗透,所以可以针对这一点进行防护。

1.白名单:仅允许通过功能对指定的地址、路径进行请求。
2.黑名单:对向内网的私有地址的请求进行过滤拦截。
3.对响应包内容进行识别,确认没有敏感信息传回前端。
4.若非必要,禁用危险的协议,比如ftp、file、dict。

五、后记

锵锵!陆陆续续更新了一年总算把这个系列完结了,感觉可以直接拿来给后辈们当实验报告了(* ̄︶ ̄)。过程中最麻烦的还是各种报错,写完赶紧去第一章补一句遇到问题先看看是不是php版本的锅,毕竟也不算新的靶场了。

上岸甲方惹,最近在工作的时候渗透的机会越来越少,逐渐转向蓝队的方向了,经常一些日志分析的思路不大明确。だから,之后会逐渐开始更新防守思路的文章,请大家多多关照!^_^