Chạy mô phỏng hoạt động của SDriver

Một phần của tài liệu Chống tấn công tiêm nhiễm SQL sử dụng các khuôn mẫu hợp lệ theo bối cảnh (Trang 28 - 32)

Hình 2.6 dưới đây là giao diện ứng dụng web demo cho mô phỏng.

Hình 2. 6 Giao diện ứng dụng web demo

Ứng dụng web demo sẽ có các chứng năng cơ bản như login, liệt kê danh sách sản phẩm, thêm, sửa, xóa sản phẩm, mã nguồn của trang được lấy từ trang

Trước hết, SDriver cần được trải qua quá trình huấn luyện để xây dựng được CSDL các khuôn mẫu hợp lệ. Trong file mode.txt ta để giá trị dòng đầu tiên là “training mode”. Sau đó, ta lần lượt chạy các câu truy vấn của ứng dụng web bằng cách kích hoạt lần lượt các chức năng của nó.

Hình 2. 7 Một kết quả khi SDriver hoạt động ở chế độ huấn luyện.

Ở hình 2.7 trên là kết quả khi kích hoạt chức năng login của ứng dụng web demo. Câu truy vấn được gửi từ ứng dụng web là

“Select * from USER_ACCOUNT where USER_NAME = 'admin' and PASSWORD= 'admin123'” Sau khi được rút bỏ dữ liệu (stripped query) thì câu truy vấn trở thành

“Select * from USER_ACCOUNT where USER_NAME = and PASSWORD=” Thông tin stack trace của câu truy vấn là:

“org.SStatement.getStackID(SStatement.java:613)org.SStatement.manageQuery(SStateme nt.java:579)org.SStatement.executeQuery(SStatement.java:543)simplewebapp.utils.DBU tils.findUser(DBUtils.java:37)simplewebapp.servlet.DoLoginServlet.doGet(DoLoginSer vlet.java:52)simplewebapp.servlet.DoLoginServlet.doPost(DoLoginServlet.java:104)ja vax.servlet.http.HttpServlet.service(HttpServlet.java:648)javax.servlet.http.HttpS ervlet.service(HttpServlet.java:729)org.apache.catalina.core.ApplicationFilterChai n.internalDoFilter(ApplicationFilterChain.java:292)org.apache.catalina.core.Applic ationFilterChain.doFilter(ApplicationFilterChain.java:207)org.apache.tomcat.websoc ket.server.WsFilter.doFilter(WsFilter.java:52)org.apache.catalina.core.Application FilterChain.internalDoFilter(ApplicationFilterChain.java:240)org.apache.catalina.c ore.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)simplewebapp.f ilter.JDBCFilter.doFilter(JDBCFilter.java:96)org.apache.catalina.core.ApplicationF ilterChain.internalDoFilter(ApplicationFilterChain.java:240)org.apache.catalina.co re.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)org.apache.cata lina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)org.apache.cat alina.core.StandardContextValve.invoke(StandardContextValve.java:106)org.apache.ca talina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)org.apach e.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)org.apache.cat alina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)org.apache.catalina. valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)org.apache.ca talina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)org.apache.cata lina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522)org.apache.coyote.http 11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095)org.apache.co yote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500 )org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)jav a.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)org.ap ache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)java.l ang.Thread.run(Thread.java:745)”.

Sau khi kết hợp thông tin stack trace và câu truy vấn rút bỏ dữ liệu, giá trị MD5 của khuôn mẫu hợp lệ sẽ là “f1a948a9376fc0e695d984473bec6c0”.

Giá trị MD5 sẽ được chèn vào ssql, SDrive cũng sẽ đưa ra thong báo “Updating f1a948a9376fc0e695d984473bec6c0”.

Nếu trong trường hợp khâu mẫu hợp lệ đã tồn tại trong ssql thì SDriver sẽ đưa ra thông báo trùng lặp và sẽ không thực hiện thao tác chèn vào ssql.

Hình 2. 8 Thông báo trùng lặp của SDriver.

Khi tất cả câu truy vấn đã được cập nhật khuôn mẫu hợp lệ tương ứng trong ssql, bảng signatures của ssql sẽ như hình 2.9 bên dưới.

Hình 2. 9 Bảng signatures của ssql

