某日,朋友让我跟他一起检测一个网站
目标站点:qixx.org.cn
ping一下,发现未做CDN
直接bing.com搜索 IP:53.562.x.x
发现有个域名很可以
直觉告诉我 这可能是主站备份或者图片文件的备份,下载下来看看吧
下载下来以后,打开,居然是主站备份。美滋滋
算是一半MVC框架,一半站长自己写的吧
直觉告诉我public目录才是网站的程序文件,applaction应该是模块或者应用目录,直接看myadmin目录的login.php文件
$user=$_POST['user'];
if ($user) {
if ($user == '') {
echo "<script type='text/javascript'>alert('输入密码好吗?');history.go(-1);</script>";
} else {
if ($user == '5546dfa123') {
setcookie('user', 666);
echo "<script type='text/javascript'>alert('登录成功');location.href='index.php';</script>";
} else {
$str = array('草', '错了', '还搞?', '加油');
$key = array_rand($str, 1);
echo "<script type='text/javascript'>alert('" . $str[$key] . "');history.go(-1);</script>";
}
}
}
这是啥,站长可能觉得他源码不会被别人看到。。美滋滋登录后台
结果。。。
什么情况????
哎 没办法,直接找上传点,能直接绕过上传个马就OK了
public\att\swf\avatar\upload.php
$attachment = $_FILES['Filedata'];
$uploadAdapter = new Application_Model_UploadFile();
$fileContent = $uploadAdapter->upload($attachment);
$filename = $fileContent['url'];
$size = $_FILES['Filedata']['size'];
$pic_id = time().rand(1000,9999);//使用时间来模拟图片的ID.
发现没任何过滤。可以直接上传,访问网站。。
这他妈又是什么鬼。。查看源码是<? 代码 直接显示出来
无语了。。继续看其他文件,又看到同文件夹的save_avatar.php
<?php
define('SD_ROOT', dirname(__FILE__).'/');
@header("Expires: 0");
@header("Cache-Control: private, post-check=0, pre-check=0, max-age=0", FALSE);
@header("Pragma: no-cache");
require_once($_SERVER['DOCUMENT_ROOT'].'/../application/models/UploadFile.php');
$attachment = $_FILES['Filedata'];
$uploadAdapter = new Application_Model_UploadFile();
$fileContent = $uploadAdapter->upload($attachment);
$filename = $fileContent['url'];
$size = $_FILES['Filedata']['size'];
log_result('图片大小: '.$size);
$d = array(
'data' => array('urls' => array($filename)),
'status' => 1,
'statusText' => '上传成功!'
);
$msg = json_encode($d);
echo $msg;
log_result($msg);
function log_result($word) {
@$fp = fopen("log.txt","a");
@flock($fp, LOCK_EX) ;
@fwrite($fp,$word.":执行日期:".strftime("%Y%m%d%H%I%S",time())."\r\n");
@flock($fp, LOCK_UN);
@fclose($fp);
}
class pic_data
{
public $data;
public $status;
public $statusText;
public function __construct()
{
$this->data->urls = array();
}
}
?>
又是没有直接过滤,访问同目录的avatar.php 这个文件是前台上传的HTML,但是功能已经坏了,我们抓包地址直接改成save_avatar.php这个文件
上传以后是传到img.qixx.org.cn/\/group1\/M00\/00\/01\/rBg3gFynWTqAPq7cAAAL2Pd1HRY370.php 然后我再一次的知道错了,这个目录不解析,试了../../也没办法跨目录
再找其他的地方上传文件 没找到只能看注入了,public\chenyibei\code.php文件
$mark = $_POST['mark'] ? $_POST['mark'] : $_GET['mark'];
switch ($mark){
case 'login':
if(isset($_COOKIE['uid'])){
echo json_encode(200);
}else{
echo json_encode(404);
}
break;
case 'getcode':
$phone = $_POST['phone'] ? $_POST['phone'] : $_GET['phone'];
$type = $_POST['type'] ? $_POST['type'] : $_GET['type'];
if(!$phone){
echo "手机号不能为空";
exit;
}
if(!preg_match("/^1[34578]{1}\d{9}$/",$phone)){
echo "手机号不正确!";
exit;
}
if(!$type){
echo "非法参数!";
exit;
}else{
//引入PDO操作类
require 'include/MyPDO.class.php';
// $db = MyPDO::getInstance('localhost', 'root', '123456', 'cpg_2016', 'utf8');
$db = MyPDO::getInstance('rm-2zeyb69921u88v6kyno.mysql.rds.aliyuncs.com', '123', 'QnC9J78K', 'chenyibei', 'utf8');
$rs = $db->query('select name from cyb_vote where typeid='.$type.' and phone='.$phone,'Row');
虽然用了阿里云的PDO连接,但是看到type参数没任何过滤,但是权限很小。。
后记:阿里云的主机注入上传可以买一台阿里云的主机来入侵,不会封IP,本人上学少,墨水有限。有交流的朋友可以联系QQNDUxNzc5ODE=