[Announcement] 05 Bước khai thác Joomla 1.5.x (Remote Admin Password Change ) |
15/08/2008 06:55:44 (+0700) | #1 | 146941 |
|
LM
Moderator
|
Joined: 16/04/2002 09:27:22
Messages: 129
Offline
|
|
1. Vào địa chỉ : target.com/index.php?option=com_user&view=reset&layout=confir m
2. Nhập kí tự ' vào.
3. Xong thì nhập password mới
4. Vào admin : target.com/administrator/
5. Đăng nhập với password mới đó với user là admin.
Sưu Tầm |
|
|
|
|
[Question] 05 Bước khai thác Joomla 1.5.x (Remote Admin Password Change ) |
15/08/2008 07:37:02 (+0700) | #2 | 146947 |
|
TheShinichi
Member
|
0 |
|
|
Joined: 25/03/2005 01:40:31
Messages: 182
Offline
|
|
LM wrote:
1. Vào địa chỉ : target.com/index.php?option=com_user&view=reset&layout=confir m
2. Nhập kí tự ' vào.
3. Xong thì nhập password mới
4. Vào admin : target.com/administrator/
5. Đăng nhập với password mới đó với user là admin.
Sưu Tầm
Mèn ơi ! Mấy site chưa fix lỗi bị "hác-cơ" oanh tạc te tua !! |
|
|
|
|
[Question] Re: 05 Bước khai thác Joomla 1.5.x (Remote Admin Password Change ) |
15/08/2008 08:34:04 (+0700) | #3 | 146952 |
anhsuytu
Member
|
0 |
|
|
Joined: 11/01/2004 03:24:46
Messages: 62
Offline
|
|
Bác LM có thể viết 1 bài phân tích được ko nhỉ? |
|
|
|
|
[Question] Re: 05 Bước khai thác Joomla 1.5.x (Remote Admin Password Change ) |
15/08/2008 11:05:38 (+0700) | #4 | 146981 |
|
AIO
Member
|
0 |
|
|
Joined: 21/02/2008 23:44:02
Messages: 127
Offline
|
|
http://developer.joomla.org/security/news/241-20080801-core-password-remind-functionality.html |
|
chẳng ai nghĩ gì về mình cả |
|
|
|
[Question] Re: 05 Bước khai thác Joomla 1.5.x (Remote Admin Password Change ) |
15/08/2008 11:11:32 (+0700) | #5 | 146983 |
|
canh_nguyen
Elite Member
|
0 |
|
|
Joined: 23/08/2004 18:55:09
Messages: 775
Location: Broken dream
Offline
|
|
Phân tích lỗi xem tại :
http://milw0rm.com/exploits/6234 |
|
|
|
|
[Question] Re: 05 Bước khai thác Joomla 1.5.x (Remote Admin Password Change ) |
15/08/2008 22:21:12 (+0700) | #6 | 147032 |
mr.khungxox
Member
|
0 |
|
|
Joined: 23/06/2007 13:43:16
Messages: 117
Offline
|
|
Tại thời điểm này hình như người ta fix hết rồi . Em chỉ tìm thấy 1 ,2 trang bị mắc lỗi này thôi |
|
|
|
|
[Question] Re: 05 Bước khai thác Joomla 1.5.x (Remote Admin Password Change ) |
15/08/2008 22:34:28 (+0700) | #7 | 147033 |
|
gamma95
Researcher
|
Joined: 20/05/2003 07:15:41
Messages: 1377
Location: aaa">
Offline
|
|
Bác nào phân lại từng bước+ giải thích rõ được ko, em đọc trên milw0rm chẳng hiều gì. Thanks |
|
Cánh chym không mỏi
lol |
|
|
|
[Question] Re: 05 Bước khai thác Joomla 1.5.x (Remote Admin Password Change ) |
16/08/2008 00:02:21 (+0700) | #8 | 147044 |
|
hoahongtim
Researcher
|
Joined: 15/07/2002 02:59:49
Messages: 156
Location: Underground
Offline
|
|
bác gamma95 được cái thích đùa , hix, anh em lại có dịp "mò" nữa rùi, kiểu này có khối anh bị thương, r57 có cơ hội oanh tạc |
|
|
|
|
[Question] Re: 05 Bước khai thác Joomla 1.5.x (Remote Admin Password Change ) |
16/08/2008 00:53:51 (+0700) | #9 | 147059 |
Bản chất của lỗi này thật ra cũng là SQL Ịnection!
http://hkp.com.vn/index.php?option=com_user&view=reset&layout=confirm
dòng này được tạo ra khi điền email để forgot pasword và 1 Token đã gửi về mail, form này dùng để điền Token đó!
Tuy nhiên lại phát sinh lỗi ở dòng:
Code:
$db->setQuery('SELECT id FROM #__users WHERE block = 0 AND activation = '.$db->Quote($token)); <
nhiệm vụ của nó là liệt kê ra user có activation = cái token vừa nhập vào và cho phép đổi password mới. Vì vậy khi ta chèn kí tự ' vào thì lệnh nó sẽ trở thành:
Code:
SELECT id FROM jos_users WHERE block = 0 AND activation = ''
nó lại đi liệt kê ra các user có activation là rỗng thay vì là user có activation phù hợp và theo nguyên tắc chỉ lấy 1 kết quả, nó sẽ lấy user có id nhỏ nhất và thường thì đó là tài khoản của admin! vì vậy dẫn tới việc password của admin bị reset!
Cách khắc phục:
- Nâng cấp phiên bản Joomla! mới nhất (1.5.6 hoặc mới hơn), hoặc sửa lỗi trong file /components/com_user/models/reset.php với đoạn mã sau:
Sau global $mainframe; trên dòng 113 của file reset.php, thêm:
Code:
if(strlen($token) != 32) {
{
$this->setError(JText::_('INVALID_TOKEN'));
return false;
}
|
|
|
|
|
[Question] Re: 05 Bước khai thác Joomla 1.5.x (Remote Admin Password Change ) |
16/08/2008 01:02:21 (+0700) | #10 | 147060 |
flier_vn
Member
|
0 |
|
|
Joined: 15/07/2008 01:13:39
Messages: 28
Offline
|
|
uhm.. Kiểu như SQL Injection by pass vậy !
fix lỗi trên, theo mình nghĩ đơn giãn... :
Code:
$db->setQuery("SELECT id FROM #__users WHERE block = 0 AND activation =".$db->Quote($token)."'");
là đủ rùi ! Mà nếu là sql injection thì sao ko thử :
SELECT id FROM jos_users WHERE block = 0 AND activation = '' union select xxx from jos_uers where activation=''
liệu có được ko nhĩ ? |
|
MerChant.Vn - Website học hỏi, trao đổi thảo luận về kinh doanh.
DànhChoBé.VN - Chuyên bán đồ chơi chất lượng, thương hiệu Fisher price, Disney, Thomas & Friends |
|
|
|
[Question] Re: 05 Bước khai thác Joomla 1.5.x (Remote Admin Password Change ) |
16/08/2008 02:39:16 (+0700) | #11 | 147077 |
ken_shin
Member
|
0 |
|
|
Joined: 30/10/2007 19:18:33
Messages: 30
Offline
|
|
hix tìm trên google thử mà đa số nâng cấp hết rùi còn lại bị hack hết tìm 1 site thực hành hơi khó |
|
|
|
|
[Question] Re: 05 Bước khai thác Joomla 1.5.x (Remote Admin Password Change ) |
16/08/2008 02:48:03 (+0700) | #12 | 147078 |
|
louisnguyen27
Member
|
0 |
|
|
Joined: 12/08/2008 18:04:41
Messages: 321
Offline
|
|
Không phòng thủ kịp nên bị đánh te tua, cũng may là có backup ở host khác....
Hình như là joomla.org cũng bị đánh...
Bản 1.5.6 vừa mới fix lỗi này xong. |
|
Q+SBtZW1iZXIgb2YgSFZ+B
Back to Linux soon!!! |
|
|
|
[Question] Re: 05 Bước khai thác Joomla 1.5.x (Remote Admin Password Change ) |
16/08/2008 03:29:25 (+0700) | #13 | 147085 |
|
gamma95
Researcher
|
Joined: 20/05/2003 07:15:41
Messages: 1377
Location: aaa">
Offline
|
|
hackerbinhphuoc wrote:
Bản chất của lỗi này thật ra cũng là SQL Ịnection!
..................
- Nâng cấp phiên bản Joomla! mới nhất (1.5.6 hoặc mới hơn), hoặc sửa lỗi trong file /components/com_user/models/reset.php với đoạn mã sau:
Sau global $mainframe; trên dòng 113 của file reset.php, thêm:
Code:
if(strlen($token) != 32) {
{
$this->setError(JText::_('INVALID_TOKEN'));
return false;
}
Bản chất là SQL injection mà dùng hàm strlen để fix là sao nhể ? , nó ráng inject sao đó cho strlen($input_token)=32 thì .... |
|
Cánh chym không mỏi
lol |
|
|
|
[Question] Re: 05 Bước khai thác Joomla 1.5.x (Remote Admin Password Change ) |
16/08/2008 04:58:00 (+0700) | #14 | 147108 |
anhsuytu
Member
|
0 |
|
|
Joined: 11/01/2004 03:24:46
Messages: 62
Offline
|
|
Mình mới test, vẫn còn nhiều trang bị mà |
|
|
|
|
[Question] Re: 05 Bước khai thác Joomla 1.5.x (Remote Admin Password Change ) |
16/08/2008 06:50:52 (+0700) | #15 | 147121 |
|
gamma95
Researcher
|
Joined: 20/05/2003 07:15:41
Messages: 1377
Location: aaa">
Offline
|
|
Bác nào nhận xét bug này bản chất là SQL injection là hoàn toàn sai. Ngay cả exploit trên milw0rm
http://milw0rm.com/exploits/6234 , người publish khi phân tích cũng ko hiểu rõ vấn đề
Các bác có để ý là thằng Joomla nó fixed kiểu
Code:
if(strlen($token) != 32) {
$this->setError(JText::_('INVALID_TOKEN'));
return false;
}
nghĩa là nó chỉ check chiều dài thôi ko?? Nếu bị SQL injection thì nó đâu có fixed kiểu stup!d như thế
*Update: Các bác "hắc cờ" nào đi test mấy site chưa fixed sẽ thấy ko nhất thiết phải thêm nháy đơn vào mới khai thác được, mà chỉ cần input kí tự có dạng meta là được:
vídu:
!@#$%^&*() .....
Hoặc tổ hợp một chuỗi các kí tự meta một lúc.
Thế nên cái cách giải thích của thằng đã publish exploit trên milw0rm
Code:
{1} - Replace ' with empty char
{3} - If you enter ' in token field then query will be looks like : "SELECT id FROM jos_users WHERE block = 0 AND activation = '' "
là rất mơ hồ, vì nó cũng ko hiểu vấn đề.
PS: Các bác debug biến $token bằng cách
if(strlen($token) != 32) {
{
echo $token;//tui thêm vào
exit(1);//tui thêm vào
$this->setError(JText::_('INVALID_TOKEN'));
return false;
}
chạy vào test thử với các input là các kí tự meta, meta trộn lẫn chuỗi thường ...etc sẽ hiểu
|
|
Cánh chym không mỏi
lol |
|
|
|
[Question] Re: 05 Bước khai thác Joomla 1.5.x (Remote Admin Password Change ) |
16/08/2008 07:22:13 (+0700) | #16 | 147125 |
hehe nhờ anh gamma95 giải thích em mới hiểu! lúc đầu khi chưa biết về cái token thì em là SQL Injection nhưng sau xem lại thì đúng là ko phải thật! |
|
|
|
|
[Question] Re: 05 Bước khai thác Joomla 1.5.x (Remote Admin Password Change ) |
20/08/2008 00:40:00 (+0700) | #17 | 147730 |
mt37vn
Member
|
0 |
|
|
Joined: 20/12/2007 18:35:44
Messages: 9
Offline
|
|
có phải cái chỗ $token = JRequest::getVar('token', null, 'post', 'alnum'); là thay tất cả các ký tự đặc biệt bằng ký tự trắng không.
Nếu vậy thì mình kiểm tra strlen($token)==0 cũng được nhỉ |
|
|
[Question] Re: 05 Bước khai thác Joomla 1.5.x (Remote Admin Password Change ) |
21/08/2008 23:12:36 (+0700) | #18 | 148043 |
haian82
Member
|
0 |
|
|
Joined: 12/01/2004 02:14:47
Messages: 1
Offline
|
|
[Question] Re: 05 Bước khai thác Joomla 1.5.x (Remote Admin Password Change ) |
12/10/2008 15:46:49 (+0700) | #19 | 154959 |
|
alexnguyen
Member
|
0 |
|
|
Joined: 26/06/2006 17:17:20
Messages: 28
Location: Vietnam Network
Offline
|
|
cái này chỉ dành cho J nào cho đăng ký mem phải không ạ? Nếu site đóng chỉ để cung cấp thông tin thì em vào nó chỉ nói
Chào mừng!
Chào mừng bạn tới khu vực người dùng trên site của chúng tôi |
|
|
|