当前位置:首页 > 未分类 > 正文内容

(原创)代码审计社团官网的典型 SQL 注入漏洞 [代码审计][sql 注入漏洞][ip 注入][emlog 漏洞]

admin9年前 (2018-02-25)未分类661

本次文章内容为典型 SQL 注入与代码审计。社团网站使用的是 emlog 大前端(基于 emlog 改进的版本),漏洞出现在统计文章阅读量的代码处。该漏洞不算 0day,但特殊之处在于此前黑盒测试时未被发现,而代码本身存在典型的注入风险,此次发现未造成损失,但再次印证了开发者的核心原则:永远不要相信来自用户的输入。

一、漏洞发现

1. 漏洞线索来源

某微信群中出现一张盲注测试截图,显示攻击者构造请求头注入 IP 8.8.8.8",Emlog 返回 SQL 语法错误:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"8.8.8.8""' at line 1。从报错可初步判断:用户 IP 输入未经过滤。

盲注测试截图:

2. 漏洞真实性验证

使用抓包工具复现请求,发送构造的数据包到服务器,服务器返回的错误与截图一致,确认漏洞真实存在。

抓包请求内容:

服务器返回报错(确认漏洞存在):

二、注入测试(使用 SQLMap)

由于注入点位于 HTTP 请求头(X-Forwarded-For 字段),需通过抓包获取请求头并结合 SQLMap 进行测试,步骤如下:

1. 工具准备(SQLMap 更新)

因 PentestBox 自带 SQLMap 可能版本陈旧,先手动更新 SQLMap:

2. 构造注入材料

将抓包获取的 HTTP 请求头保存为文件(重点关注 X-Forwarded-For 字段,标记为注入点):

3. 执行 SQLMap 注入测试

使用以下命令加载请求头文件,启动 SQLMap 测试:

sqlmap -r request.txt -p X-Forwarded-For --dbs

(-r 指定请求文件,-p 指定注入点字段)

SQLMap 执行过程:

4. 测试结果与影响

SQLMap 报告显示注入点可成功利用,支持多种注入方式(如布尔盲注、时间盲注):

但由于 SQLMap 的高并发请求,测试过程中社团网站出现宕机(无法连接),印证了此前网站可能被 SQLMap 扫描导致故障:

网站宕机现象:

三、源码分析(定位漏洞代码)

Emlog 基于 PHP 开发,通过以下思路定位漏洞代码:

1. 审计关键词

根据报错信息(含view_ip字段)和注入点(X-Forwarded-For),确定审计关键词:

  • HTTP_X_FORWARDED_FOR(获取 X-Forwarded-For 字段的 PHP 关键字)

  • view_ip(报错中出现的字段,与 IP 记录相关)

2. 定位漏洞代码

通过关键词搜索,找到记录文章阅读量的核心代码,发现以下问题:

  1. IP 获取未过滤:直接通过$_SERVER['HTTP_X_FORWARDED_FOR']获取用户 IP,未做任何过滤或转义;

  1. SQL 语句直接拼接:将未过滤的 IP 直接拼接到 SQL 语句中,导致注入漏洞。

漏洞代码定位:

IP 获取逻辑(未过滤):

SQL 语句拼接(直接使用未过滤 IP):

3. 对比官方源码(确认非原生漏洞)

查看 emlog 官方 GitHub 仓库的源码,发现官方代码不存在该漏洞,确认此漏洞为第三方改进(统计阅读量功能)时添加的自定义代码导致:

四、漏洞修复

为保证 “统计文章阅读量” 功能可用,采用最小修改原则,通过IP 哈希化避免直接使用用户输入的 IP,修复步骤如下:

修复思路

将用户 IP 通过md5()哈希处理后再存入数据库,既保留 “唯一 IP 统计” 的功能,又彻底消除注入风险(哈希值为固定格式字符串,无注入字符)。

修复代码

修改 IP 记录逻辑,在获取 IP 后添加哈希处理:

// 原代码(存在漏洞)
$view_ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
$sql = "INSERT INTO em_view (view_ip, post_id) VALUES ('$view_ip', $post_id)";

// 修复后代码(哈希处理IP)
$view_ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
$view_ip_hash = md5($view_ip); // 对IP进行哈希处理
$sql = "INSERT INTO em_view (view_ip, post_id) VALUES ('$view_ip_hash', $post_id)";

修复代码截图:

