banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Messages posted by: rickb  XML
Profile for rickb Messages posted by rickb [ number of posts not being displayed on this page: 0 ]
 

quanta wrote:
Nói thêm một chút về định dạng của /etc/passwd file và /etc/shadow file

Một non-shadowed /etc/passwd file có định dạng sau:
username:passwd:UID:GID:full_name:directory:shell 

Trong đó:
username
login name

passwd
password đã được encoded

UID
số User ID

GID
số Group ID mặc định

full_name
tên đầy đủ của người dùng. Trường này thực sự được gọi là GECOS (General Electric Comprehensive Operating System) và có thể lưu những thông tin khác ngoài tên đầy đủ

directory
đường dẫn đầy đủ thư mục home của người dùng

shell
User's login shell
Ví dụ:

quantasmilie:501:501:Tong Anh Quan:/home/quanta:/bin/bash
 

Còn định dạng của /etc/shadow file:
username:passwd:last:may:must:warn:expire:disable:reserved 

Trong đó:
username
login name

passwd
password đã được encoded

last
số ngày kể từ 01/01/1970 mà password được thay đổi

may
số ngày trước khi password có thể được thay đổi

must
số ngày sau đó password phải được đổi

warn
số ngày trước khi password expired, user sẽ được cảnh báo

expire
số ngày sau khi password expired, account sẽ bị disabled

disable
số ngày từ 01/01/1970 mà account bị disabled

reserved
một trường dự bị
Ví dụ:
quanta:$1$d8Ox0nqF$lVMIaCwJrnSWSr8MUseNI0:13694:0:99999:7::: 

Trong ví dụ này:
13694: chính là “last” (bạn thử chia cho 365 nhé)
0: “may”
99999: “must” (thử chia cho 365 thì được 274 (chắc không ai sống lâu đến thế))
7: “warn”: sẽ cảnh báo cho user 7 ngày trước khi password bị expired

Đầu tiên cám ơn Khoai đã trảlời, nhưng ở câu trả lời cuối, mình ko nghĩ 2 ký tự dư ra là phần salt, vì trong 1 tài liệu CEH mình đọc, phần linux nó đề cập như sau :
Under Linux, the MD5 password is 32 characters long and begins with $1$. The characters between the second and third $ represent the salt. In the previous example, that value is Gjt/eO.e
 

