
靶场搭建
靶场下载地址:https://download.vulnhub.com/evilbox/EvilBox---One.ova
下载下来是虚拟机.ova压缩文件,直接用Vmvare导出就行
打开后把网络模式设置为NAT模式(桥接模式也可以,和kali攻击机保持一致就可以)
开启虚拟机
开启后发现没有自动获取ip,解决办法看我这个文章:https://www.freebuf.com/articles/network/343723.html
解决后,重启发现这里还是没有显示ip,但是扫描能扫描到ip,看来是这里回显有问题
靶场搭建完成
渗透测试
由于不知道靶机ip,所以需要扫描NAT的网段
128是kali攻击机的ip,所以135是靶机ip
扫描靶机端口开放情况
发现开放了22端口,存在ssh服务
发现开放了80端口,存在http服务,并且服务器中间件为Apache
访问一下WEB页面,发现为Apache默认页面
搜索一下敏感目录
发现robots.txt
发现/secret,什么都没有
/secret/是个目录,我们继续搜索目录下的铭感目录
发现/secret/index.html页面,发现页面什么都没有
再扩大一下目录字典
很奇怪的是用dirsearch这个工具什么都没有搜索到
同样的字典,换gobuster这个工具能搜索到
feroxbuster这款工具也可以搜索到,看来是我使用的这款工具dirsearch有问题
发现了evil.php文件,发现什么都没有,猜测可能需要添加参数
进行参数爆破
创建一个字典用于保存参数值,将数字和一些常用符号和一些很大可能存在于服务器上的文件名输入(用于探测各种可能存在的漏洞)
使用ffuf工具进行爆破
ffuf -w /usr/share/wordlists/seclists/Discovery/Web-Content/burp-parameter-names.txt:dic1 -w /usr/share/wordlists/seclists/Discovery/Web-Content/canshuzhi.txt:dic2 -u http://192.168.52.135/secret/evil.php?dic1=dic2 -fs 0
爆破出了参数名为command,参数值为/etc/passwd
在网页上看一下这个参数的回显,发现读取到了/etc/passwd这个文件,存在任意文件读取漏洞
试着读取/etc/shadow这个文件,发现没有读取到,权限不足
试一下看文件包含是否可以进行远程文件包含
在kali攻击机上搭建一个一句话木马的网站页面
进入/var/www/html页面下,新建一个shell.php页面,启动apache服务
发现不存在远程文件包含
不存在文件包含,我们尝试使用php伪协议
我这里利用php://filter伪协议封装器来读取文件(base64编码可以读取未被解析的文件源码的base64编码,正常情况下读取会被解析,读取到的是返回结果)
读取evil.php
command=php://filter/convert.base64-encode/resource=evil.php
通过cyberchef来解码获得到源码
也可以通过这个php封装器来进行文件写入,测试看是否具有写入权限
先生成一段base64编码
将这段编码写入
command=php://filter/write=convert.base64-decode/resource=test.php&txt=dGVzdAo=
读取刚才写入的文件,没有读取到文件,发现写入失败,不具有写权限
这个文件包含漏洞不能getshell
我们在刚才读取到的/etc/passwd文件里可以看到一个具有ssh登录权限的一个叫mowree的用户,我们可以尝试进行ssh爆破
爆破之前查看一下靶机ssh支持的验证方式,发现支持密钥和密码验证
支持密钥认证的话,我们可以尝试去读取这个用户的家目录下是否存在有公钥,发现果然存在公钥
在公钥中我们知道了,密钥使用的是rsa算法
看一下目录下是否存在私钥(因为是rsa算法,所以默认私钥名称为id_rsa),发现也存在私钥
获得了私钥,我们可以利用私钥进行登录
将私钥保存到kali上
给私钥赋予600的权限
发现密钥登录还是需要密码
所以我们需要对私钥进行密码爆破
## 先将id_rsa生成一个用于john工具可以识别的hash文件 ssh2john id_rsa > passwd ## 利用john工具进行破解 john --wordlist=/usr/share/wordlists/rockyou.txt passwd
成功爆破出密码为unicorn
进行登录,登录成功(我中间有出错,可能时私钥没有复制完全的缘故,如果出错可以多试几次重新保存私钥)
为普通用户权限,成功获得第一个shell
进行提权
sudo提权
sudo -l 查看是否有可提权的命令
不能通过这种方式提权
SUID提权
SUID可以让程序调用者以文件拥有者的身份运行该文件,当我们以一个普通用户去运行一个root用户所有的SUID文件,那么运行该文件我们就可以获取到root权限
通过命令
find / -perm -4000 2>/dev/null查看是否具有root权限的命令
常见可用于提权root权限文件
nmap
vim
find
bash
more
less
nano
cp
awk
也不能利用
内核提权
搜索相应漏洞,提权失败
查找当前账号可以写的文件(一般情况下/proc、/sys、/run目录下的文件不应关注)
find / -writable 2>/dev/null | grep -v /proc | grep -v /sys | grep -v /run
在文件中发现了异常,对/etc/passwd文件可写
/etc/passwd这个文件在linux中应该时只能被root最高权限用户可写,其他用户只能读
但是在靶机上,任何用户都可以改写/etc/passwd文件
/etc/passwd文件的内容
root:x:0:0:root:/root:/bin/bash account:password:UID:GID:GECOS:directory:shell 用户名:密码:用户ID:组ID:用户说明:家目录:登陆之后的 shell
尝试改写root用户的密码
生成一个root的密码
openssl passwd -1
将密码复制到/etc/passwd替换root的密码
通过su切换到root用户,提权成功
获得到第二个flag
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)