Friday 19 February 2016

Attack SQL Injection part 2


Ở phần trước http://gh0stsec.blogspot.com/2016/02/attack-sql-injection-part-1.html mình có Overview SQL Injection.
Trong phần 2 này, mình sẽ chỉ tập trung vào việc Identifying injectable parameters” (nghĩa là: Xác định tham số có thể chèn SQL Injection).

1.URL
2. HTTP Header
3. Cookie
4. Forms (HTTP body)

1.URL

Phân tích: Đây là website có CMS là Joomla (chúng ta sẽ ưu tiên những tham số có giá trị dạng number, ở đây ta có id=12)
?option=com_content <———- có thể ở đây bị lỗ hổng chăng?
&view=category <———- có thể ở đây bị lỗ hổng chăng?
&layout=blog <———- có thể ở đây bị lỗ hổng chăng?
&id=12 <———- có thể ở đây bị lỗ hổng chăng?
Sau khi mình thêm ký tự vào sau id=12 thì xuất hiện:
Warning: Invalid argument supplied for yyy() in /var/www/xxxxxxxxxxxxx/galery.php on line22
Vậy ta chắc chắc một điều rằng: parameter id là nơi có thể chèn lệnh SQL vào. Nếu bạn không chuyên nghiệp hay mù tịt về  SQL Query thì dùng SQLMAP nào.
(Mánh: các parameter thường thấy trong việc khai thác là id cid gid videoid viewid v.v… (vì những tham số này sẽ là các truy vấn vào database) hoặc các bạn google với keyword : dork sql injection)
sqlmap.py -u “http://victim.com.vn/index.php?option=com_content&view=category&layout=blog&id=12″ -p id -v 3 –dbs
-p id | là chỉ rõ ra paremeter có thể tấn công
-v 3 | hiện thông tin truy vấn ra màn hình
–dbs | dò tìm những database trên server
Khi khai thác thành công, kết quả có dạng như hình sau

2.HTTP Header

Ở phần này, chúng ta sẽ cần đi sâu hơn vào giao thức HTTP. Để thấy những thông tin mình sắp giới thiệu bên dưới, Các bạn nên dùng Wireshark để bắt gói tin.
GET / HTTP/1.1
Connection: Keep-Alive
Keep-Alive: 300
Accept:*/*
Host: http://www.minhtamnw.com
X_FORWARDED_FOR :111.222.333.444 <——— Có thể chèn SQL Injection ở đây
Refererhttp://www.minhtamnw.com/index.php <——— Có thể chèn SQL Injection ở đây
Accept-Language: en-us
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;  rv:1.9.2.16) Gecko/20110319 Firefox/3.6.16 ( .NET CLR 3.5.30729; .NET4.0E) <——— Có thể chèn SQL Injection ở đây
Cookie: guest_id=v1%3A1328019064; pid=v1%3A1328839311134 <——— Có thể chèn SQL Injection ở đây (chúng ta sẽ bàn luận ở phần sau)



3. Cookie


Bạn có bao giờ đăng nhập vào một website nào đó | tắt modem | mở lại modem (IP Public đã thay đổi)| Khi có mạng trở lại, bạn vẫn vào website đó mà không cần gõ user/password để đăng nhập nữa.
Chính cookie đã lưu thông tin về phiên làm việc của bạn tại máy tính cá nhân.| Đây là một trong các ứng dụng của cookie trong giao thức HTTP. Trong bài viết này, tôi không bàn nhiều về cookie là gì, mà chúng ta sẽ chuyển qua giai đoạn khai thác.
sqlmap.py -u “http://quantrimang.com.vn” –cookie=ASP.NET_SessionId=gxrxx4ejl202n2viyvebbx45 p ASP.NET_SessionId –level 3 -v 4
Ngoài ra, các bạn có thể dùng add-on Live HTTP headers dùng trên Firefox để carpture các header của gói tin.

4.FORMS (HTTP BODY)


Một cách dễ hiểu hơn là chúng ta sẽ chèn truy vấn vào nội dung của gói tin, ví dụ hình sau:
một trang web có thể có rất nhìu form bao gồm thấy được và không thấy được và chúng ta sẽ chèn những truy vấn vào những ô này.
một vài thông tin: giao thức HTTP khi gởi dữ liệu từ phía client lên server sẽ dùng phương thức POST. Vì vậy trước khi tấn công loại này, chúng ta cần biết một trang web sẽ gởi đi những gì sau khi chúng ta nhấn nút “Đăng nhập”. Chúng ta vẫn sẽ dùng Live HTTP headers để phân tích
Với dạng này, ta sẽ dùng sqlmap khai thác như sau:
sqlmap.py -u “http://www.victim.com.vn/index.php” –data “user_id=injectionhere&password=injectionhere&button=%C4%90%C4%83ng+nh%E1%BA%ADp”-p user_id,password –level 3 -v 3 –dbs
tham số –data “dữ liệu vào” : tại đây chúng ta chỉ định dữ liệu và phụ thuộc vào tên của form, ví dụ ta có form user_id và password thì cả 2 phải được điền vào như là một gói tin đầy đủ,(tránh bị server reject do không đủ dữ liệu)
-p user_id,password : tiến hành kiểm tra trên 2 tham số chỉ định

0 comments:

Post a Comment