某日,朋友讓我跟他一起檢測一個網站
目標站點: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=