Tức là nó nói phần salt là phần bắt đầu từ ký từ $ thứ 2 đến kỳ tự $ thứ 3, mà mình để ý phần này trong password thường luôn lớn hơn 2 ký tự (như vd acc test của mình ở trên là 8dZUMH8F  

Bạn phải hiểu thế này:
Trong /etc/passwd, chẳng hạn:

username:Npge08pfz4wuk:503:100:Full Name:/home/username:/bin/sh
 

thì lúc này "Np" là salt còn "ge08pfz4wuk" là encoded password
Nhưng thường thì bạn không nhìn thấy đoạn này "Npge08pfz4wuk", nó được thay thế bằng ký tự "x".

Còn trong /etc/shadow file, nếu dùng MD5, thì shadow password có 32 ký tự bắt đầu với $1$, phần ký tự nằm giữa dấu $ thứ hai và thứ ba chính là salt đã được mã hóa. Phần này có 8 ký tự.
 


Nhưng như đã nói trên salt sẽ được ghép với password rồi mã hoà md5, do đó ta có thể xem chúng là 1 chuỗi duy nhất (password của ta trong hệ thống sẽ là pass thật + salt), trong md5 dù là pass như thế nào (dù là pass thật hay pass + salt dài thêm đi nữa) thì mã hoá ra cũng chỉ có 32 ký tự, mà trong shadow lại thành 34 ký tự ? vậy là như thế nào ? Nếu nói là pass thật md5 ghép với salt md5 thì càng ko đúng , vậy là ra tới 64 ký tự lận à ?

Mr.Khoai wrote:
Chào rickb,

rickb wrote:
em chưa hiểu lắm, salt là chuỗi gồm 2 ký tự (vd : ab, c1 ...) nhưng còn câu "Từ chuỗi này mới tạo ra giá trị ngẫu nhiên từ 4096 khả năng khác nhau." nghĩa là sao ạ ?  

2 ký tự dùng trong salt có thể là 2 trong số các ký tự sau: a..z, A..Z, 0..9 ký tự '.' và '/'. Do đó,mỗi ký tự trong salt cần có 6 bits (64 khả năng: 52 cho a-z và A-Z, + 10 ký tự số, và 2 ký tự ./). Salt tổng cộng cần 2*6 = 12 bits, và tạo ra tổng cộng 2^12 = 4092 trường hợp ngẫu nhiên.

rickb wrote:
Sao lại dư 2 ký tự nhỉ ? Và em cũng thấy lạ điều nữa là tất cả Shadowed password trong linux đều có phần $1$ ở đầu, vậy là sao anh nhỉ ?  

Àh, dư 2 ký tự đó chính là salt smilie. $1$ là đặc trưng cho hàm hash md5. Bạn dùng các hàm hash khác thì đoạn đầu sẽ có "sigature" khác. Ví dụ: blowfish hash thì chuỗi hash sẽ bắt đầu bằng $2$ hoặc $2a$ tùy implementation.

khoai 


Đầu tiên cám ơn Khoai đã trảlời, nhưng ở câu trả lời cuối, mình ko nghĩ 2 ký tự dư ra là phần salt, vì trong 1 tài liệu CEH mình đọc, phần linux nó đề cập như sau :

Under Linux, the MD5 password is 32 characters long and begins with $1$. The characters between the second and third $ represent the salt. In the previous example, that value is Gjt/eO.e 


Tức là nó nói phần salt là phần bắt đầu từ ký từ $ thứ 2 đến kỳ tự $ thứ 3, mà mình để ý phần này trong password thường luôn lớn hơn 2 ký tự (như vd acc test của mình ở trên là 8dZUMH8F

Với lại sao mình thử encode md5 với 1 số site online thì thấy kết quả encode đâu có $1$ đâu nhỉ ? (vd http://scriptserver.mainframe8.com/md5.php)
Anh conmale đâu rồi nhỉ ? smilie

conmale wrote:

3. salt: là chuỗi string có 2 ký tự được chọn từ chuỗi [a-zA-Z0-9./] (biểu thị các ký tự từ a đến z cho chữ thường và chữ in và các số từ 0 đến 9, thêm vào đó là 2 ký tự . và /). Từ chuỗi này mới tạo ra giá trị ngẫu nhiên từ 4096 khả năng khác nhau.
 


Anh conmale có thể giải thích rõ thêm về phần này ko ? em chưa hiểu lắm, salt là chuỗi gồm 2 ký tự (vd : ab, c1 ...) nhưng còn câu "Từ chuỗi này mới tạo ra giá trị ngẫu nhiên từ 4096 khả năng khác nhau." nghĩa là sao ạ ?

Với lại khi em view file /etc/shadow thì thấy hashed password được lưu hơi lạ (em xem trên centos và ubuntu), thứ nhất cơ chế shadow pass trong linux như anh nói là dùng md5 + salt, như vậy cốt lõi nó vẫn là md5, chẳng wa ko phải md5 thẳng clear-text password của user mà thêm salt vào clear-text password của user rồi mới md5, mà theo như em biết với thuật toán md5 thì dù pass như thế nào (dài bao nhiêu, có ký tự đặc biệt ...) thì sau khi hash độ dài của nó chỉ có 32 ký tự và là duy nhất, vậy mà em cat thử /etc/shadow thì thấy nó có tới 34 ký tự :

Code:
test:$1$8dZUMH8F$LvJ308TsswUsfg1kcspsl/:13538:0:99999:7:::


Sao lại dư 2 ký tự nhỉ ? Và em cũng thấy lạ điều nữa là tất cả Shadowed password trong linux đều có phần $1$ ở đầu, vậy là sao anh nhỉ ?
Hix, bài viết hay vậy mà sao ko thấy bác tranvanminh viết tiếp vậy nhỉ ? Mình đang rất có nhu cầu về việc build 1 Cluster System smilie
hix, sao ko ai có ý kiến vậy nhỉ smilie

Golden Autumn wrote:
Max_threads = mempages / (THREAD_SIZE/PAGE_SIZE) / 8

In from beginning for the i386, THREAD_SIZE=2*PAGE_SIZE, PAGE_SIZE=2^12 (4KB), mempages= /PAGE_SIZE size of physical memory, 256M of memory machines mempages=256*2^20/2^12=256*2^8 when the largest number of threads 4096.

Dành cho kernel 2.4 , Kernel 2.6 mình không biết, chắc tìm tài liệu về Kernel mới khám phá được nó .  


Mình vẫn có 1 số thắc mắc
Thứ 1 :

mempages= /PAGE_SIZE size of physical memory 


Đoạn này là sao nhỉ ? bạn ghi chưa rõ lắm

Thứ 2 là

256M of memory machines mempages=256*2^20/2^12=256*2^8 when the largest number of threads 4096. 


con số 2^20 ở đâu ra vậy bạn ? với lại cuối cùng tại sao bạn ko /8 theo công thức nhỉ ?
Mình đang đọc 1 bài viết về kernel, nó đề cập đến công thức để tính max thread của kernel dựa trên số physical memory trên máy tính như sau :

Every process under Linux is dynamically allocated a struct task_struct structure. The maximum number of processes which can be created on Linux is limited only by the amount of physical memory present, and is equal to (see kernel/fork.c:fork_init()):

/*
* The default maximum number of threads is set to a safe
* value: the thread structures can take up at most half
* of memory.
*/
max_threads = mempages / (THREAD_SIZE/PAGE_SIZE) / 2;

which, on IA32 architecture, basically means num_physpages/4. As an example, on a 512M machine, you can create 32k threads. This is a considerable improvement over the 4k-epsilon limit for older (2.2 and earlier) kernels. 


Nhưng mình chưa hiểu lắm về công thức & vd của nó, từ 512 MB Ram làm sao nó có thể tính ra là 32k threads nhỉ ?
Mình thấy khi mới cài Linux (CentOS 4.4) thì nó có sẵn file /root/.forward, theo mình biết thì nó do mail server tạo ra nhưng ko biết nó do cụ thể chương trình gửi mail nào (sendmail, postfix, qmail ....) tạo ra ? Nếu trên server mình có 2 mail server (dĩ nhiên là chạy trên 2 port khác nhau) thì file .forward này sẽ do mail server nào tạo ra & handle nó ? hay là tất cả các loại mail server (MTA) đều dùng chung file .forward này ?
Với lại mình thấy 1 số chương trình cần sử dụng mail để report về (vd như logwatch) thì default là nó đều lấy những email nằm trong file .forward này để report về, vậy mình có thể turning (chỉnh) lại việc này ko ?

conmale wrote:

Khi nói đến patch là nói đến hành động "vá" một cái gì đó hoặc điều chỉnh, hoặc thêm một cái gì đã có sẵn. Patch ở đây nằm ở biên độ "vá" mã nguồn. Sau khi "vá", mã nguồn vẫn phải được compile trước khi có thể sử dụng được.

Không muốn vá mà muốn dùng trọn bộ gói mã nguồn mới thì cũng phải đi xuyên qua giai đoạn compile trước khi dùng.

Khó có thể bàn đến tính ưu nhược ở đây được bởi vì chúng tương tự nhau. Có chăng, patch thì đỡ phải download cả gói source, tốn băng thông nhưng có phần nguy hiểm là nếu patch không đúng thì có thể gây trở ngại. Trong khi đó download trọn bộ nguồn mới thì tốn băng thông nhưng tránh được những thiếu sót (có thể gây sự cố) với việc patching.

Thân mến. 


Vậy theo anh, đối với 1 system admin thì khi nao anh ta biết là chỉ cần patch là đử còn khi nào thì anh ta biết là cần phải compile toàn bộ kernel ? em hỏi thêm 1 tý là nếu là riêng anh thì anh sẽ chọn giải pháp compile kernel hay patch kernel cho hệ thống của mình ?

Cám ơn mọi người đã trả lời smilie)
Theo mình hiểu compile kernel có nghĩa là build lại kernel từ A-Z, còn patch kernel có nghĩa là muốn giữ lại kernel hiện tại và chỉ muốn thêm 1 số chức năng của kernel mới. Nhưng mình ko hiểu tại sao người ta lại đưa ra hình thức patch ? tại sao lại ko build 1 kernel hoàn toàn mới luôn (khi nó đã có bản stable rồi) ? Khi nào thì nên patch còn khi nào thì nên compile kernel luôn ? Ưu & nhược điểm của 2 phương pháp này so với nhau là gì ?
ko phải, ở đây mình muốn tạo 1 môi trường test về telnet chứ ko phải muốn dùng telnet để remote server
Mình xài CentOS 4.4 (kernel CentOS là của RHEL) chạy trên server, nay muốn bật Telnet server lên để test 1 số cái nhưng mò hoài ko thấy. Theo mình đọc 1 số bài viết thì telnet cùng 1 số dịch vụ cơ bản (echo,finger, discard ...) được tích hợp sẵn trong xinet.d của hầu hết các Distro Linux nhưng khi mình list /etc/xinet.d ra thì ko có, chỉ có những dv sau :

-bash-3.00#cd /etc/xinetd.d
-bash-3.00# ls
chargen chargen-udp daytime daytime-udp echo echo-udp finger imap ntalk rsync swat talk time time-udp

Vậy làm sao để enable dịch vụ Telnet Server trên server của mình đây ?
Đây ko phải là mục để show off đâu bạn :lolsmilie 1 là bạn báo admin fix + đưa ra phương pháp để mọi người thảo luận, còn muốn show off thì qua bên mục tán gẫu ấy :wink: Bây giờ deface web thì cả khối người làm được (chỉ cần biết local exploit, sql inject, php include + cập nhật milw0rm lên tục), nếu ai cũng show off như bạn thì hva sẽ overflow bài viết quá :lolsmilie
Ai down được rồi thì xin up lại cho mình với.... Với ai mình nhớ trên hva từng post vol1 rồi mà mình ko nhớ ở đâu, ai biết cho mình link lun vì mình search mà ko thấy

Thank

conmale wrote:

Khác nhau rất xa. cp copy files / directories trên căn bản filesystem. File nào đọc được là nó copy. Khi copy đến một địa điểm khác, nó gán chủ quyền của người đang copy (những chủ quyền nguyên thủy sẽ bị mất). Trong khi đó, dd copy tất cả mọi thứ trên một partition ở dạng "raw" (copy từng sector trên partition) và không cần biết mỗi sector chứa cái gì. Bởi thế, sau khi dd một partition sang một partition khác, nó vẫn giữ y hệt cấu trúc, chủ quyền của trọn bộ thông tin đã được copy.

bs là block size và nó có thể có giá trị không nhỏ hơn 512 và là giá trị của mũ 2 (lũy thừa 2). Thông thường (và bảo đảm nhất) là dùng bs=512. Tuy nhiên, nếu set đúng block size của disk thì I/O hiệu năng hơn. Con số bs=4096 chỉ là ví dụ minh họa. Tuyệt đối không bao giờ nhắm mắt thực hiện các ví dụ minh họa mà không kiểm chứng và tìm hiểu kỹ smilie).

Để xác định chính xác bs, có thể dùng dumpe2fs:
# dumpe2fs /dev/hda2 | grep -i "Block size" 


hm.. theo anh nói thì có vẻ như cp và dd chỉ khác nhau là dd giữ nguyên "trạng thái" của file/directory sau khi copy. Vậy xét về mặt nội dụng file (từng byte) sau khi copy thì chúng có gì khác nhau ko anh ? Vì em đọc lệnh dd trên wiki http://en.wikipedia.org/wiki/Dd_(Unix) thì nó ghi là :

"dd is mostly used to copy regions of raw device files ... Because dd can copy entire partitions or disks. It is used in computer forensics when the contents of a partition need to be preserved in a byte-exact copy. Using cp would not be enough, since data from deleted files that may still be present on a disk are not visible through the file system interface"

Chẳng lẽ dùng lệnh cp thì nó ko copy được chính xác từng byte sao ta
:?smilie

conmale wrote:
Thử dd đi em smilie)

