±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚfreebuf£¬
±¾Îı¾ÎÄÖ÷Òª¼Ç¼ͨ¹ý´úÂëÉ󼯵ķ½Ê½½øÐÐXSS©¶´ÍÚ¾ò£¬·ÖΪÁËÕÒ³ö¹Ø¼üλÖã¬ÕýÏòÉ󼯣¬·´ÏòÉó¼ÆÈý¸ö²¿·Ö£¬É󼯵ÄϵͳΪpermeateÉøÍ¸²âÊÔϵͳ¡£ |
|
Ò»¡¢²Ù×÷¸ÅÒª
1.ÕÒ³ö¹Ø¼üλÖÃ
2.ÕýÏòÉó¼Æ
3.·´ÏòÉó¼Æ
¶þ¡¢ÕÒ³ö¹Ø¼üλÖÃ
´òÉß´òÆß´ç£¬ËµÃ÷ÔڹؼüλÖÃ×öÊÂЧÂÊ»á¸ü¸ß£¬´úÂëÉó¼ÆÕÒ³ö©¶´Ò²ÊÇͬÀí£¬Òò´Ë±ÊÕßÐèÒªÕÒ³öXSS¹Ø¼üµÄλÖÃ;¶ÔÓÚĿǰµÄ´ó¶àÊýWebÓ¦ÓÃÀ´Ëµ£¬MVCģʽÊǷdz£Ö÷Á÷µÄÒ»ÖÖÐÎʽ£¬Òò´Ë±ÊÕßÕâÀォÕÒµ½¶ÔÓ¦µÄ¿ØÖÆÆ÷ºÍÄ£°å£¬ÔÚÕâÒ»½Úµ±ÖÐÖ÷Òª½²½âÕÒ³öλÖõÄ˼·¡£
2.1 ÕÒ³ö¿ØÖÆÆ÷
ÕÒ³ö¿ØÖÆÆ÷µÄ·½Ê½Í¨³£ÊÇͨ¹ýÖ÷Èë¿ÚÎļþÓëURLµØÖ·Á½¿éÈ¥·ÖÎö£¬ÏÖÔÚ±ÊÕß´ò¿ªÊ×Ò³£¬·¢ÏÖURLµØÖ·Îª£º
http://permeate.songboy.net/home/index.php |
µ±µã»÷°å¿éºó£¬URLµØÖ·±ä³ÉÁËÈçϵØÖ·£º
http://permeate.songboy.net/home/index.php?m=tiezi&a=index&bk=6 |
´ÓURLµØÖ·ÖпÉÒÔ¿´µ½²»¹ÜÊ×Ò³»¹Êǰå¿éÒ³Ãæ£¬¶¼¾¹ýURLµØÖ·home/index.php,Òò´Ë±ÊÕß½ÓÏÂÀ´±ã¿ÉÒÔͨ¹ý´ò¿ªhome/index.phpÎļþÀ´²é¿´¿ØÖÆÆ÷Ëù´æ·ÅµÄλÖÃ,´ò¿ªºó´úÂëÈçÏÂËùʾ£º
<?php
require_once "../core/common.php";
include "./public/header.php";
includeAction("$model","$action");
include "./public/footer.php"; |
Ôٴδò¿ª../core/common.phpÎļþ£¬´úÂëÈçÏÂËùʾ£º
function includeAction($model,
$action)
{
//ÅжϿØÖÆÆ÷ÊÇ·ñ´æÔÚ
$filePath = "./action/$model.php";
if (is_readable($filePath)) {
require_once $filePath;
$class = new $model;
if (is_callable(array($class, $action))) {
$class->$action();
return true;
}
}
//Èç¹ûûÓÐÕÒµ½¶ÔÓ¦µÄ¿ØÖÆÆ÷£¬Ö±½Óµ÷ÓÃÄ£°åÎļþ
$tplFilePath = "./tpl/$model/$action.php";
if (is_readable($tplFilePath)) {
require_once $tplFilePath;
return true;
}
echo '¿ØÖÆÆ÷»òÄ£°åÎļþ' . $filePath . '²»´æÔÚ!';
die;
} |
´Ó´úÂëÖпÉÒÔ¿´³ö£¬Æä¿ØÖÆÆ÷Îļþ´æ·ÅÔÚhome/action/Ï£¬´Ëʱ±ÊÕß´ò¿ª´ËÎļþ¼Ð£¬¿ÉÒÔ¿´µ½¼¸¸öphpÎļþ£¬ÈçÏÂͼËùʾ£º