Sau khi xây dựng được khuôn mẫu hợp lệ cho tất cả câu truy vấn, ta chuyển SDriver sang chế độ thực thi, chuyển dòng đầu tiên của file mode.txt sang “production mode”. Trong chế độ thực thi, SDriver sẽ hoạt động như một bộ lọc nhằm phát hiện và ngăn chặn tấn công tiêm nhiễm SQL. Khi nhận một câu truy vấn từ ứng dụng web, SDriver sẽ tìm kiếm khuôn mẫu hợp lệ tương ứng với câu truy vấn trong ssql. Câu truy vấn được xác định là hợp lệ khi tồn tại khuôn mẫu hợp lệ tương ứng với nó, khi đó SDriver sẽ đưa ra thông báo “NO NEED TO WORRY”, và nó sẽ chuyển câu truy vấn sang trình điều khiển kết nối để thực thi. Trong trường hợp không có khuôn mẫu hợp lệ tương ứng nào, câu truy vấn sẽ được coi là tấn công tiêm nhiễm SQL và bị từ chối thực thi. Đồng thời, SDriver sẽ đưa ra thông báo “ATTACKING!!! This 219e776510cf52ef4f1d68252298a262 does

not exists!!! NO RESULTS...YOU ARE ATTACKING!”. Dưới đây là một số ví dụ các kỹ thuật tấn công, SDriver sẽ phát hiện và ngăn chặn chúng.

Kỹ thuật tautologies: Chuỗi độc hại “admin' OR 1=1 --” sẽ được chèn vào trường User name trong form Login, trường Password nhập tùy ý. Kết quả như sau:

“SDriver: This is the query the application sent: Select * from USER_ACCOUNT where USER_NAME = 'admin' OR 1=1 --' and PASSWORD= 'gvbcx'

SDriver: The stripped query: Select * from USER_ACCOUNT where USER_NAME = OR 1= gvbcx'

Stack trace = org.SStatement.getStackID(SStatement.java:613)org.SStatement… SDriver 666: ATTACKING!!! This e3ca49a454c3faadd5818b8aacb85c9 does not exists!!!

SDriver 562: NO RESULTS...YOU ARE ATTACKING!”.

Kỹ thuật chú thích cuối dòng (End-of-line comment): Chuỗi độc hại

“admin'--” sẽ được chèn vào trường User name trong from Login, trường Password nhập tùy ý. Kết quả như sau:

“SDriver: This is the query the application sent: Select * from USER_ACCOUNT where USER_NAME = 'admin'--' and PASSWORD= 'abc'

SDriver: The stripped query: Select * from USER_ACCOUNT where USER_NAME = abc'

Stack trace =

org.SStatement.getStackID(SStatement.java:613)org.SStatement.manageQuer y(SStatement.java

ATTACKING!!! This 43f9a4cd8bb1b43fb71578cd568172 does not exists!!! SDriver 562: NO RESULTS...YOU ARE ATTACKING!”.

Kỹ thuật truy vấn Union: Chuỗi độc hại “' union select * from

USER_ACCOUNT --” sẽ được chèn vào trường User name trong form Login,

trường Password nhập tùy ý. Kết quả như sau:

“SDriver: This is the query the application sent: Select * from USER_ACCOUNT where USER_NAME = '' union select * from USER_ACCOUNT --' and PASSWORD= 'abc'

SDriver: The stripped query: Select * from USER_ACCOUNT where USER_NAME = union select * from USER_ACCOUNT abc'

Stack trace =

org.SStatement.getStackID(SStatement.java:613)org.SStatement.manageQuer y(SStatement.java

SDriver 666: ATTACKING!!! This c4bd54e8854c3cc448dea46be98f9f1 does not exists!!!

SDriver 562: NO RESULTS...YOU ARE ATTACKING!”.

Kỹ thuật truy vấn Piggy-Backed: Chuỗi độc hại “';SHUTDOWN;--” sẽ được chèn vào trường Password, trường User name nhập tùy ý. Kết quả như sau:

“SDriver: This is the query the application sent: Select * from USER_ACCOUNT where USER_NAME = 'admin' and PASSWORD= '';SHUTDOWN;--' SDriver: The stripped query: Select * from USER_ACCOUNT where USER_NAME = and PASSWORD= ;SHUTDOWN;'

Stack trace =

org.SStatement.getStackID(SStatement.java:613)org.SStatement.manageQuer y(SStatement.java

SDriver 666: ATTACKING!!! This 6fb255bd8c48bf49491b35cf4e341fc7 does not exists!!!

SDriver 562: NO RESULTS...YOU ARE ATTACKING!”.

Với các ví dụ về tấn công tiêm nhiễm SQL trên thì SDriver đều hoạt động tốt, nhưng SDriver có thực sự tốt không nếu hoạt động trong môi trường thực tế. Chương 3 sẽ phân tích và đánh giá chi tiết hoạt động của SDriver.

Một phần của tài liệu Chống tấn công tiêm nhiễm SQL sử dụng các khuôn mẫu hợp lệ theo bối cảnh (Trang 28 - 32)

Tải bản đầy đủ (PDF)

(54 trang)