五、注入总结

  1. 核心原则:永远不要相信任何用户输入,即使是 HTTP 请求头(如 X-Forwarded-For),必须经过过滤、转义或哈希处理后再使用;

  1. 审计建议:开源程序的第三方插件 / 自定义代码是漏洞高发区,需重点审计;

  1. 测试规范:避免使用 SQLMap 等工具对生产环境进行高并发扫描,易导致网站宕机,应采用低流量手动测试或获得授权后进行;

  1. 漏洞披露:发现漏洞后应优先联系网站管理员,而非公开传播(需打码隐藏网址),避免被恶意利用。

补充说明

后续了解到,测试漏洞的人员仅为技术交流目的(阅读社团文章时顺手测试),社团欢迎此类技术交流,但提醒:公开漏洞相关内容时需隐藏网址,避免不必要的安全风险和麻烦。


扫描二维码推送至手机访问。

版权声明:本文由克拉玛依十三年年社团发布,如需转载请注明出处。

本文链接:https://www.klmyssn.com/?id=51

分享给朋友:

“(原创)代码审计社团官网的典型 SQL 注入漏洞 [代码审计][sql 注入漏洞][ip 注入][emlog 漏洞]” 的相关文章

(原创)校园卡破解系列之权限克隆 [pm3 破解饭卡][pm3 克隆数据][校园卡克隆][IC 卡克隆]

(原创)校园卡破解系列之权限克隆 [pm3 破解饭卡][pm3 克隆数据][校园卡克隆][IC 卡克隆]

一、免责声明本文主张交流与科研学习,请勿对文中提及的内容进行恶意使用!本社团及作者对读者后续的行为不承担任何法律责任。此文章是综合之前饭卡复制、权限提升漏洞后的合并版本,后半部分聚焦饭卡破解;若看过之前文章,可直接跳转至 “(一)饭卡权限提升” 章节。二、基础准备:工具与测试对象1. 核心工具:PM...

(原创)求人不如求己 -- 剪辑音乐就是这么简单 [如何剪辑音乐]

(原创)求人不如求己 -- 剪辑音乐就是这么简单 [如何剪辑音乐]

每每到了学校有活动,需要播放歌曲时,QQ 就多几个好友,消息又 99+,不消问什么事情,就知道是找我剪辑歌曲的同学了。怎么说,我这人对别人提出的需求,都尽力去帮助的,在剪辑音乐这事情上,从没拒绝过,但年复一年,每次剪辑音乐其实很简单,但是量多,就比较影响自己时间了,我又不会拒绝别人,很是尴尬,所以在...

(原创)市教育局 web 渗透 — 市 OA 系统 [web 渗透实例][教育局网络安全][内网安全][内网渗透][oa 系统漏洞]

(原创)市教育局 web 渗透 — 市 OA 系统 [web 渗透实例][教育局网络安全][内网安全][内网渗透][oa 系统漏洞]

一、渗透前置说明(授权与免责)1. 授权声明本次渗透是在取得教育局网络第三方厂商(即时讯立维公司)授权许可之后进行的渗透测试。漏洞报告已第一时间交给教育局及第三方厂商,并协助厂商完成修补,至文章发布时,文中漏洞已修复。本文仅选取漏洞报告部分内容公开,完整漏洞报告模板存放于社团群内部。2. 免责申明请...

(原创)空间可以查秘密了你们知道了嘛?

(原创)空间可以查秘密了你们知道了嘛?

一、前期准备:工具下载与安装1. 核心工具:蓝光安卓模拟器官网下载地址:https://www.bluestacks.cn/bdsem_anmnqpm.html用途:模拟安卓环境,用于登录 QQ 并访问空间小秘密(PC 端暂不支持直接查秘密,需借助模拟器)。2. 安装 QQ 应用打开蓝光安卓模拟器,...

制作一个隐藏在黑页下的大马并且添加后门 [制作大马后门][隐藏后门]

制作一个隐藏在黑页下的大马并且添加后门 [制作大马后门][隐藏后门]

一、声明与目录(00x01)1. 基础信息团队(Team):即刻安全 | www.secist.com作者(Author):Szrzvdny2. 内容目录(table of Contents)隐藏在黑页下的大马隐藏在 404 页面下的大马插入后门并写入收信api.php二、制作开始(00x02)1....

2017_最新过狗一句话编写_附成品 [过狗一句话][过安全狗 bypass]

2017_最新过狗一句话编写_附成品 [过狗一句话][过安全狗 bypass]

环境:php+mysql+apche安全狗:apache版本+8.10规则库即刻安全即刻安全纯技术交流群:307283889如需转载,请联系本博主声明,私自转载必追究Prat 1:思路构思以及实现在 bypass 小分队中 V@1n3R 表哥提到他明天会分享过 waf 的一句话。爱搞事的我当然不能只...