如何从外部进入最终root主机,取得flag
CTF比赛环境
两种方式
1.给予在同一局域网中的攻击机和靶场机器,以web方式可以访问攻击机,通过攻击机来渗透靶场机器,获取对应的flag值;(一般情况下给于kali linux作为攻击机,并且举办方提供计算机)
2.给予一个网线接口,用户自备工具,直接连接网线,进行渗透靶场机器,获取对应的flag值;
实验环境
1.kali linux 192.168.253.12
⒉.靶场机器192.168.253.10
接下来该做什么呢?
目的:获取靶场机器上的flag值;
信息探测
对于只是给定一个对应lP地址的靶场机器,我们需要用对其进行扫描,探测开放的服务。
渗透其实是针对服务的漏洞探测,然后进行对应的数据包发送,获取机器的最高权限
- nmap -sV 192.168.253.10 挖掘开放服务信息 -sV版本探测
分析探测结果
每一个服务对应计算机的一个端口,用来进行通信。常用端口0~1023端口,在扫描结果中查找特殊端口
针特殊端口进行探测,尤其对开发大端口的http服务进行排查;
探测大端口的信息
对于开放http服务的大端口,可以采取http://ip:port/
的形式访问;
鼠标右键查看源代码,获取对应信息;如果没有flag信息,使用工具探测隐藏页面。
-dirb http://ip:port/ 对这个服务的隐藏文件进行探测
1.点击鼠标右键—>open link可以打开robot.txt文件,发现有一个taxes文件,在浏览器中查看该文件,找到flag1
2.点击鼠标右键—>open link可以打开ssh文件
id_rsa为私钥,id_rsa.pub为公钥,私钥与公钥进行对比,进行加解密,对比成功则登录服务器。
查看id_rsa
id_rsa.pub的公钥信息在服务器端不需要下载。
针对隐藏页面分析,直接使用浏览器访问,查看效果、对应源代码可能会获取到flag,或者下一步对应的提示;
挖掘ssh信息,不断访问获取更多泄露的ssh秘钥信息
对应用户名可从authorized_keys中找到,ssh -rsa 密钥 用户名
如图所示用户名为simon
//ssh -i 密钥 用户名@服务器ip
ssh -i id_rsa simon@192.168.253.10
直接输入可能会出现permission denied(权限未赋予),下载的文件先需要赋权限,可读可写,
赋予权限之后重新登录结果如图所示,需要密码。
解密ssh秘钥信息
使用ssh2john将id_isa秘钥信息转换为john可以识别的信息。
chmod 600 id _isa
ssh2john id_isa > isacrack
利用字典解密isacrack信息
zcat /usr/share/wordlists/rockyou.txt.gz l john --pipe --rules rsacrack
密码为starwars
到这里登录到主机,但是并不是root权限?该如何获取呢?深入探测根目录
cd /root进入根目录进行查看,到发现无权限,说明现在获取的simon只是一个普通用户不能执行root权限,需要提升权限
提升权限
查找具有root权限的文件
- find / -perm -4000 2>/dev/null
查看read_message.c
运行代码read_message输入用户名
需要char buf[20],20个字符,进入到bin/sh下面进行提权,出现shell工作界面
根据代码审计结果,得到flag,以及提升权限;