信息收集
nmap
获取userFlag
去web看一下
web上只有一个默认的index.html,通过gobuster扫一下目录
gobuster dir -u http://192.168.43.208/ -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt
有一个wow目录,进去可以看到一个txt文件,不过不是在破点这里起作用的
在index.html的页面上有句话
这里就是一个提示,提示说有一个NAMARI目录,但这是西班牙语,即使翻译成中文也无法理解它想表达的这层意思,至少我理解不出来
这里还有一个办法来发现目标网站存在该目录,通过cewl爬取页面内容,生成字典,然后利用该字典进行目录扫描来发现这个目录
cewl http://192.168.43.208 > test
然后就去访问它吧
一个文件上传,一个文件包含,那这里应该就是要利用LFI来get shell了,先上传一个文件试试
上传成功了,把后缀更改为php再试试
也上传成功了,看来上传点这里没什么校验,唯一的问题是不知道上传文件的位置,先试着在文件包含点利用伪协议读一下当前php文件的源码
解码整理后,php源码如下:
<?php
// 文件上传管理
if ($_SERVER['REQUEST_METHOD'] === 'POST') {$target_dir = "uploads/";// 获取原始文件名及其扩展名$original_name = basename($_FILES["fileToUpload"]["name"]); // 获取文件名,包括扩展名$file_extension = pathinfo($original_name, PATHINFO_EXTENSION); // 仅获取扩展名$file_name_without_extension = pathinfo($original_name, PATHINFO_FILENAME); // 仅获取文件名$rot13_encoded_name = str_rot13($file_name_without_extension);$new_name = $rot13_encoded_name . '.' . $file_extension;// 创建新文件的完整路径$target_file = $target_dir . $new_name;// 以新名称将上传文件移动到目标目录if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {// 不显示文件名的通用消息$message = "El archivo ha sido subido exitosamente.";$message_type = "success";} else {$message = "Hubo un error subiendo tu archivo.";$message_type = "error";}
}if (isset($_GET['page'])) {$file = $_GET['page'];include($file);
}
?>
分析代码可知上传文件的文件名是原文件名rot13后的结果,上传后的文件存放与 uploads 目录下,所以如果上传的是test.php,则上传后文件为 grfg.php,而且由于这里可以直接上传php,所以上传后我们直接访问即可,就不需要再借用LFI了,这里我就直接反弹shell了
然后之前wow目录下提示/opt目录里有东西,我们去看一下
有一个zip压缩包,拉到本地来
需要密码,通过ARCHPR爆破
然后那个文件里放的就是rodgar用户的密码
6rK5£6iqF;o|8dmla859/_
切到rodgar用户上去,在家目录下拿到userflag
userflag:990100d68635b1e645d41e8af7ef6bf1(md5)
获取rootFlag
id看一下当前用户所属的组
发现了两个可以利用的地方,但是通过sudo -l却显示该用户没有sudo权限
这里我猜测应该是在sudoers里把下面这条默认配置删去了
%sudo ALL=(ALL:ALL) AL
那就利用lxc提权吧,用户在lxd组里,所以可以通过lxc命令创建lxd容器来提权到root。这里的思路是通过lxc创建一个特权容器,然后将本机的根目录挂载到容器里,然后由于是特权容器,意味着容器内的root用户拥有挂载到容器中的系统的root权限。
具体的操作步骤可以参考以下链接:
Linux LXC提权
如果在执行 lxc init myimage ignite -c security.privileged=true 出现了以下报错:
Error: Failed creating instance record: Failed initialising instance: Failed getting root disk: No root device could be found
出现该错误的原因为缺少必要的存储配置,即 LXD 没有配置默认存储池(storage pool),可以通过以下命令来初始化 LXD 配置,这会自动创建默认存储池:
lxd init --auto
这样就拿到rootflag了,然后sudoers里果然是把那条配置项去掉了
rootflag:c57c39cac1c025a1e5830076c23f7796(md5)