信息来源:邪恶八进制信息安全团队(www.eviloctal.com) 文章作者:落叶纷飞[S.S.T] oblog这套程序大家应该都很熟悉了吧,它凭着它的简洁、安全、稳定成为国内多用户blog的首选。这天无聊,就下了套上个月才出的oblog4.5最新版来看代码,谁知,居然看出了N多XSS点。 首先给大家看一个另类点的跨站点,虽然利用价值不大,但是我觉得跨这个点的思路大家可以学习下。我们来看upload.asp和user_files.asp文件的漏洞代码。 upload.asp: ....省略部分代码.... Set File = Upload.UploadFiles(FormName) F_FileName = FilePath & File.FileName file_name = File.FileName //这里是文件名赋值的过程,后面是上传过程的代码,所以省略。
user_files.asp: ....省略部分代码.... <% i=0 Do while not rs.eof imgsrc = rs("file_path") ext=rs("file_ext") If InStr("jpg,jpeg,gif,bmp,png,psd",ext) Then imgsrc0 = imgsrc Else imgsrc0 = "images/nopic.gIf" End if %> ....省略部分代码.... <a href="<%=imgsrc%>" onclick="chk_iddiv(’<%=cstr(rs("fileid"))%>’)" target="_blank" title="cssbody=[dogvdvbdy] cssheader=[dogvdvhdr] body=[<table cellpadding=’0’><tr><td><img src=’<%=imgsrc0%>’ onload=’javascript:if(this.width>190){this.resized=true;this.style.width=190;}’ /></td></tr></table>] fixedabsx=[5] fixedabsy=[47]"><%=OB_IIF(rs("file_showname"),rs("file_name"))%></a></td> ....省略部分代码.... 代码中设定只允许上传后缀名为jpg,jpeg,gif,bmp,png,psd的文件,而且后面的代码似乎与漏洞无任何关系,我们该怎么利用呢?不用急且听我道来,我们来看第三段代码,它看似与漏洞最没有关系,但是请大家仔细看一下,它的作用是接收upload.asp文件上传时的文件名,那么,我们把文件名改为跨站代码+后缀,再上传到服务器,是不是就可以成功执行跨站语句了呢?根据windows的特性,文件名中不能含有“/、\、|、:、<、>、?、*、"”这几个字符,如图1

可能有朋友会想到用rename命令来更改文件名,但是经过测试发现,用rename修改文件名时只要含有以上字符就会修改失败。那么我们该怎样利用这个漏洞呢?看看这些被系统过滤的字符,我们可以发现没有过滤“%”,那么,我们可不可以把文件编码后台再传到服务器上呢?我们来实践下,我们用URL编码器来把“’><script>alert()</script><’”这段代码编码一下,编码后字符串变为“%27%3E%3Cscript%3Ealert%28%29%3C%2Fscript%3E%3C%27”,如图2

OK!我们再把一张图片的文件名改为“%27%3E%3Cscript%3Ealert%28%29%3C%2Fscript%3E%3C%27.gif”,成功改名!好的,我们把它传上服务器看看,上传成功后,我们打开“图片文件”看看,如图3

呵呵,跨站成功!这个跨站点利用不大,因为只有自己才能看原来的文件名,在这里我只是想给大家看一种新的跨站思路而已。 我们再看下一个跨站点,这个跨站点存在于user_photo.asp、user_subject.asp、index.asp这三个文件中,我们来看它们的漏洞代码: user_subject.asp: ....省略部分代码.... Sub addclass() Dim subjectname, rs, ordernum,ishide subjectname = Trim(request.Form("subjectname")) ....省略部分代码.... If subjectname = "" Or oblog.strLength(subjectname) > 50 Then oblog.adderrstr ("分类名不能为空且不能大于50字符)!") ....省略部分代码.... rs.open "select top 1 * from [oblog_subject] Where SubjectType=" & t, conn, 1, 3 rs.addnew rs("subjectname") = subjectname rs("userid") = oblog.l_uid rs("ordernum") = ordernum rs("subjectType") = t If ishide = "on" Then RS("ishide") = 1 Else rs("ishide") = 0 rs.Update ....省略部分代码.... user_photo.asp: ....省略部分代码.... 我的分类: <%=subjectname%> ....省略部分代码.... index.asp文件的作用是当有新的数据插入库的时候就生成index.html文件,所以,跨站的代码就插入到了index.html文件中了。
1 2 下一页 |