某开源框架从注入到Getshell

0x00 前言

SemCms是一套开源外贸企业网站管理系统,主要用于外贸企业,兼容IE、Firefox 等主流浏览器。SemCms使用vbscript语言编写,结合iis运行。采用国际通用utf-8编码编写。

SemCms非常适合在外贸企业,电子商务互联网应用上使用,2009年12月首次发布以来,SemCms依靠出色的用户体验和领先的技术不断扩大外贸场占有率,目前在国内已经成为最受欢迎的英文外贸网站之一。

0x01 往事

Semcms曾被多次爆出有重大漏洞,然后好像最近又爆出了最新版本漏洞。这里我用最新版本复现一下,顺便看看如何修改。

0x02 过程

这里在网上直接下载一套最新的代码,最新的代码版本为V2.3。

第一处注入位置是在后台的找回密码处,这里我的链接是如下图所示的

这里稍微有点困难的就是,这个后台的地址前四位是随机的,不过这里也不难拿到。

这里可以看到这里随机数只是取了26位,一共是四位只有26^4种可能,以现在计算机的运行速度很快就可以拿到。

然后我们就可以接触到这个注入点了。

这个功能对应的文件为web_mail.php这个文件,看一下代码这个漏洞是如何出现的

在这里可以看到判断是否为空的时候这里做了过滤,但是在下面SQL语句拼接的时候却又忘记了过滤,直接使用了接收到的内容做了拼接。

这里拿到数据包测试一下:

这里可以看到的确是可以注入的。这里我们发现可以直接构造语句,我们可以想到一个SQL直接写SHELL的神句。

构造以下的数据包:

然后直接来执行测试

执行完我们发现这里直接多处了一个文件,我们看一下这个文件的内容

这里面包含了我们在数据库中查询到的内容以及我们自定义写入的shell脚本,我们访问一下

这里可以看到,利用SQL注入可以直接得到shell。

修复方式:

     这里我们对输入的字符串进行过滤,如下图所示的修改。

这里可以看到现在并识别不了了。

第二处注入在登陆时,这里对传递的cookie值过滤有漏洞,这个文件在funtion.php里面。首先看一下代码,这里只是直接对两个获取到的值进行了html实体转义。然后就直接拼接了。

这里我们对后台主界面直接进行请求,直接请求会显示账号密码错误。

然后我们在cookie加入以上两个字段。这里为了直观一些,我把SQL语句直接打印出来。

这里如果是你输入单引号,这里的语句是如下所示的

我们可以想办法将第一个参数后面的引号转义掉,然后再把最后的全部注释掉这样前面就变成了一个参数,这样就可以直接登陆成功了。

修复方式,这里我们对参数直接过滤掉所有的特殊字符

可以看到这里已经不能再直接登陆了。

希望使用该源码的站长第一时间修复掉这个漏洞。

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2017-11-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Zephery

谈谈个人网站的建立(五)—— 小集群的部署

欢迎访问我的个人网站O(∩_∩)O哈哈~希望大佬们能给个star,个人网站网址:http://www.wenzhihuai.com,个人网站代码地址:https...

4253
来自专栏王亚昌的专栏

进程访问外部接口的超时设置

    早上发现WEB SRV上的FCGI进程全部挂住了,查看日志才发现是访问一个外部接口的时候因为失败率比较高,导致FCGI进程都堵在接收回包上了,因为超时设...

921
来自专栏程序员的酒和故事

Golang中使用echo框架、MongoDB、JWT搭建REST API

生命不止,继续go go go !!! 之前介绍过golang中restful api的博客,是使用redis作为持久化,httprouter作为框架: Go...

6515
来自专栏黑白安全

信息搜集阶段可快速getshell的一些方式

2、各远程执行类漏洞,如,Struts2,iis,tomcat,proftp,elasticsearch...

1543
来自专栏尾尾部落

手把手教你用图灵机器人做微信公众号自动回复助手 手把手教你用图灵机器人做微信公众号自动回复助手

创建成功后,会自动跳转到机器人设置界面,在这里你可以对机器人进行个性化定制。其实,图灵机器人提供简单的方法,快速接入微信公众号,这太没有挑战性了,对于喜欢搞...

3353
来自专栏Crossin的编程教室

【编程课堂】 windows计划任务

在学习了一些爬虫或者 web 开发等知识之后,常常我们会有这样的需求: 写了个爬取豆瓣电影的脚本,需要每天定时自动运行; 使用 django 开发了一个小小的博...

3658
来自专栏开源优测

2000行代码,再不学习就老了

2135
来自专栏腾讯DevOps

Git远程库操作1

选择SSH方式,请先配置好公钥私钥,参见:https://code.tencent.com/help/productionDoc/profile#ssh

4114
来自专栏北京马哥教育

25个必须记住的SSH命令

OpenSSH是SSH连接工具的免费版本。telnet,rlogin和ftp用户可能还没意识到他们在互联网上传输的密码是未加密的,但SSH是加密的,OpenSS...

4175
来自专栏FreeBuf

技术分享 | 劫持DNS通过流量植入木马实验

很多时候对目标进行渗透时一般会从web、网络设备、针对性钓鱼这三个方向入手。假设我们控制了目标网络中的一台网络设备,如路由器,内网用户流量会从这个地方经过我们怎...

2273

扫码关注云+社区

领取腾讯云代金券