»ØÏë¸Õ²Å±ÊÕßËù¿´µ½µÄURLµØÖ·ÈçÏ£º
http://permeate.songboy.net/home/index.php?m=tiezi&a=index&bk=6 |
ÁªÏëÆðÀ´Æä¿ØÖÆÆ÷ÎļþΪtiezi.php,½«Æä´ò¿ªÒ»¿´£º
<?php
class tiezi
{
function __construct()
{
}
public function index()
{
.....
$data['count'] = $count;
$data['page_size'] = $page_size;
$data['page_count'] = $page_count;
$data['page_num'] = $page_num;
displayTpl('tiezi/index', $data);
} |
¹ûÈ»·¢ÏÖÁËindex·½·¨¡£
2.2 ÕÒ³öÄ£°å
µÃµ½¿ØÖÆÆ÷Ö®ºó£¬±ÊÕß»¹ÐèÒªÕÒµ½Ä£°å´æ·ÅµÄλÖã¬Í¨³£Ä£°åÓë¿ØÖÆÆ÷ÊÇϢϢÏà¹Ø£¬Òò´Ë¿ÉÒÔ¿ØÖÆÆäÖÐÕÒµ½ÖëË¿Âí¼££¬±ÈÈçÉÏÃæµÄ´úÂëµ±ÖУ¬×îºóÒ»ÐдúÂëΪdisplayTplº¯Êý£¬´Ó×ÖÃæÒâ˼ÉÏ¿ÉÒÔÀí½âΪÏÔʾģ°å£¬Òò´Ë±ÊÕßͨ¹ýPHPStormµÄÌø×ª¹¦ÄÜÖ±½ÓÌø¹ýÈ¥²é¿´¸Ãº¯ÊýµÄ¾ßÌåÁ÷³Ì£¬ÕÒµ½´úÂëÈçÏÂËùʾ£º
/**
* ¼ÓÔØÄ£°åÎļþ
* @param $tplPath
*/
function displayTpl($tplPath, $data = [])
{
$filePath = "./tpl/$tplPath.php";
if (!is_readable($filePath)) {
echo 'Ä£°åÎļþ' . $filePath . '²»´æÔÚ!';
die;
}
foreach ($data as $key => $val) {
$$key = $val;
}
require_once $filePath;
} |
ÔÚÉÏÃæ´úÂëµ±ÖпÉÒÔ¿´³öÄ£°å´æ·ÅÓÚhome/tplĿ¼Ï£¬Í¨¹ýÎļþ¼Ð´ò¿ª²é¿´£¬ÈçÏÂͼËùʾ£º

2.3 Ñé֤λÖÃ
ͨ¹ýÉÏÃæµÄ²Ù×÷Á÷³ÌÒѾ»ù±¾È·¶¨¿ØÖÆÆ÷ÓëÄ£°åµÄλÖ㬵«ÎªÁË·ÀÖ¹ÒâÍ⣬»¹ÊÇ׼ȷÑé֤һϣ¬ÔÚ¿ØÖÆÆ÷ÖÐÊä³öÒ»¸ö×Ö·û´®1111111£¬ÔÚÄ£°åÖÐÊä³ö×Ö·û´®222222222£¬Èç¹û°´ÕÕ±ÊÕß֮ǰËùÔ¤ÏëµÄ£¬ÄÇôÕâÁ½×é×Ö·û´®¶¼»á±»Êä³ö¡£
ÔÚ¿ØÖÆÆ÷ÖмÓÈëµÄ²âÊÔ´úÂëÈçÏ£º
public function
index()
{
echo '11111111111'; |
ÔÚÄ£°åÎļþÖмÓÈëµÄ²âÊÔ´úÂëÈçÏ£º
222222222222222
<?php
$get = $_GET;
?>
<section class="section"> |
ÏÖÔڻᵽä¯ÀÀÆ÷£¬ÔÚµ±Ç°Ò³Ãæµ¥»÷Êó±êÓÒ¼ü£¬Ñ¡Öв鿴Դ´úÂ룬ÈçÏÂͼËùʾ£º

ÔÚÔ´´úÂëµ±ÖУ¬ËÑË÷×Ö·û´®11111,¹ûÈ»ËÑË÷µ½×Ö·û´®£¬ÈçÏÂͼËùʾ£º

Èý¡¢ÕýÏòÉó¼Æ
ÔÚÕÒµ½¹Ø¼üλÖÃÖ®ºó£¬±ÊÕß±ã¿ÉÒÔÕë¶ÔÐÔµÄÈ¥½øÐдúÂëÉ󼯣¬XSSµÄ´úÂëÉó¼ÆÖ÷ÒªÓÐÁ½ÖÖ·½Ê½£¬ÕýÏò´úÂëÉ󼯣¬·´Ïò´úÂëÉ󼯣»ÕýÏò´úÂëÉ󼯵ÄÒâ˼ÊÇ´Ó²ÎÊýµÄ½ÓÊÕµ½²ÎÊý×îºóµÄʹÓÃÕâ¸öÁ÷³Ì½øÐмì²é£¬¶ø·´ÏòÉó¼ÆÔòÊÇÏà·´´Ó±äÁ¿Ê¹ÓõÄλÖÃÉÏÍÆµ½²ÎÊý½ÓÊÕ¡£
3.1 ½ÓÊÕ²ÎÊýλÖÃ
Ê×ÏÈͨ¹ýÕýÏò·½Ê½À´½øÐдúÂëÉ󼯣¬ÕýÏò´úÂëÉó¼ÆÊÇ´Ó½ÓÊÕ²ÎÊý½øÐÐÅŲ飬Òò´ËÕÒµ½¿ØÖÆÆ÷µ±ÖУ¬Í¨¹ý±à¼Æ÷µÄËÑË÷¹¦ÄÜ£¬±ÊÕßÔÚ¿ØÖÆÆ÷Îļþµ±ÖÐËÑË÷Á˹ؼü×Ö
$_GET ÕÒµ½ÁËtiezi.php¿ØÖÆÆ÷ÖеÄindex·½·¨£¬´úÂëÈçÏÂËùʾ£º
public function
index()
{
$id = $_GET['bk'];
$bk = &$id;
//¿ªÊ¼·ÖÒ³´óС
$page_size = 15;
//»ñÈ¡µ±Ç°Ò³Âë
$page_num = empty($_GET['page']) ? 1 : $_GET['page'];
//Öмä´úÂë.................Ê¡ÂÔ<
$data['bk'] = $bk;
$data['count'] = $count;
$data['page_size'] = $page_size;
$data['page_count'] = $page_count;
$data['page_num'] = $page_num;
displayTpl('tiezi/index', $data);
} |
3.2 Ä£°åλÖÃÊÇ·ñ¹ýÂË
´ÓÉÏÃæ´úÂëµ±ÖпÉÒÔ¿´³ö²ÎÊýbk²¢Ã»ÓнøÐÐÈκιýÂË£¬±ãÖ±½Ó·Åµ½ÁËÄ£°åµ±ÖУ¬Õâ±ãÁôϰ²È«Òþ»¼£¬Èç¹ûÔÚÄ£°åµ±ÖÐҲûÓýøÐа²È«¹ýÂË£¬ÄÇô¾Í´æÔÚ×Å·´ÉäÐÍXSS©¶´£¬´ò¿ªÄ£°åÎļþ²¢ËÑË÷¹Ø¼ü´Êbk£¬´úÂëÈçÏÂËùʾ£º
<div class="post-list-controller">
<div style="float: right">
<a class="btn btn-primary" href="fatie.php?bk=<?php
echo $bk ?>">·¢Ìû</a> </div> |
¿ÉÒÔ¿´³ö£¬Ä£°åÖÐȷʵûÓнøÐа²È«¹ýÂË¡£
3.3 ©¶´ÑéÖ¤
http://permeate.songboy.net/home/index.php?m=tiezi& a=index&bk=6%22%3E%3Cscript%3Ealert(123)%3C/script%3E |
ÈçÏÂͼËùʾ£º

ËÄ¡¢·´ÏòÉó¼Æ
·´ÏòÉó¼ÆÔò´ÓÄ£°åÖÐÕÒ³öʹÓÃÁËÄÇЩ±äÁ¿£¬²¢·´ÍƱäÁ¿µÄÀ´Ô´£¬ÒÔ¼°ÊÇ·ñ½øÐÐÁ˰²È«¹ýÂË¡£
4.1 ÕÒ³öÄ£°åÖеıäÁ¿
ͨ¹ýPHPStrom±à¼Æ÷µÄÕýÔò±í´ïʽ¹¦ÄÜÆ¥Åä±äÁ¿£¬ÕýÔò±í´ïʽÈçÏ£º
Õâ¸öÕýÔò±í´ïʽÊÇÆ¥ÅäÊä³ö±äÁ¿,±ÈÈçÆ¥Åä×Ö·ûecho $zhangsan£¬ÓÃPHPStormÆ¥Åäµ½µÄ½á¹ûÈçÏÂͼËùʾ£º

Ë«»÷Êó±ê×ó¼ü´ò¿ª¶ÔÓ¦´úÂëÎļþ/home/search.php£¬´úÂëÈçÏÂËùʾ£º

ÔÚ´úÂëÖпÉÒÔ¿´³ö±äÁ¿Ö±½Ó·ÅÔÚÄ£°åµ±ÖУ¬Èç¹ûÔÚ¿ØÖÆÆ÷µ±ÖÐҲûÓÐתÒå´Ë±äÁ¿µÄÀ´Ô´£¬ÄÇôºÜÓпÉÄÜ»á´æÔÚXSSÎÊÌâ¡£
4.2 ²éÕÒ±äÁ¿À´Ô´
×·×Ù±äÁ¿$keyword£¬ÕÒµ½±äÁ¿À´Ô´£º
<?php
include "public/header.php";
include "../core/common.php";
$keywords = $_REQUEST['keywords'];
if (!empty($keywords)) {
$where = " where title like '%$keywords%'
"; |
´ÓÉÏÃæµÄ´úÂëµ±ÖпÉÒÔ¿´³ö±äÁ¿$keywords²¢Ã»ÓнøÐÐÈκιýÂË£¬Òò´Ë¿ÉÒÔ󯶍´Ë´¦Ò²´æÔÚÕâXSS©¶´ÎÊÌâ¡£
4.3 ©¶´ÑéÖ¤
´Ó´úÂëµÄλÖ÷¢ÏÖÓëÇ°ÃæµÄΨһÈë¿Ú²»Í¬£¬´Ë´úÂëÎļþ²¢²»ÊÇÀàÎļþ£¬Òò´Ë³¢ÊÔÖ±½Ó·ÃÎÊ£¬¹¹Ôì³öURLµØÖ·ÈçÏ£º
http://permeate.songboy.net/home/search.php?keywords= %E6%B5%8B%E8%AF%95%3Cscript%3Ealert(123)%3C/script%3E |
ͨ¹ý»ðºüä¯ÀÀÆ÷·ÃÎÊ´ËURLµØÖ·Ö®ºó£¬³öÏÖ½á¹ûÈçÏÂͼËùʾ£º

ÔÚÌáʾ¿òµ±ÖйûÈ»µ¯³öÁË123µÄÌáʾ¡£ |