[关闭]
@1kbfree 2018-05-08T16:34:20.000000Z 字数 1100 阅读 977

[逻辑缺陷]程序安装绕过

代码审计


banner

在很多开源程序里,都会有安装程序的那个功能,这样让那些不会写代码的人也可以成功的安装这个程序

安装程序界面:

帝国cms安装界面(网上随便找的):
image_1ccqn3462g4getu1cb6t5g1emr9.png-179.1kB

KingCMS安装界面(还是网上随便找的):
image_1ccqn66ef1v8mb8u1n44asf3gtm.png-493.7kB

这些就是安装网站的界面,只需几步操作就可以安装一个程序,相当方便,但是如果在逻辑上存在一些问题的话,就可能导致网站重装,下面我们就来看看。

我们需要先明白一下file_exists(),他的参数是一个文件名,主要判断文件是否存在的,如果存在放回true,不存在则返回false,所以现在在安装完某cms后,某cms会生成一个install.xxx文件,用file_exists()来判断文件是否存在,如果文件存在的话就不能再一次安装,如果文件不存在才可安装,但是但凡这里出现了逻辑问题就会有危险,看下面的简单讲解

目录

image_1ccqoerf9h0pa4tt1i19571k169.png-34.2kB

index.php文件代码是这样的:

  1. <meta charset="utf-8">
  2. <?php
  3. /**
  4. * @Author: iamfree
  5. * @Date: 2018-05-06 20:07:34
  6. * @Last Modified by: iamfree
  7. * @Last Modified time: 2018-05-06 20:17:31
  8. */
  9. if (file_exists('install.666')){ //判断是否存在install.666文件
  10. header("Location:home.php"); //跳转至首页
  11. }
  12. echo "<h1>开始安装程序...</h1>";
  13. ?>

home.php文件代码是这样的:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>这是首页</title>
  6. </head>
  7. <body>
  8. <!-- 假装这是很炫酷的首页 -->
  9. <h1>hello 欢迎来到首页</h1>
  10. </body>
  11. </html>

当我们访问index.php的时候,因为目录下存在install.666文件,所以会跳转到home.php,这里我就不展示了,因为我一访问index.php立马跳转到home.php

那么我们如何来绕过呢,我们可以利用BurpSuite工具来绕过,因为BurpSuite不执行http头里面的跳转指令(某大佬告诉我的=v=),我来演示一下。

访问index.php,然后抓包:

image_1ccqpigug5jl1cud175g1qs41f2013.png-65.6kB

ctrl+r,放到Repeater里

image_1ccqpk3e9116dmi21u741a9p1lr41g.png-90.2kB
成功绕过

那么我们该如何防御呢,其实方法很多种,最粗暴的就是在跳转后面加上一个exit(),下面我再来演示一下

image_1ccqpoaoh3uiu6q1l3j8on162l2d.png-50.5kB

然后我们在用Repeater里的Go一下:

image_1ccqppuks1guf8b6stj1cgq1gnv2q.png-89.2kB
成功防御了

作者 @iamfree
2018 年 05月 06日

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注