点击上方蓝字关注我们
事件起因
事情发生在某省护网期间,客户的某个系统被上传了webshell,当时没在意
我可爱的领导经过昨天一下午的努力,找到了相关系统源码,随后开始进行审计
文件上传的接口
flashupload.action
上传文件后,不会返回对应文件路径,所以只能通过白盒进行挖掘
首先定位到文件上传代码
跟进saveFile方法
发现文件名路径是时间戳+jsp,但此时间戳非彼时间戳
上传的目录是在system.properties,由管理员自定义目录
跳转到时间戳代码
第⼀段代码是获取具体时间,具体到毫秒
第⼆段代码是把具体时间转换为自定义格式的时间戳,而不是unix时间戳
所以webshell url则为如下格式:
http://127.0.0.1/uploads/自定义时间戳.jsp
因为具体到毫秒,所以要对后三位数字进行爆破
burp 遍历后三位
20231120214217001
. . . . . .
20231120214217999
那么代码层面分析完成后,开始实操
全都是404,这就很离谱(印象中,老版本的bp是可以修改时区的,新版本没找到在哪里修改)
于是又使用yakit发包,发现时区也是GMT
其实,这里存在一个坑,
burp中,响应包的时间并不是服务器的时间,而是GMT时区
代码中的时间,是北京时区
java.util.Date d = new java.util.Date(); //获取当前系统的时间
所以解决办法就是,使用python写一个同步请求,这边发送数据,那边获取当前系统时间