GlasgowSmile-v2通关笔记

时间:2022-07-23
本文章向大家介绍GlasgowSmile-v2通关笔记,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

GlasgowSmile-v2描述:

获取主机DHCP地址

使用到工具

  • nmap
  • disearch
  • wfuzz
  • wireshark
  • BurpsSuit
  • Python

扫描主机开放服务

从上图可知:80,22端口对外开放,8080端口含有过滤规则。

浏览器访问80端口

http://192.168.33.136

很无奈打开发现只有一张图片,并没有多余的东西。到这里只能Fuzzing目录文件。

首先使用Kali自带的dirb进行目录扫描:

正如上图看到的扫描结果并没有得到有用的东西,这个工具不行,显然要更换工具继续干。常用的WEB目录扫描工具有:Dirsearch、DirBuster 、御剑等。

这里我使用dirsearch工具,具体用法请自行百度。

root@kali:~/dirsearch# python3 dirsearch.py-e php,txt,zip -u http://192.168.33.136

很幸运,扫描得到了一些文件。浏览器访问http://192.168.33.136/todo.txt

根据提示,该站点可能存在自动化脚本,继续爆破扫描。工具我使用wfuzz,字典使用kali自带目录/usr/share/wordlists/下的rockyou.txt.gz,并解压出来。

root@kali:~/dirsearch# ls/usr/share/wordlists/
root@kali:~# wfuzz -w rockyou.txthttp://192.168.33.136/FUZZ.sh

经过一段时间的等待,得到一个joke.sh的自动化脚本文件。

浏览器访问

http://192.168.33.136/joke.sh

下载后打开后得到内容如下图:

浏览器访问如上地址:

http://192.168.33.136/Glasgow---Smile2/

从访问后可以获取该站点CMS系统是 Drupal8,含有登录和注册页面。

尝试了一番并没有成功登陆进入,只好返回看看已有的信息。

把自动化脚本仔细阅读,猜测该站点可能存在pcap数据包文件,进一步扫描。

root@kali:~# wfuzz -w rockyou.txt --hc404,400 http://192.168.33.136/FUZZ.pcap

很快得到一个smileyface.pcap文件。

浏览器访问

http://192.168.33.136/smileyface.pcap

下载后得到如下文件

跟踪数据流

看到包含Authorization: Basic内容,很明显需要进行base64解密。

尝试登陆网站

值得庆祝的是成功登陆进入后台。既然到了这里,我们肯定想进一步拿到shell权限。

仔细想想我们还有一个CMS的指纹信息没有利用。先搜索查看Drupal 8有没有已知漏洞利用。最终检索到一个集成好的RCE。

把该project克隆到本地并利用

root@kali:~/Drupalgeddon2#./drupalgeddon2.rbhttp://192.168.33.136/Glasgow---Smile2/

当然也可以POST含有漏洞的URI并自己构造pyload,并使用nc反弹

如果做过靶场环境的小伙伴们,应该都比较清楚所谓的flag都在相应的家目录下。因此进一步进入/home目录。

从上图可知,获取信息的顺序是riddler -> bane ->carnage -> venom -> root

为了搞明白nmap扫描出的结果8080为什么被过滤,查看运行的端口服务:

使用常用的socat工具实现tcp端口转发,进一步在外部机器可以访问,方便寻找信息。

socat -d TCP4-LISTEN:12345,reuseaddr,fork TCP4:127.0.0.1:8080

确认12345端口已被打开:

浏览器访问:

http://192.168.33.136:12345/

查看网页源代码:

分析可能存在文件包含(LFI)漏洞,从而查看nginx相关配置文件。

根据上图路径推测,可能需要至少向上4层:

浏览器访问如下链接:

http://192.168.33.136:12345/?page=../../../../../../etc/passwd

从passwd文件得到的用户都是不可以进行远程登陆,从而进一步查看nginx的配置文件,获取可能用价值的信息。

浏览器访问如下链接:

http://192.168.33.136:12345/?page=../../../../../../etc/nginx/nginx.conf

从上图得知nginx站点配置目录在/etc/nginx/sites-enabled/下。进一步去查看站点配置文件:

浏览器访问如下链接:

http://192.168.33.136:12345/?page=../../../../../../etc/nginx/sites-enabled/default.conf

从上图得知站点默认首页index.php文件访问路径

得到一个谜语,填写正确的谜底将会得到riddler用户密码。(通过搜索可知谜底)

使用 su riddler用户切换

文件查看得到theworldmustbeburned的提示,数据被处理过。

把burn文件内容重新代码格式化,以便阅读。

<? php
function grdl($q0) {
    $b1 = fopen($q0, 'r') or die();
    $a2 = 0;
    while (!feof($b1)) {
        $t3 = fgets($b1);
        $a2++;
    }
    rewind($b1);
    $s4 = 0;
    $n5 = rand(0, $a2);
    while ((!feof($b1)) && ($s4 <= $n5)) {
        if ($x6 = fgets($b1, 1048576)) {
            $s4++;
        }
    }
    fclose($b1) or die();
    return $x6;
}

function gws($n7) {
    $j8 = str_split($n7);
    $a9 = 0;
    foreach($j8 as $m10) {
        $a9 += ord($m10);
    }
    return $a9;
}

function encrypt($c11, $j12, $e13) {
    $f14 = true;
    $l15 = gws($c11);
    $q16 = gws($j12);
    $f17 = str_split($e13);
    $a18 = "";
    foreach($f17 as $m10) {
        $f14 = !$f14;
        $p19 = $l15;
        if ($f14) {
            $p19 = $q16;
        }
        $a18. = ord($m10) + $p19;
        if ($f14) {
            $a18. = "A";
        } else {
            $a18. = "F";
        }
    }
    return $a18;
}
$q0 = "jokerinthepack";
$e13 = readline("Enter the string to encrypt: ");
$c11 = trim(grdl($q0));
$j12 = trim(grdl($q0));
print "n";
print "Your keys:";
print "n";
print "Key 1: ".$c11;
print "n";
print "Key 2: ".$j12;
print "n";
$a18 = trim(encrypt($c11, $j12, $e13));
print "Encrypted string:".$a18.
"nnn"; ? >

代码解读:

PHP代码转化为Python代码

代码审计逆向解密脚本:

运行Python脚本,输入message.txt文件中的Encrypted string进行解密。

解密得到后bane的密码,从而使用bane进行登录。使用sudo -l 查看当前用户权限。

得知有一个make可以提权到carnage用户。使用GTFOBins搜索提权方法。

不断搜寻可以查看的文件

没有看出什么头绪,想使用sudo -l但是不知道用户密码。从而想到使用pspy查看运行的进程。使用bane用户进行sftp登陆,上传pspy文件查看进程。

转到/opt/get_out/相应目录,查询到一个help.txt文件。其文大概意思是:zip文件被删除后会被恢复。

删除devil.zip文件,发现devil.zip真的被恢复了。然而我删除我自己建立的压缩文件却没有被恢复。思考了一段时间进行解压查看,提示告警:没有zipfile文件。

进行了一段时间的搜索得知可能是Python调用zip库实现此压缩包恢复功能。

因为这是会自动调用的python脚本,从而嵌入反弹程序。

此时再次删除devil.zip文件,成功实现反弹效果。并使用python 一句话获取标准shell

搜索查看可以阅读的文件。

搜索查看有没有suid权限

使用cat去逐个查看文件,打开发现有乱码。是二进制文件,使用strings进行打开。

发现gothamwillburn4中有使用cat命令查看batman。因此使用bash进行提权。

再次执行./ gothamwillburn4文件,发现权限更改成root。