dd if=/dev/hda2 of=/dev/hda3 bs=4096 conv=notrunc,noerror

Nhớ cẩn thận cái if và cái of đó nha. Làm sai là nó dd từ cái partition trống sang cái partition có data thì khóc ra tiếng Miên smilie  


Anh cho em hỏi về mặt copy file thì lệnh dd khác với lệnh cp như thế nào nhỉ ? tại sao trong trường hợp này cp ko được mà đ lại được ? Với lại sao trong trường hợp này anh đặt bs là 4096 mà ko phải là 1 giá trị khác ?
Mình đang monitor 1 server chạy Linux/Apache/PHP/Mysql thì đột nhiên thấy nó chạy rất chậm, ssh vào server cũng rất chậm, khi ssh vào được mình chạy lệnhb top thì thấy load khá cao + khá nhiều process Apache bị <Defunct>




Mình thử restart lại apache và xem lại top thì thấy load có giảm bớt nhưng vẫn còn nhiều process Apache bị <Defunct> như vậy, sau đây là error_log của Apache server mình :

http://vietmc.com/error_log

Mình thấy trong log có 2 điểm đáng chú ý, 1 là :

Allowed memory size of 20971520 bytes exhausted (tried to allocate 24 bytes)

2 là : có rất nhiều file ko tồn tại được request

