系统重装漏洞学习

0x00 可能引发系统重装漏洞的地方

  1. 无验证功能,任意重装覆盖
  2. $_GET[‘step’]验证参数可控,导致验证跳过
  3. 变量覆盖导致系统重装
  4. 判断lock后跳转未结束代码
  5. 解析install.php.bak
  6. 其他组合漏洞导致绕过

 

0x00 第4点举例:

Fengcms_V1.32系统重装漏洞:

  1. 直接开代码:

系统重装漏洞学习_第1张图片

非常明显虽然验证了是否有重装,但是在进行跳转之后没有对代码进行终止,那么我么阻止跳转就可以进行继续安装的步骤。

  1. 先安装一次系统:

系统重装漏洞学习_第2张图片

系统安装成功,可以看到已经生成了安装配置文件INSTALL:

系统重装漏洞学习_第3张图片

  1. 接下来验证系统重装:

系统重装漏洞学习_第4张图片

显示已经安装了系统,但是确认弹框之后依然进入了系统安装的界面

系统重装漏洞学习_第5张图片

 

 

 

0x02 第6点导致系统重装:

Ps:我觉得应该算是第6点,因为属于代码逻辑层面有问题。

  1. 漏洞原因:代码逻辑错误导致被验证lock文件位置与安装生成lock文件位置不一致。
  2. 首先还是查看安装代码:

系统重装漏洞学习_第6张图片

可以看到验证了你php的版本,根据不同的版本选择不同的安装文件,我的是php5,那么变量installDir的值应该就是php5。我们先输出一下当前所在的目录:

系统重装漏洞学习_第7张图片

  1. 我们先安装一次系统:

系统重装漏洞学习_第8张图片

  1. 然后根据第二步中的代码,我们应该去到php5文件夹下执行我们的安装步骤:

首先还是进行lock文件验证,但请注意验证的文件位置(打印了出来):

Lock文件存在于install文件夹下面的data文件夹。

  1. 接着我们来到lock文件生成的地方:

系统重装漏洞学习_第9张图片

我们可以看到,打开了phpyun.lock这个文件写入安装信息,但是值得注意的是,打开文件的路径采用了相对路径的方式,在上面我们已经输出过当前文件的绝对路径(D:\environment\php\2018\PHPTutorial\WWW\cms\phpyuncms\uploads\install\index.php),现在再结合这个相对路径,lock文件存储的位置就变成了:“D:\environment\php\2018\PHPTutorial\WWW\cms\phpyuncms\uploads\data\phpyun.lock”,而刚才我们进行验证的文件位置是:

D:\environment\php\2018\PHPTutorial\WWW\cms\phpyuncms\uploads\install\data\phpyun.lock”

很明显不是同一个文件,造成验证出bug,系统重装。

系统重装漏洞学习_第10张图片

 

系统重装漏洞学习_第11张图片

 

  1. 修改方案:

系统重装漏洞学习_第12张图片

系统重装漏洞学习_第13张图片

 

 

0x03 已知的第三种情况:存在任意文件删除,导致可删除lock文件,进行系统重装。

 

Ps:以上源码地址:链接:https://pan.baidu.com/s/1HTi4MT3et4_4ls5rNIfjJQ 提取码:oecs

你可能感兴趣的:(代码审计)