zoukankan      html  css  js  c++  java
  • emlog6.0代码审计

    后台SQL注入

    漏洞位于 /admin/configure.php 的46 行,可以看到这里未对 ip 进行过滤
     

     
    跟进 delCommentByIp
     

     
    直接接入了 sql语句中
     
    利用方法
     

     
    根据 ip进行删除评论,抓包后修改 ip
     

     
    不能直接构造 POC
     

     
    有个认证信息
     
    后台还有一个注入是在 /admin/configure.php
     

     
    未对 tag 进行过滤,取 $tags 数组的 键值 作为参数传入 deleteTag
     
    跟进 deleteTag
     

     
    直接将 $tagId 传入sql语句

    构造 tag[1 and updatexml(1,user,1)]=xx 可造成SQL注入
     

    利用方式

    先点击全选之后再点击删除,抓包修改 payload(同样有 token 认证,因此需要在浏览器修改)
     

     

     
     

    后台任意文件上传

     
    漏洞位于 /admin/plugin.php
     
    在其插件上传出存在任意文件上传
     

     
    首先接受我们传入的 zip 文件,将缓存路径 和 解压路径 以及 plugin 参数传入 emUnZip
     
    我们跟进 emUnZip
     

     
    先分析上部分
     
    首先使用 class_exists 判断是否有 ZipArchive 类,之后检查是否有读写权限,然后使用

    getNameIndex 获取解压后的目录, explode('/', $zip->getNameIndex(0), 2);
     
    其实就是要获取解压后目录的
     
    $dir = isset($r[0]) ? $r[0] . '/' : ''; 是为了在目录后面 加上 "/"
     

     
    这里面是判断解压后的目录是否有 解压包名称的 php文件(假设为 test.zip 则检测是否有 test.php)
     
    判断成功过调用 extractTo 函数解压
     
    利用过程
     

     

     
    上传后在 ../content/plugins/mikasa/mikasa.php 中就可连接
     

    注意先创建一个 test 文件夹 在把 test.php 放入里面(因为使用的是getNameIndex 函数获取目录的)
    

     

     
    同理在 /admin/template.php 也存在任意文件上传
     

     

     
    利用方式不再解释
     

    数据库备份拿shell

     
    思路也简单,在 /admin/data.php 存在数据库备份/导入,因此我们只要在备份后的 sql 文件里面,写一些拿shell的指令就行了
     
    一般有两种思路
     

    1. 直接写文件 //不建议使用
    2. 开启日志 //建议使用
    

     

     
    在中间插入语句导入即可(不做过多解释)
     

    存储型XSS

     
    /admin/page.php 存在 存储型 XSS
     

     
    新添加文章时,只对大部分参数进行了 addslashes 处理
     

    跟进 addlog
     

     
    未进行任何过滤存入数据库
     
    看一下输出那边
     

     
    跟进 getLogsForAdmin
     

     
    仅仅对标题进行了转义,想上面的模板(template变量)依然可以导致 xss
     

     
    验证
     

    参考链接

     
    https://www.freebuf.com/vuls/195351.html

    通过这次代码审计,也算是学到了不少东西吧,希望可以变得更强

  • 相关阅读:
    快速了解MongoDB
    如何在 Ubuntu 上安装 MongoDB
    Python操作MongoDB文档数据库
    C# Convert.ToDouble 在不同的区域下的问题
    Visual Studio 调试C#程序时,提示“无法加载程序集****.XmlSerializers.dll",文件找不到 的问题
    C# 调用打印机打印文件
    C# 获取所有可用的打印机
    记录一次排查使用HttpWebRequest发送请求的发生“基础连接已关闭:接收时发生错误”异常问题的过程
    SQL 分组后只获取每组的一条数据
    记录一次使用NPOI遇到的问题
  • 原文地址:https://www.cnblogs.com/Mikasa-Ackerman/p/emlog60dai-ma-shen-ji.html
Copyright © 2011-2022 走看看