Vậy đây có phải là 1 cuộc tấn công DDOS ? Ai xem giúp mình với
Mình có 1 thấy mắc là hầu hết các cách trên toàn bypass safe_mod để xem (cat) 1 file nào đó nhưng khi local exploit thì phải dùng những lệnh kèm theo như ls .. để biết tên file/folder đó mà view chứ, nhưng nếu safe mod được bật thì ta ko thể ls được ngoài thư mục của ta, vậy là sao bypass safe_mod để thực hiện những lệnh như ls .. ?
mình muốn hỏi ý nghĩa của lệnh exec đối với system admin là gì ? Và nó được System admin sư dụng khi nào ?

Theo trong man page nó nói exec là lệnh để thực thi command. Đối với 1 process/shell muốn thực thi 1 lệnh đơn thì gọi exec ra (vd ta thực hiện 1 chuỗi lệnh trên shell thì đầu tiên shell sẽ fork từng shell con cho từng lệnh đơn, và trong mỗi shell con thì gọi exec để thực thi lệnh đơn đó), còn đối với system admin (người connect ssh đến server để quản trị), lệnh exec dùng để làm gì ? system admin muốn thực thi 1 lệnh thì chỉ cần gõ lệnh đó là shell tự hiểu và gọi lệnh nó ra (vd : ls hay pwd), đâu cần phải exec (vd : exec ls hay exec pwd) đâu ? Với lại khi đang ssh vào server = putty. Mình thử gõ lệnh exec ls (hay exec pwd ...) trên ssh của putty thì cửa sổ putty tắt ngay tức khắc, vậy là sao nhỉ ?
 
Go to Page:  First Page Page 3 4 5 6

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|