某次代码审计从0day变Nday的路程(漏洞分析)

admin 2024年11月21日11:59:38评论12 views字数 1727阅读5分45秒阅读模式

免责申明

本文章仅用于信息安全防御技术分享,因用于其他用途而产生不良后果,作者不承担任何法律责任,请严格遵循中华人民共和国相关法律法规,禁止做一切违法犯罪行为。

一、前言

  在昨天一位师傅联系到我,说有一套代码找到了一个后台的任意文件上传漏洞,但是想变成前台漏洞,于是找到我进行分析分析。

某次代码审计从0day变Nday的路程(漏洞分析)

二、分析过程

  其实大家也可以看到就是下面这套源码:https://gitee.com/lylme/lylme_spage    我们搭建起来看一看,载入编辑器开始看代码。   某次代码审计从0day变Nday的路程(漏洞分析)    光看代码的目录结构,大致可以猜到,admin目录下的文件肯定是需要后台登录之后才可以进行触发,这里我们先看看在后台登录的逻辑在哪里。这里说一个小技巧:可以搭建起来网站之后通过数据包定位代码

某次代码审计从0day变Nday的路程(漏洞分析)admin下的login.php文件,跟进去看一看。

某次代码审计从0day变Nday的路程(漏洞分析)这里大致看一下我们知道了,对用户名以及密码进行相关加密并且在经过authcode方法处理进行认证的,虽然说看到其中有一个sys_key,但是对于这种鉴权方式拿到了相关的key还是需要username以及password的,这种认证方式还是比较少见的。

三、鉴权分析

 知道了如何进行登录认证的,下来我们看看如何进行鉴权,也就是如何进行的区分你登录了没登录,这里可以说一下,一般都是通过cookie或者session等方式进行鉴权的。 查看一个admin文件,肯定是有鉴权的。某次代码审计从0day变Nday的路程(漏洞分析)可以看到判断了isLogin值是否等于1如果等于的话允许你访问,否则不允许访问,可以验证一下,我们给他加一个!取反,尝试这块是不是真正的鉴权。

取反验证,加入!

某次代码审计从0day变Nday的路程(漏洞分析)尝试访问。

某次代码审计从0day变Nday的路程(漏洞分析)

不加入!验证是否跳转登录

某次代码审计从0day变Nday的路程(漏洞分析)看看是否会跳转登录。

某次代码审计从0day变Nday的路程(漏洞分析)

确定了这个是鉴权之后,我们看看如何绕过。

鉴权绕过(没成功)

在这里我们知道了肯定是上面包含了一个文件为common文件获取到的isLogin值,我们跟入文件查看。某次代码审计从0day变Nday的路程(漏洞分析)继续跟入。某次代码审计从0day变Nday的路程(漏洞分析)这里发现了判断COOKIE当中的admin_token值进行判断,并且这里进行调用authcode方法给到了token,并且分离出来了user以及sid值,然后进行对于admin_user以及admin_pwd进行md5加密,与sid进行对等,那么这里有两个风险点:1、COOKIE可控,但是调用了authcode方法,这个方法也好说因为COOKIE可控我们可以构造恶意payload让他调用authcode方法结构为我们想要的信息。2、使用了==弱类型比较,我们可以尝试绕过,如果构造出来经过authcode解密之后的值与admin_user以及admin_pwd进行md5加密值相等的话可以绕过鉴权。这里先进行看看authcode调用结束之后是上面信息。

某次代码审计从0day变Nday的路程(漏洞分析)稍微改动一下代码,这里就不动调了。

某次代码审计从0day变Nday的路程(漏洞分析)这里发现我们需要的就是499dc4f0fdbc3f1e2ded411795c41138与admin_user以及admin_pwd进行md5加密值相等,但是查阅资料之后发现md5弱比较的类型需要md5开头为0e开头才可以,而且好像0e后面不可以有字幕,所以这条路径就卡在这里了。

前台RCE审计过程

  但是我们也获取到了一些信息,那就是PHP当中如果不包含文件common.php那么就是可以进行前台访问的,把目光放在了前台上面。  使用脚本进行跑一下,筛选出来全部不存在common.php的文件。某次代码审计从0day变Nday的路程(漏洞分析)   获取到之后,把前台可以访问的文件写一个脚本全部复制到一个路径下,用工具跑一次看看。

某次代码审计从0day变Nday的路程(漏洞分析)扫描之后看file文件找到了漏洞,分析如下:

某次代码审计从0day变Nday的路程(漏洞分析)这里接受参数file或者url然后将file参数给到了方法upload_img方法,跟入方法看看。

某次代码审计从0day变Nday的路程(漏洞分析)其中存在一个过滤就是获取文件后缀名调用了方法validate_file_type,跟入这个方法看看如何过滤的。

某次代码审计从0day变Nday的路程(漏洞分析)这里发现获取到后缀之后最终会判断MIME,并不会直接退出,所以我们只要MIME为数组当中的值即可,尝试验证一下。

漏洞验证

尝试进行漏洞验证

某次代码审计从0day变Nday的路程(漏洞分析)尝试访问。

某次代码审计从0day变Nday的路程(漏洞分析)

天塌了

正当我兴致勃勃的找这个师傅装* 的时候,把这个漏洞详细发给了这个师傅,这个师傅没回复我别的,只回复了我几个字符。

某次代码审计从0day变Nday的路程(漏洞分析).................

某次代码审计从0day变Nday的路程(漏洞分析)

完结

某次代码审计从0day变Nday的路程(漏洞分析)

原文始发于微信公众号(进击安全):某次代码审计从0day变Nday的路程(漏洞分析)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月21日11:59:38
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   某次代码审计从0day变Nday的路程(漏洞分析)https://cn-sec.com/archives/3419219.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息