EvilBox : ONE
信息收集
扫描网段内存活主机,得到目标
nmap 进一步收集有效信息,只开放了22和80
访问80的页面没有什么有效信息
接着扫一下目录, 没有敏感的文件
在robots中也只有提示了一个可能的用户名H4x0r
secret这个目录下有一个index.html但是访问之后是空白,可能这个目录底下还有一些文件,再换个大一点的字典扫一下
文件包含
发现了evil.php
,但访问同样是空白,但php页面显示空白则有可能是他用了文件包含函数(include(), require()这类)去加载另一文件的php代码。直接fuzz一手得到参数command
。
然后利用php伪协议去读一下这个页面的代码验证看看,果然,他就是直接获取GET传参的文件名,一点校验过滤都没有。
读一下/etc/passwd发现了一个用户mowree
公私钥ssh登录
前面发现22端口已经开放了,看看他的登录方式有哪些,可以看到支持密码和公钥登录
ssh mowree@192.168.56.101 -v
那就可以利用这个文件包含读取到这个用户的私钥id_rsa,但是读不到公钥。
不过还是可以读到存放授权公钥authorized_keys。
破解私钥
将这些文件保存到本地之后,给私钥给个600的权限。然后获取私钥的hash进行破解,得到unicorn
ssh2john id_rsa > id_rsa.hash
john -w=/usr/share/wordlists/rockyou.txt
这里要注意的是kali不要用root,一直习惯了root登进来,然后靶机的服务端的策略里禁了root登录。登来就得到了
/etc/passwd提权
基础的三连,没有能用root执行的命令。
传了linpease.sh上来,发现都忘了去看有suid权限的文件(find / -perm -4000 -type f 2>/dev/null)。舒服了可读可写
接下来就是生成密码,然后写入/etc/passwd。生成密码的话我一直用的SHA-512,所以指定了6但这样也会随机产生盐值导致每次得到的加密字符串不同,所以要先指定一个盐值。
openssl passwd -6 -salt upfine 110
echo 'lockly:$6$upfine$dx3ZrgaPfVmaJCjld406VNRTQx3XtzoUoM0Z2Y/pUiJv75CjH/Uhj5nP6NV3/fRVo54ugcFzkrCxRXrd7Q50s.:0:0::/root:/bin/bash' >> /etc/passwd
切换成刚刚添加的用户,拿到根目录下面的flag。