记一次通杀的0day审计之路

admin 2024年1月10日16:51:39评论44 views字数 675阅读2分15秒阅读模式
 

事件起因

 

事情发生在某省护网期间,客户的某个系统被上传了webshell,当时没在意

我可爱的领导经过昨天一下午的努力,找到了相关系统源码,随后开始进行审计

 

文件上传的接口

 

 

flashupload.action

 

上传文件后,不会返回对应文件路径,所以只能通过白盒进行挖掘

首先定位到文件上传代码

 

记一次通杀的0day审计之路

 

跟进saveFile方法

记一次通杀的0day审计之路

发现文件名路径是时间戳+jsp,但此时间戳非彼时间戳

上传的目录是在system.properties,由管理员自定义目录

记一次通杀的0day审计之路

 

跳转到时间戳代码

 

记一次通杀的0day审计之路

 

第⼀段代码是获取具体时间,具体到毫秒

 

记一次通杀的0day审计之路

第⼆段代码是把具体时间转换为自定义格式的时间戳,而不是unix时间戳

记一次通杀的0day审计之路

所以webshell url则为如下格式:

http://127.0.0.1/uploads/自定义时间戳.jsp
因为具体到毫秒,所以要对后三位数字进行爆破

 

burp 遍历后三位

 

20231120214217001

. . . . . .

20231120214217999

 

那么代码层面分析完成后,开始实操

 

记一次通杀的0day审计之路

全都是404,这就很离谱(印象中,老版本的bp是可以修改时区的,新版本没找到在哪里修改)

于是又使用yakit发包,发现时区也是GMT

 

其实,这里存在一个坑,

 

burp中,响应包的时间并不是服务器的时间,而是GMT时区

记一次通杀的0day审计之路

 

代码中的时间,是北京时区

 

java.util.Date d = new java.util.Date(); //获取当前系统的时间
所以解决办法就是,使用python写一个同步请求,这边发送数据,那边获取当前系统时间

记一次通杀的0day审计之路

记一次通杀的0day审计之路

 

原文始发于微信公众号(轩公子谈技术):记一次通杀的0day审计之路

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年1月10日16:51:39
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   记一次通杀的0day审计之路http://cn-sec.com/archives/2226507.html

发表评论

匿名网友 填写信息