SSRF
一种网络安全漏洞,发生在服务器端应用程序中,允许攻击者通过服务器向任意网络资源发送请求,而无需用户直接参与。这种漏洞通常源于程序设计错误,例如当应用程序使用用户的输入作为URL请求的一部分,而没有适当的验证机制来限制请求范围到受信任的内部服务或域名时,就可能发生。
攻击者可以利用SSRF漏洞获取敏感信息、执行恶意操作、操纵数据库、甚至控制外部服务器。为了防止SSRF,开发者应该采取一些措施,比如:
输入验证:确保所有来自用户的输入都经过严格的验证和过滤,避免将它们用作完整的网络地址。
使用白名单:只允许特定的源地址发起请求,而不是默认的信任所有来源。
使用安全库:许多现代框架提供了内置的防护机制来防止此类漏洞。
SSRF(curl)用法
我们先看下curl的用法:https://www.runoob.com/php/php-ref-curl.html
PHP支持的由Daniel Stenberg创建的libcurl库允许你与各种的服务器使用各种类型的协议进行连接和通讯。
libcurl目前支持http、https、ftp、gopher、telnet、dict、file和ldap协议。libcurl同时也支持HTTPS认证、HTTP POST、HTTP PUT、 FTP 上传(这个也能通过PHP的FTP扩展完成)、HTTP基于表单的上传、代理、cookies和用户名+密码的认证
这里出现了一个url地址:url=http://127.0.0.1/vul/ssrf/ssrf_info/info1.php
接下来:
1.通过网址访问链接
修改url为:url=http://www.baidu.com
访问百度页面
2.利用file协议查看本地文件
修改url为:url=file:///etc/passwd
查看文件的内容
不能读取php文件 可能会显示php文件中的注释
3、dict协议扫描内网主机开放端口
修改url为:url=dict://127.0.0.1:3306
如果探测出redis
redis的未授权访问:redis的低版本时大部分人不设置访问密码,并且安全模式关闭就可以:
webshell:前提是知道物理路径
写入任务计划:反弹shell,反弹服务器权限
写入公钥:可以不用账号密码登陆服务器
4.gopher:威胁最大
使用ssrf和gopher直接将webshell写入服务器
gopherus
在/var/www/html下写入webs hell
清空:把写入的value写入到shell.php下 落盘在/var/www/html
反弹shell
/var/spool/cron/这是任务计划的一个目录 以root权限执行任务计划