mirror of
https://github.com/sqlmapproject/sqlmap.git
synced 2024-11-29 21:13:51 +03:00
355 lines
13 KiB
Diff
355 lines
13 KiB
Diff
diff -uN lib_mysqludf_sys_0.0.2/install.sh lib_mysqludf_sys/install.sh
|
|
--- lib_mysqludf_sys_0.0.2/install.sh 1970-01-01 01:00:00.000000000 +0100
|
|
+++ lib_mysqludf_sys/install.sh 2009-01-21 00:51:52.000000000 +0000
|
|
@@ -0,0 +1,43 @@
|
|
+#!/bin/bash
|
|
+# lib_mysqludf_sys - a library with miscellaneous (operating) system level functions
|
|
+# Copyright (C) 2007 Roland Bouman
|
|
+# Copyright (C) 2008-2009 Roland Bouman and Bernardo Damele A. G.
|
|
+# web: http://www.mysqludf.org/
|
|
+# email: mysqludfs@gmail.com, bernardo.damele@gmail.com
|
|
+#
|
|
+# This library is free software; you can redistribute it and/or
|
|
+# modify it under the terms of the GNU Lesser General Public
|
|
+# License as published by the Free Software Foundation; either
|
|
+# version 2.1 of the License, or (at your option) any later version.
|
|
+#
|
|
+# This library is distributed in the hope that it will be useful,
|
|
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
+# Lesser General Public License for more details.
|
|
+#
|
|
+# You should have received a copy of the GNU Lesser General Public
|
|
+# License along with this library; if not, write to the Free Software
|
|
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
+
|
|
+echo "Compiling the MySQL UDF"
|
|
+make
|
|
+
|
|
+if test $? -ne 0; then
|
|
+ echo "ERROR: You need libmysqlclient development software installed "
|
|
+ echo "to be able to compile this UDF, on Debian/Ubuntu just run:"
|
|
+ echo "apt-get install libmysqlclient15-dev"
|
|
+ exit 1
|
|
+else
|
|
+ echo "MySQL UDF compiled successfully"
|
|
+fi
|
|
+
|
|
+echo -e "\nPlease provide your MySQL root password"
|
|
+
|
|
+mysql -u root -p mysql < lib_mysqludf_sys.sql
|
|
+
|
|
+if test $? -ne 0; then
|
|
+ echo "ERROR: unable to install the UDF"
|
|
+ exit 1
|
|
+else
|
|
+ echo "MySQL UDF installed successfully"
|
|
+fi
|
|
Binary files lib_mysqludf_sys_0.0.2/lib_mysqludf_sys_0.0.2.tar.gz and lib_mysqludf_sys/lib_mysqludf_sys_0.0.2.tar.gz differ
|
|
diff -uN lib_mysqludf_sys_0.0.2/lib_mysqludf_sys.c lib_mysqludf_sys/lib_mysqludf_sys.c
|
|
--- lib_mysqludf_sys_0.0.2/lib_mysqludf_sys.c 2009-01-22 12:01:55.000000000 +0000
|
|
+++ lib_mysqludf_sys/lib_mysqludf_sys.c 2009-01-21 00:06:13.000000000 +0000
|
|
@@ -1,8 +1,9 @@
|
|
/*
|
|
lib_mysqludf_sys - a library with miscellaneous (operating) system level functions
|
|
Copyright (C) 2007 Roland Bouman
|
|
- web: http://www.xcdsql.org/MySQL/UDF/
|
|
- email: mysqludfs@gmail.com
|
|
+ Copyright (C) 2008-2009 Roland Bouman and Bernardo Damele A. G.
|
|
+ web: http://www.mysqludf.org/
|
|
+ email: mysqludfs@gmail.com, bernardo.damele@gmail.com
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Lesser General Public
|
|
@@ -51,7 +52,7 @@
|
|
extern "C" {
|
|
#endif
|
|
|
|
-#define LIBVERSION "lib_mysqludf_sys version 0.0.2"
|
|
+#define LIBVERSION "lib_mysqludf_sys version 0.0.3"
|
|
|
|
#ifdef __WIN__
|
|
#define SETENV(name,value) SetEnvironmentVariable(name,value);
|
|
@@ -139,7 +140,7 @@
|
|
/**
|
|
* sys_exec
|
|
*
|
|
- * executes the argument commandstring.
|
|
+ * executes the argument commandstring and returns its exit status.
|
|
* Beware that this can be a security hazard.
|
|
*/
|
|
DLLEXP
|
|
@@ -162,6 +163,34 @@
|
|
, char *error
|
|
);
|
|
|
|
+/**
|
|
+ * sys_eval
|
|
+ *
|
|
+ * executes the argument commandstring and returns its standard output.
|
|
+ * Beware that this can be a security hazard.
|
|
+ */
|
|
+DLLEXP
|
|
+my_bool sys_eval_init(
|
|
+ UDF_INIT *initid
|
|
+, UDF_ARGS *args
|
|
+, char *message
|
|
+);
|
|
+
|
|
+DLLEXP
|
|
+void sys_eval_deinit(
|
|
+ UDF_INIT *initid
|
|
+);
|
|
+
|
|
+DLLEXP
|
|
+char* sys_eval(
|
|
+ UDF_INIT *initid
|
|
+, UDF_ARGS *args
|
|
+, char* result
|
|
+, unsigned long* length
|
|
+, char *is_null
|
|
+, char *error
|
|
+);
|
|
+
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
@@ -336,5 +365,62 @@
|
|
return system(args->args[0]);
|
|
}
|
|
|
|
+my_bool sys_eval_init(
|
|
+ UDF_INIT *initid
|
|
+, UDF_ARGS *args
|
|
+, char *message
|
|
+){
|
|
+ unsigned int i=0;
|
|
+ if(args->arg_count == 1
|
|
+ && args->arg_type[i]==STRING_RESULT){
|
|
+ return 0;
|
|
+ } else {
|
|
+ strcpy(
|
|
+ message
|
|
+ , "Expected exactly one string type parameter"
|
|
+ );
|
|
+ return 1;
|
|
+ }
|
|
+}
|
|
+void sys_eval_deinit(
|
|
+ UDF_INIT *initid
|
|
+){
|
|
+}
|
|
+char* sys_eval(
|
|
+ UDF_INIT *initid
|
|
+, UDF_ARGS *args
|
|
+, char* result
|
|
+, unsigned long* length
|
|
+, char *is_null
|
|
+, char *error
|
|
+){
|
|
+ FILE *pipe;
|
|
+ char line[1024];
|
|
+ unsigned long outlen, linelen;
|
|
+
|
|
+ result = malloc(1);
|
|
+ outlen = 0;
|
|
+
|
|
+ pipe = popen(args->args[0], "r");
|
|
+
|
|
+ while (fgets(line, sizeof(line), pipe) != NULL) {
|
|
+ linelen = strlen(line);
|
|
+ result = realloc(result, outlen + linelen);
|
|
+ strncpy(result + outlen, line, linelen);
|
|
+ outlen = outlen + linelen;
|
|
+ }
|
|
+
|
|
+ pclose(pipe);
|
|
+
|
|
+ if (!(*result) || result == NULL) {
|
|
+ *is_null = 1;
|
|
+ } else {
|
|
+ result[outlen] = 0x00;
|
|
+ *length = strlen(result);
|
|
+ }
|
|
+
|
|
+ return result;
|
|
+}
|
|
+
|
|
|
|
#endif /* HAVE_DLOPEN */
|
|
diff -uN lib_mysqludf_sys_0.0.2/lib_mysqludf_sys.html lib_mysqludf_sys/lib_mysqludf_sys.html
|
|
--- lib_mysqludf_sys_0.0.2/lib_mysqludf_sys.html 2009-01-22 12:01:55.000000000 +0000
|
|
+++ lib_mysqludf_sys/lib_mysqludf_sys.html 2009-01-22 10:21:46.000000000 +0000
|
|
@@ -23,7 +23,8 @@
|
|
This library <code>lib_mysqludf_sys</code> contains a number of functions that allows one to interact with the operating system.
|
|
</p>
|
|
<ol>
|
|
- <li><a href="#sys_exec"><code>sys_exec</code></a> - executes an arbitrary command, and can thus be used to launch an external application.</li>
|
|
+ <li><a href="#sys_eval"><code>sys_eval</code></a> - executes an arbitrary command, and returns it's output.</li>
|
|
+ <li><a href="#sys_exec"><code>sys_exec</code></a> - executes an arbitrary command, and returns it's exit code.</li>
|
|
<li><a href="#sys_get"><code>sys_get</code></a> - gets the value of an environment variable.</li>
|
|
<li><a href="#sys_set"><code>sys_set</code></a> - create an environment variable, or update the value of an existing environment variable.</li>
|
|
</ol>
|
|
@@ -31,6 +32,72 @@
|
|
Use <a href="#lib_mysqludf_sys_info"><code>lib_mysqludf_sys_info()</code></a> to obtain information about the currently installed version of <code>lib_mysqludf_sys</code>.
|
|
</p>
|
|
|
|
+
|
|
+ <a name="sys_eval"></a><h2>sys_eval</h2>
|
|
+ <p>
|
|
+ <code>sys_eval</code> takes one command string argument and executes it, returning its output.
|
|
+ </p>
|
|
+ <h3>Syntax</h3>
|
|
+<pre>sys_eval(<b>arg1</b>)</pre>
|
|
+ <h3>Parameters and Return Values</h3>
|
|
+ <dl>
|
|
+ <dt><code><b>arg1</b></code></dt>
|
|
+ <dd>
|
|
+ A command string valid for the current operating system or execution environment.
|
|
+ </dd>
|
|
+ <dt>returns</dt>
|
|
+ <dd>
|
|
+ Whatever output the command pushed to the standard output stream.
|
|
+ </dd>
|
|
+ </dl>
|
|
+ <h3>Installation</h3>
|
|
+ <p>
|
|
+ Place the shared library binary in an appropriate location.
|
|
+ Log in to mysql as root or as another user with sufficient privileges, and select any database.
|
|
+ Then, create the function using the following DDL statement:
|
|
+ </p>
|
|
+ <pre>
|
|
+CREATE FUNCTION sys_eval RETURNS STRING SONAME 'lib_mysqludf_sys.so';
|
|
+ </pre>
|
|
+ <p>
|
|
+ The function will be globally available in all databases.
|
|
+ </p>
|
|
+ <p>
|
|
+ The deinstall the function, run the following statement:
|
|
+ </p>
|
|
+ <pre>
|
|
+DROP FUNCTION sys_eval;
|
|
+ </pre>
|
|
+ <h3>Examples</h3>
|
|
+ <p>
|
|
+ None yet
|
|
+ </p>
|
|
+ <h3>A Note of Caution</h3>
|
|
+ <p>
|
|
+ Be very careful in deciding whether you need this function.
|
|
+ UDFs are available to all database users - you cannot grant EXECUTE privileges for them.
|
|
+ As the commandstring passed to <code>sys_exec</code> can do pretty much everything,
|
|
+ exposing the function poses a very real security hazard.
|
|
+ </p>
|
|
+ <p>
|
|
+ Even for a benign user, it is possible to accidentally do a lot of damage with it.
|
|
+ The call will be executed with the privileges of the os user that runs MySQL,
|
|
+ so it is entirely feasible to delete MySQL's data directory, or worse.
|
|
+ </p>
|
|
+ <p>
|
|
+ The function is intended for specialized MySQL applications where one needs extended
|
|
+ control over the operating system.
|
|
+ Currently, we do not have UDF's for ftp, email and http,
|
|
+ and this function can be used to implement such functionality in case it is really necessary
|
|
+ (datawarehouse staging areas could be a case in example).
|
|
+ </p>
|
|
+ <p>
|
|
+ You have been warned! If you don't see the hazard, please don't try to find it; just trust me on this.
|
|
+ </p>
|
|
+ <p>
|
|
+ If you do decide to use this library in a production environment, make sure that only specific commands can be run and file access is limited by using <a href="http://www.novell.com/documentation/apparmor/index.html">AppArmor</a>.
|
|
+ </p>
|
|
+
|
|
<a name="sys_exec"></a><h2>sys_exec</h2>
|
|
<p>
|
|
<code>sys_exec</code> takes one command string argument and executes it.
|
|
@@ -92,6 +159,9 @@
|
|
<p>
|
|
You have been warned! If you don't see the hazard, please don't try to find it; just trust me on this.
|
|
</p>
|
|
+ <p>
|
|
+ If you do decide to use this library in a production environment, make sure that only specific commands can be run and file access is limited by using <a href="http://www.novell.com/documentation/apparmor/index.html">AppArmor</a>.
|
|
+ </p>
|
|
<a name="sys_get"></a><h2>sys_get</h2>
|
|
<p>
|
|
<code>sys_get</code> takes the name of an environment variable and returns the value of the variable.
|
|
Binary files lib_mysqludf_sys_0.0.2/lib_mysqludf_sys.so and lib_mysqludf_sys/lib_mysqludf_sys.so differ
|
|
diff -uN lib_mysqludf_sys_0.0.2/lib_mysqludf_sys.sql lib_mysqludf_sys/lib_mysqludf_sys.sql
|
|
--- lib_mysqludf_sys_0.0.2/lib_mysqludf_sys.sql 2009-01-22 12:01:55.000000000 +0000
|
|
+++ lib_mysqludf_sys/lib_mysqludf_sys.sql 2009-01-22 10:21:53.000000000 +0000
|
|
@@ -1,30 +1,33 @@
|
|
-/*
|
|
- lib_mysqludf_sys - a library with miscellaneous (operating) system level functions
|
|
- Copyright (C) 2007 Roland Bouman
|
|
- web: http://www.xcdsql.org/MySQL/UDF/
|
|
- email: mysqludfs@gmail.com
|
|
-
|
|
- This library is free software; you can redistribute it and/or
|
|
- modify it under the terms of the GNU Lesser General Public
|
|
- License as published by the Free Software Foundation; either
|
|
- version 2.1 of the License, or (at your option) any later version.
|
|
-
|
|
- This library is distributed in the hope that it will be useful,
|
|
- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
- Lesser General Public License for more details.
|
|
-
|
|
- You should have received a copy of the GNU Lesser General Public
|
|
- License along with this library; if not, write to the Free Software
|
|
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
+/*
|
|
+ lib_mysqludf_sys - a library with miscellaneous (operating) system level functions
|
|
+ Copyright (C) 2007 Roland Bouman
|
|
+ Copyright (C) 2008-2009 Roland Bouman and Bernardo Damele A. G.
|
|
+ web: http://www.mysqludf.org/
|
|
+ email: roland.bouman@gmail.com, bernardo.damele@gmail.com
|
|
+
|
|
+ This library is free software; you can redistribute it and/or
|
|
+ modify it under the terms of the GNU Lesser General Public
|
|
+ License as published by the Free Software Foundation; either
|
|
+ version 2.1 of the License, or (at your option) any later version.
|
|
+
|
|
+ This library is distributed in the hope that it will be useful,
|
|
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
+ Lesser General Public License for more details.
|
|
+
|
|
+ You should have received a copy of the GNU Lesser General Public
|
|
+ License along with this library; if not, write to the Free Software
|
|
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
*/
|
|
|
|
-drop function lib_mysqludf_sys_info;
|
|
-drop function sys_get;
|
|
-drop function sys_set;
|
|
-drop function sys_exec;
|
|
+DROP FUNCTION IF EXISTS lib_mysqludf_sys_info;
|
|
+DROP FUNCTION IF EXISTS sys_get;
|
|
+DROP FUNCTION IF EXISTS sys_set;
|
|
+DROP FUNCTION IF EXISTS sys_exec;
|
|
+DROP FUNCTION IF EXISTS sys_eval;
|
|
|
|
-create function lib_mysqludf_sys_info returns string soname 'lib_mysqludf_sys.so';
|
|
-create function sys_get returns string soname 'lib_mysqludf_sys.so';
|
|
-create function sys_set returns int soname 'lib_mysqludf_sys.so';
|
|
-create function sys_exec returns int soname 'lib_mysqludf_sys.so';
|
|
+CREATE FUNCTION lib_mysqludf_sys_info RETURNS string SONAME 'lib_mysqludf_sys.so';
|
|
+CREATE FUNCTION sys_get RETURNS string SONAME 'lib_mysqludf_sys.so';
|
|
+CREATE FUNCTION sys_set RETURNS int SONAME 'lib_mysqludf_sys.so';
|
|
+CREATE FUNCTION sys_exec RETURNS int SONAME 'lib_mysqludf_sys.so';
|
|
+CREATE FUNCTION sys_eval RETURNS string SONAME 'lib_mysqludf_sys.so';
|
|
diff -uN lib_mysqludf_sys_0.0.2/Makefile lib_mysqludf_sys/Makefile
|
|
--- lib_mysqludf_sys_0.0.2/Makefile 2009-01-22 12:01:55.000000000 +0000
|
|
+++ lib_mysqludf_sys/Makefile 2009-01-19 09:11:00.000000000 +0000
|
|
@@ -1,6 +1,4 @@
|
|
-linux: \
|
|
- lib_mysqludf_sys.so
|
|
+LIBDIR=/usr/lib
|
|
|
|
-lib_mysqludf_sys.so: \
|
|
-
|
|
- gcc -Wall -I/opt/mysql/mysql/include -I. -shared lib_mysqludf_sys.c -o lib_mysqludf_sys.so
|
|
+install:
|
|
+ gcc -Wall -I/usr/include/mysql -I. -shared lib_mysqludf_sys.c -o $(LIBDIR)/lib_mysqludf_sys.so
|
|
Common subdirectories: lib_mysqludf_sys_0.0.2/.svn and lib_mysqludf_sys/.svn
|