更多全球网络安全资讯尽在邑安全

www.eansec.com

0x00 使用场景

在渗透测试中,由于防火墙的原因,目标主机可能只开放了某一个业务端口,其余反连和直连的端口被全部禁用了,借用mssqlproxy的一个图,很好的呈现了这种场景。

这个时候我们虽然可以利用UDF执行命令,但是十分不方便,于是就有了下面的说法。

0x01 原理

关键原理就是UDF和Socket Reuse。Mysql UDF各位师傅应该都很熟悉,这里就不详细讲了;而Socket Reuse,虽然我是第一次听说,但其实很早就有相关的概念了:

Socket-reuse shellcode is used to bypass firewalls. Usually, shellcode and exploit developers and users provide "bindshell" and "connect-back" shellcodes. Both of these require a permissive firewall to some extent or another. However, because sockets are treated as re-usable or dynamic file descriptors by most operating systems, it is possible to examine existing socket connections, therefore one can simply bind a shell to the socket that the exploit shellcode came from.

具体可以看下这篇文章

0x02 踩坑过程

一开始想着跑跑代码能用就行了,毕竟也不是很难的技术,原理也比较简单,但我就是自带用不了别人poc的属性,死活跑不起来,没办法,只能自己调代码了。

来看下关键代码逻辑,先看攻击端,首先连接Mysql数据库,然后进入proxy_init函数,传参是3,其实就是我们连接数据库的那个socket的fd,012是标准输入输出那些

执行已经加载好的UDF函数,并读取服务端返回的一个特定字符串,确定服务端代码已经执行,跳出循环,select_fd[0]即数据库链接fd

在本地监听任意可用的端口,这里用了1337,select_fd[1]是我们用proxychains连接时产生的fd

后面就是上面提到的这两个fd循环读取和写数据了。

感觉没什么问题,因为客户端的代码是可以跑起来的,也能成功执行服务端的函数,执行proxychains ssh root@127.0.0.1,抓个包验证一下(不熟悉socks5的师傅可以看看这个),客户端先发送了05 01 0005是版本号,01是支持的认证方式总数,后面就是认证方式,00NOAUTH

服务端返回05 00,同样05是版本号,00是服务端选择的认证方式

至此认证是已经完成了的,然后就是客户端发送命令05 01 00 01 7f 00 00 01 00 16,各字节含义如下:

  • 05 版本号

  • 01 CONNECT命令

  • 00 保留字段

  • 01 地址类型为IPv4

  • 7f 00 00 01 IP地址127.0.0.1

  • 00 16 端口号22

发现服务端一直没有PSH ACK的回应,于是客户端发了FIN结束连接,所以问题在服务端

客户端执行select do_carracha('a');之后,服务端用getpeername遍历所有fd,通过ip匹配上我们的连接,并fork出一个子进程,执行payload

最终子进程执行了worker函数,fd就是客户端的数据库连接,红框中的socks5_invitation和socks5_auth分别对应了客户端发的05 01 00和服务端发的05 00

所以为什么socks5_command这里出了问题?原来的代码读了05 01 00 01 7f 00 00 01 00 16的前4个字节

然后判断第4个字节是否01,但是判断socks命令类型不应该是判断第2个字节吗......虽然结果是一样的,这里就假设是对的

所以应该是服务端读的问题了,于是尝试了好多种方式打印command,但是写文件不知道为什么写不了,用gethostbyname发到dnslog也发不出去,system也执行不了命令,可能是权限的原因?不过也没有深究了,因为虽然写不了文件,但是文件是可以创建的,把command拼到文件名即可。

最后发现是command前面多了一个00......所以是socks5_invitation这里读少了一个字节,擦,那作者是怎么跑成功的......

所以就把上面那里读少的字节读完,就可以跑了,启动代理

成功连接

转自先知社区

欢迎收藏并分享朋友圈,让五邑人网络更安全

欢迎扫描关注我们,及时了解最新安全动态、学习最潮流的安全姿势!

推荐文章

1

新永恒之蓝?微软SMBv3高危漏洞(CVE-2020-0796)分析复现

2

重大漏洞预警:ubuntu最新版本存在本地提权漏洞(已有EXP) 

