3. Tìm cách khaithác một trong cácwebsite đặtchung server vớimục tiêu. Khai thácđược 1trong số các website đó. Tìmcách mục tiêu. Khai thácđược 1trong số các website đó. Tìmcách upload webshell hoặc thực thi shell code.
4. Thành công có webshell, kiểm tra quyền củauserhiện tại.5. Nếu quyền hiệntại đủ để tấncông mục tiêu. Sang bước 7. 5. Nếu quyền hiệntại đủ để tấncông mục tiêu. Sang bước 7. 6. Nếu quyền hiệntại không đủ tấn công,tìm cách nâng quyền lên. 7. Đã có đủ quyền,tiến hành đọcfile config, tìmuser/password,
deface mục tiêu nếucó thể. 8. Kết thúc.
B.
Cách tấn công bằng local attack và phòng chống: 1.
Tấn Công Bằng Local Attack:
MySQLlà một DBMS ( DatabaseManagement System- hệ thốngquản
trị cơ sởdử liệu )gồm 4 loại ver:
* MySQLStandard bản chuẩn.
* MySQLPro là bản thương mại
* MySQLMax là phiên bản nâng cao tích hợpnhững chức năng cao cấp.
* MySQLClassic :không tích hợpInnoDB engine.
Để cho thuận tiện, nhàsản xuất đã tích hợp thêm một số functioncó thể gây xâm hạiđến bảo mậthệ thống. Như ởbài trước, thì mộtvào function
trog số này đã đượclợi dụngđể thực hiện local attack (tấn công cục bộ trên cùng máychủ ).
a.
Giả sử hacker có quyền tạo, edit , delete, thêm / xóa DB trên serve r: hacker có thể tốn công qua kịch bản :
- Tạo 1db
- Tạo mộttable mới.
- Thựchiện chuỗi câulệnh : Code:
use atttacker;
Create table readfile(textLONGTEXT);
Insert into readfilevalues(loadfile('/etc/passwd');
Nhìn lại cách thức attack local qua MySQL, hacker sửdụng load_file() đểtấn công. Cấu trúc chung của hàm này là
LOAD_FILE(file_name) .Hàm này đượcsử dụng vớimục đích chính
là đọc 1 file và trả vềnội dụng dưới dạng chuỗi kýtự. Theo manual của
MySQL :
Code:
" To use thisfunction, thefile must be located on the server host, you mustspecify thefull pathname to the file,and youmust have the FILE privilege. The file must be readable by all and itssize less than max_allowed_packet bytes. "
Nhưtrên ta thấy để cóthể đọc được filequa MySQL thìaccount phải cóquyền FILE privilege và file muốn đọc phải có quyền read ( đc phép đọc ). Dựavào đó ta có2 cách để ngăn chặn việc truy xuất file trái phép :
+ chmod file: khôngcó quyền read ởnhóm groupvà world, cách
chmod tôi hay ápdụng là 401 (|r--|---|--x| ),để thực hiện chỉnh sửa file bạn nên thực hiện trongControl Panel hoặc qua FTP.
+ cấm FILE privilege của tất cả cácuser trong MySQL.
b.Thông qua hàm load data infile :
Trước khi vào đề thì mình xin nói sơqua về hàm load data:
Hàm load data local trong MySQL lâu nayđc khai thác để attack local khá nhiều vàcũng không ítsrv dính lỗi này,thậm chí là rất phổ biến
với các shared hosting vốn đòi hỏi yêu cầu về độ bảo mật cao. Hàm này cho phép tải nội dung của một file ởbên trong srv "local" hoặc clienthost.
Theo mặcđịnh thì đều đượcbiên dich với tùy chọn --enable-local-
infile. Đểtắt tùy chọn này bạn dùng command đểđăng nhập vào mysql
với quyền root rồidùng câu lệnh --local-infile=0 hoặc edit file my.cnf trong /etc [mysqld] ...(other stuff) local-infile=0 [mysql] ...(other stuff) local-infile=0
Sau đó shutdown và chạy lại MySql.
shell> mysqladmin shutdown shell> cd /usr/libexec
shell> mysqld
-Khi đó nếu dùng hàmnày sẽ có thôngbáo lỗi: Code:
ERROR1148: The used command is not allowed with this MySQL
version Code:
"LOAD DATA[LOW_PRIORITY |CONCURRENT] [LOCAL] INFILE
'file_name'
[REPLACE |IGNORE]
INTO TABLEtbl_name
[FIELDS
[TERMINATED BY 'string']
[[OPTIONALLY] ENCLOSED BY'char']
[ESCAPED BY'char']
]
[LINES
[STARTING BY'string']
]
[IGNORE numberLINES]
[(col_name,...)] "
Hàm này cũng giống nhưload_file() nhưng tốc độ thực hiệncâu
lệnh nhanh hơn. Ở đâu cóthêm phạm vi "local", "local" ở đâycó thể là localhost như /home/vietchuye/public_html/index.php hoặc client
host như http://www.ddcntt.vn/index.php .Với nhucầu dùng thông
thường để setup và chạy trên localhost thì rõ rànghàm này là không cần thiết. Để sửdụng đượchàm này thì file để đọc cần phải ởtrong thư mục chứa databasehoặc phảiđượcphép read ởnhóm "world" và
user MySQL phải có quyền FILE privilege.
Qua 2 kịch bản trên ta thấy FILE privilege chính làchìa khóa đểgiải
quyết vấn đềattack localqua MySQL.
MySQL là mộthệ quản trị cơsở dữliệu rất mạnh mẽ và hữudụng
nhưng nócũng có nhiều chức năng khôngcần thiết làm nảy sinh những
nguy cơ tiềm ẩn vềbảo mật hệthống.
2.
Cách Chống Local Attack:
Thường xuyên backupdữ liệu (giảm thiệthại khi bị drop database)
-Bỏ quyền DROP databasecủa user
-đặt safemode onvà disable 1số hàm nguy hiểm = cách tạofile php.ini vớinội dung sau
safe-mode =on
display_errors= Off
disable_functions = passthru,system, shell_exec, exec, dir, readfile, virtual,socket_accept,socket_bind,socket_clear_err
or,socket_close,socket_connect,socket_create_liste n proc_terminate
log_errors = On
Rồi uplên thư mục public_html, sau đó cmod thành 444
---Đổitên,đặt pass cho thư mục admincp:
nhé,ví dụ là !!!!aaaad@.Thayvào đó,bạn làm như sau:tạo1 thư mục khác,lấy tên là "admincp",sau đócopy toànbộ file trong thưmục "!!!!aaaad@"qua thư mục này,sau đó,mở từng file 1ra,sửa lung tung lên(cốtđể cho file đấy không chạy đc),nhưng đừngsửa file index.php là đượcc.Sau đóvào cpanel, đặt pass cho thư mục "!!!!aaaad@" vàthư mục "admincp"
Giải thíchqua về tác dụng củaviệc này: nếu nhưhacker biết đc pass admin,muốn vào admincpthì chắc chắn sẽ vào OpenDNS ,sau đó sẽphải tìm cách vượt qua passprotect,nếu có vượtqua đc,đăng nhập vào thì cũng chả làm đượcgì(bởi vì tất cảcác file trong thư mục"admincp" ta đã sửa ) ---Dichuyển vị trí file config.php:
Việc này là 1 việc rấtquan trọng,vì giảsử hacker cóup shell lên đc thì cũng phảicó user và pass thì mớiconnect đc đến database.Bạn làmnhư sau:
----B1: zend file config.php lại,đổi tên thành 1 file khác,chẳnghạn
a.php,rồi chuyển vào 1 thư mụcnào đó ngoàithư mục public_html là đc.VD:
---B2: tạo1 file khác tênlà config.php vớinội dung sau:VD: <?phpinclude "/home/lyamsinfo/php/a.php" ?>
Nhớ thay /home/lyamsinf/php/config.php = đường dẫn đến file a.php của bạn.Sau đótiếp tục zend file này lại.
----B3: Tiếp tục di chuyển file "config.php"(file trong thưmục includes ấy nhé)đến 1vị trí khác(dĩnhiên là ngoài thưmục public_html)
Mở file "class_core.php" trong thưmục "includes",sửa lại đường dẫn đến file "config.php".Làmtương tựvới file "diagnostic.php" trong thư mục "!!!!aaaad@"(thư mục admincp đã đổi tên).Rồi zend 2 file
"diagnostic.php" và"class_core.php".
Sau đó nhớvào thư mục includes,tạo 1 file config.php"giả",điền sai thông tin user,passđăng nhập databaselại và cũng zend lại được.
khi muốn mòđc file config.php thật!Nhưvây là tạm thời yên tâmvề thông tin đăng nhập database kobị mất nữa!
V/
Botnet, Dos: A. Botnet:
1.Botnet là gì? là những chương trình tươngtự Trojanbackdoor
cho phép kẻ tấn công sử dụng máycủa họ như lànhững Zoombie (
máy tính thây ma –máy tính bị chiếm quyền điều khiển hoàn toàn
) v àchúng chủ động kết nối vớimột Serverđể dễ dàng điều khiển ,các bạn lưu ý chữ“chủ động”đó là một đặc điểm khác của bot so với trojanbackdoor .Chính vì sựchủ động này mà máytính bịcài đặt chúng kết nối trở nên chậm chạp ,mộtđặc điểm giúp ta dễ dàng nhận diện bot .
Mạng botnetlà một mạng rấtlớn gồmhàng trăm hàng ngàn
máy tính Zombie kết nối với một máy chủ mIRC ( InternetReplay
Chat ) hoặc qua các máychủ DNS để nhận lệnh từhacker một
cách nhanh nhất .Các mạngbot gồm hàng ngàn “thành viên”là
một công cụ lý tưởngcho các cuộc chiến tranh đọ máu như DDOS
,spam, cài đặt các chươngtrìnhquảng cáo …..
2.
Các botmaster thường pháttán bot theonhững cách nhưsau
a-Sửdụng một con worm tải bot xuốngvà kích hoạt chúng (ta đã biết làworm lây lan rất mạnh )
b- Gắnbot vào một trojan nói theo cách dễhiểu nhấtlà gửi cácchương trình bị lây nhiễm bởibot cho các nạn nhân và tự họsẽ chương trình bị lây nhiễm bởibot cho các nạn nhân và tự họsẽ kích hoạt chúng
c - Gắnnó lên một trang web nhiều ngườitruy câpj (thường là cáctrang websex :X vì số lượngngườitham gia rất lớn) trang websex :X vì số lượngngườitham gia rất lớn)