zoukankan      html  css  js  c++  java
  • espcms代码审计第一弹

    以前的代码审计都是在CTF比赛题里面进行对于某一段代码的审计,对于后端php整体代码和后端整体架构了解的却很少,所以有空我都会学习php的代码审计,以提高自己

    环境就直接用的是phpstudy,学习的前期对于环境的搭建以能够满足我们学习的需求即可,没有必要将每个组件分开安装,反而本末倒置了。

    使用的代码审计工具是 Seay源代码审计系统

    同时参考书籍也是尹毅的 《代码审计-企业级web代码安全架构 》

    作者的博客:

    https://seay.me/

    espcms是2014版本的。

    我们使用seay代码审计工具

    常见的代码审计思路有以下四种:

    1,根据敏感关键词回溯参数传递过程
    2,查找可控变量,正向追踪变两个传递过程
    3,寻找敏感功能点,通读功能点代码
    4,直接通读全文代码

    espcms的代码审计,我们跟书中一样,使用对于敏感函数回溯参数过程。

    先按照书上审计的过程走一遍,我们再自己根据敏感函数寻找一些漏洞

    我们找到

    22条提示我们可能存在sql注入漏洞,继而我们点击该条

    可以看到这里将我们传入的$parentid代入$sql语句中进行查询,而$parentid变量的值是在oncitylist()函数里面没有进行设么过滤,传参过来的函是accept()

    这里仅对$parentid变量进行了是否为空的检测。

    右键定位accept()函数

    可以看到accept函数里面的内容

    在这个位置对于输入的$k进行了daddslashes函数,daddslashes函数实际上是包装之后的addslashes函数

    即对于我们输入的parentid参数输入的单引号等预定义字符进行过滤,不过之前的$sql语句里面我们发现

    我们可以可以发现对于$parentid参数没有单引号进行闭合,所以 daddslashes 实际上没有起到任何作用。

    如果这个语句写成下边这种情况:

    $sql = "select * from $db_table where parentid='$parentid'";

    同时还是像之前一样使用了addslashes()函数,那么除非有宽字节注入或者其他的特殊情况,不然我们就不能进行注入了。

    我们发现这里有注入之后,可以看到该函数在important这个类里面

    于是我们全局变量搜索出现了important类的位置,重点关注的是new 了important类的地方

    可以看到在adminsoft/index.php这个页面new 了important这个类

    点击之后可以看到在index.php页面$archive和$action这两个变量都有默认的值,我们在本地搭建的网站不输入参数直接访问就可以看到(当然在代码的逻辑里面也可以很清楚看出)

    可以看到当我们没有任何参数输入的时候,archive=adminuser&action=login

    但是实际上我们是想

    调用important类里面的oncitylist函数,同时传递一个parentid的值。

    在这里传入的$action与’on’字符串进行连接,组合成为新的$action,所以我们传入的$action=citylist,这里我们令$archive也为citylist,本来觉得archive为何值不重要,不过用其他array组里面的值就会报错,应该是代码里面其他地方做了限制。

    因为是在admin的界面下进行的注入,所以我们需要先登录,再在url输入我们构造的payload

    现在可以看到已经出现了citylist

    不过我们的目的是传递parentid参数,

    因为我们访问成功之后实际上已经调用了important类里面的oncitylist方法,不过因为我们没有主动传递parentid的值,所以其默认为1而已。

    于是我们手动使用get方法传递parentid的值

    构造payload之后,我们可以看到现在返回页面的citylist只剩下了北京,根据我们之前的分析,此处parentid存在不需要单引号闭合的sql注入漏洞,于是我们开始常规注入

    字段数为5

    回显位置: 3

    在3的位置查询数据库名字和用户名

    OK,跟着书上的漏洞复现成功,第一弹结束,第二弹的分析过程就自己分析吧,站在巨人的肩膀上固然会看的很远,但是更需要自己向上攀登才能到达更远的地方

  • 相关阅读:
    Atitit 经济学常见的流派 古典主义与凯恩斯主义
    Atitit 学习方法 体系化学习方法 Excel 科目,分类,专业 三级分类。。 知识点。。 课程就是每一个知识点的详细化。。 比如经济学 类别 专业 xx概论知识点 3、金
    atiitt it学科体系化 体系树与知识点概念大总结.xlsx
    Atitit 减少财政支出普通人如何蹭政府补贴措施 attilax大总结.docx
    Atitit 信用管理概论 attilax学习心得
    Atitit.月度计划日程表 每月流程表v5
    Atitit 企业6大职能 attilax总结
    Atitit 常见每日流程日程日常工作.docx v8 ver ampm imp 签到 am y 天气情况检查 am y 晨会,每天或者隔天 am 每日计划(项目计划,日计划等。 am
    Atitit 财政赤字解决方案
    Atitit 建设自己的财政体系 attilax总结 1.1. 收入理论 2 1.2. 收入分类 2 1.3. 2 1.4. 非货币收入 2 1.5. 2 1.6. 降低期望 2 1.7.
  • 原文地址:https://www.cnblogs.com/Cl0ud/p/12180435.html
Copyright © 2011-2022 走看看