wei php getshell,某开源框架从注入到Getshell

*本文中涉及到的相关漏洞已报送厂商并得到修复,本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担。

*本文原创作者:sjy93812,未经许可禁止转载

0x00 前言

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

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

0x01 往事

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

74fcb65c03652c4dc749bddadc50d1b9.png

0x02 过程

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

7455bb8843c5e52233dfc35f052daa83.png

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

fe7d321301a135e8abb97cd01464acd2.png

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

bb1d869921437fbe53f912596e338554.png

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

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

d6002c72ca3e66c31e234011aa7ff4b1.png

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

9bd3ac813a54a0ed7b6a0b01035327b7.png

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

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

e9f72d1fa32196085c045a2722d7f28f.png

7f759114ccffa2edfcab9d66353831b0.png

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

构造以下的数据包:

7d5bf42d0d09d45f64550f13cd139d10.png

然后直接来执行测试

90e112559f95a05b77c327fb9877f9d8.png

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

5e30602cceb6925b291cd75f07beb7bf.png

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

f150f9578576eb8e27cbc6f815c0eae0.png

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

修复方式:

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

8a36511534043faeaaa2885592fc6d46.png

db791182c58b766eb760dca3729ba245.png

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

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

5c0ca29a2a0456c5879c94b560631294.png

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

dbbb2b5b1f1d04f2c88343a861711918.png

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

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

abb62f123ec121b078d4b89a9897f625.png

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

5403fbd0dfdeadc1ce9201d0e25806b6.png

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

8b7ca10831474a7f0e0f01ebfa5d8aa1.png

141a28e79412b866771b9fd8ad9912eb.png

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

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

*本文原创作者:sjy93812,未经许可禁止转载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值