安卓socks5代理客户端_内网Mysql代理浅析相关推荐

  1. nps+Proxifier搭建socks5代理隧道进行内网穿透

    目录 一.实验环境搭建 二.nps 服务端配置 客户端配置 将npc注册到系统服务 三.Proxifiers使用 在渗透过程中,我们需要快速实现内网穿透,从而绕过网络访问限制,直接从外网来访问内网 正 ...

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

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

  3. 部署NPS实现Socks5代理访问公司内网教程

    公司需要部署VPN来实现对内网的GitLab和禅道的访问,但是现状是公司的电信宽带分配的动态IP隔一段时间就会跳变,使用VPN是不稳定的,每隔一段时间都要修改VPN配置的IP.因此决定用已有的一台公网 ...

  4. 内网入口——代理搭建端口转发

    在内网渗透过程中经常会遇到搭建代理和端口转发的情况,本文记录一些常用工具的使用方法和典型应用场景,便于查阅. 文章目录 代理搭建&端口转发 1.EW 2.Venom 3.Stowaway 4. ...

  5. 内网渗透-代理篇(reGeorg+Proxifier代理工具)

    声明:贝塔安全实验室公众号大部分文章来自团队核心成员和知识星球成员,少部分文章经过原作者授权和其它公众号白名单转载.未经授权,严禁转载,如需转载,请联系开白!请勿利用文章内的相关技术从事非法测试,如因 ...

  6. 内网渗透代理转发详解及工具介绍

    介绍一下个人网站 欢迎各位大佬光顾 http://www.sec0nd.top 文章目录 前言 正向代理和反向代理 正向代理 反向代理 举例辨别两者 内网渗透中代理的作用 工具介绍 msf nps f ...

  7. 在安卓上部署服务器 - 解决内网穿透

    原文地址:在安卓上部署服务器 - 解决内网穿透 本系列其他文章: 在安卓上部署服务器 在安卓上部署服务器 – 应用程序的配置 在安卓上部署服务器 – 解决内网穿透问题 在安卓上部署服务器 – 部署脚本 ...

  8. 路由器_内网端口映射

    路由器_内网端口映射,nat_端口映射_工具_软件_远程桌面_连接端 口_花生壳_个人_FTP_服务器_WEB站点 1.让(家里)宿舍自己的电脑跟公司(外地)的电脑互相远程桌面连接(免得每次COPY东 ...

  9. 通过SOCKS代理渗透整个内网

    通过SOCKS代理渗透整个内网 1.背景 经过前期的渗透工作,我们现在已经成功找到了web站点的漏洞,并且获得了一个普通的webshell,现在准备用菜刀去连接它. 注意:本次环境在本地搭建,假设现在 ...

最新文章

  1. Are you missing a call to unregisterReceiver()?
  2. 【有奖辩论】工程师和销售创业谁更有优势?
  3. 安装Ubuntu时分区选择
  4. caffe学习(六):使用python调用训练好的模型来分类(Ubuntu)
  5. summit_Chrome Dev Summit 2018的亮点
  6. Python读写文件说明
  7. JavaScript权威设计--JavaScript词法结构(简要学习笔记二)
  8. 现实给了梦想多少时间?
  9. plsql 误删除了存储过程怎么处理_照片恢复 - 内存卡及手机误删照片怎么恢复?...
  10. CSS的position属性
  11. 海思Hi3798MV310机顶盒芯片Datasheet-基本信息
  12. java语言的基本介绍及相关特性
  13. python微信公众号翻译功能_Python实现微信翻译机器人的方法
  14. 【移动架构】Flutter vs React Native:最后一句话。
  15. 计算机系统C盘会还原,重装系统c盘东西还在吗|电脑重装系统c盘文件会被清空吗...
  16. java绘制菱形平行四边形_Java实现金字塔形菱形平行四边形
  17. win10连无线但是无网络连接到服务器,简单几步解决win10连接wifi显示无internet访问的问题...
  18. 测评Mimick模型对词向量重构效果
  19. Centos安装RabbitMQ超详细(必须收藏)
  20. win10服务器网页打不开怎么办,Win10电脑有网但浏览器打不开网页怎么办?

热门文章

  1. python利器的使用-PPython:PHP 拥抱 Python 的利器
  2. python安装包为什么这么小-python(x,y)安装好了为何还是加载不了包
  3. python装饰器类-基于类的python装饰器
  4. python工程师薪资坑吗-完美起航-20201024——记录一下自己的前端工程师之路
  5. python导入py文件-Python导入其他文件中的.py文件 即模块
  6. python快速编程入门课后简答题答案-Python编程:从入门到实践(课后习题8)
  7. python中的二进制、八进制、十六进制的相互转换
  8. git clone一个github上的仓库非常缓慢 和 github网页打不开
  9. zookeeper代码浅析
  10. LeetCode Integer Break(整数拆分问题)