最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

滲透專題丨web Top10 漏洞簡述(2)

2023-06-14 18:50 作者:rkvir逆向工程學(xué)院  | 我要投稿

文件包含漏洞

1、漏洞簡述

程序在引用文件的時(shí),引用的文件名,用戶可控的情況,傳入的文件名校驗(yàn)不嚴(yán),從而操作了預(yù)想之外的文件,就有可能導(dǎo)致文件泄漏和惡意的代碼注入。這是因?yàn)槌绦蜷_發(fā)時(shí)候會把重復(fù)使用的函數(shù)寫到歸檔在一起,用到哪個(gè)函數(shù)就可以直接進(jìn)行調(diào)用,而為了代碼更靈活,包含的文件會被設(shè)置為變量動態(tài)調(diào)用,這里就容易造成文件包含漏洞。

2、利用方法

$html='';
if(isset($_GET['submit']) && $_GET['filename']!=nul1){
($filename=$ GET[filename"];
include"include/$filename";

因?yàn)閷τ?_GET['filename']沒有任何過濾,直接代入到include中,如果包含這個(gè)文件,并成功引用,就會造成文件包含漏洞。

3、偽協(xié)議

file:// —?訪問本地文件系統(tǒng)

http:// —?訪問?HTTP(s)?網(wǎng)址

ftp:// —?訪問?FTP(s) URLs

php:// —?訪問各個(gè)輸入/輸出流(I/O streams)

zlib:// —?壓縮流

data:// —?數(shù)據(jù)(RFC 2397)

glob:// —?查找匹配的文件路徑模式

phar:// — PHP?歸檔

ssh2:// — Secure Shell 2

rar:// — RAR

ogg:// —?音頻流

expect:// —?處理交互式的流

php.ini參數(shù)

allow_url_fopen:默認(rèn)值是?ON。允許?url?里的封裝協(xié)議訪問文件;

allow_url_include:默認(rèn)值是?OFF。不允許包含?url?里的封裝協(xié)議包含文件;


4、常用路徑

包含日志文件?getshell:

/usr/local/apache2/logs/access_log

/logs/access_log

/etc/httpd/logs/access_log

/var/log/httpd/access_log

讀取網(wǎng)站配置文件:

dedecms?數(shù)據(jù)庫配置文件?data/common.inc.php,

discuz?全局配置文件?config/config_global.php,

phpcms?配置文件?caches/configs/database.php

phpwind?配置文件?conf/database.php

wordpress?配置文件?wp-config.php

windows:

C:/boot.ini//

C:/Windows/System32/inetsrv/MetaBase.xml//IIS?配置文件

C:/Windows/repairsam//存儲系統(tǒng)初次安裝的密碼

C:/Program Files/mysql/my.ini//Mysql?配置

C:/Program Files/mysql/data/mysql/user.MYD//Mysql root

C:/Windows/php.ini//php?配置信息

C:/Windows/my.ini//Mysql?配置信息

linux:

/root/.ssh/authorized_keys

/root/.ssh/id_rsa

/root/.ssh/id_ras.keystore

/root/.ssh/known_hosts

/etc/passwd

/etc/shadow

/etc/my.cnf

/etc/httpd/conf/httpd.conf

/root/.bash_history

/root/.mysql_history

/proc/self/fd/fd[0-9]*(文件標(biāo)識符)

/proc/mounts

/porc/config.gz

5、漏洞預(yù)防

??設(shè)置?allow_url_include?為?Off

??路徑限制:限制被包含的文件只能在某一文件內(nèi),一定要禁止目錄跳轉(zhuǎn)字符,如:"../";

??包含文件驗(yàn)證:驗(yàn)證被包含的文件是否是白名單中的一員;

??盡量不要使用動態(tài)包含,可以在需要包含的頁面固定寫好,如:include('head.php')

??嚴(yán)格判斷包含中的參數(shù)是否外部可控,因?yàn)槲募┒蠢贸晒εc否的關(guān)鍵點(diǎn)就在于被包含的文件是否可被外部控制。

命令執(zhí)行漏洞

1、簡述

程序開發(fā)需要去調(diào)用一些外部程序,當(dāng)應(yīng)用需要調(diào)用一些外部程序時(shí)就會用到一些執(zhí)行系統(tǒng)命令的函數(shù)。應(yīng)用在調(diào)用這些函數(shù)執(zhí)行系統(tǒng)命令的時(shí)候,如果將用戶的輸入作為系統(tǒng)命令的參數(shù)拼接到命令行中,在沒有過濾用戶的輸入的情況下,就會造成命令執(zhí)行漏洞。

2、危害

??反彈shell

??控制服務(wù)器

??控制網(wǎng)站

3、命令執(zhí)行漏洞攻擊

??;?命令按照順序(從左到右)被執(zhí)行,并且可以用分號進(jìn)行分隔。當(dāng)有一條命令執(zhí)行失敗時(shí),不會中斷其它命令的執(zhí)行。例如:ping -c 1 127.0.0.1;whoami

??|?通過管理符?可以將一個(gè)命令的標(biāo)準(zhǔn)輸出管理為另外一個(gè)命令的標(biāo)準(zhǔn)輸入,當(dāng)它失敗后,會執(zhí)行另外一條命令。例如:ping -c 1 127.0.0.1|whoami

??&?命令按照順序(從左到右)被執(zhí)行,跟分號作用一樣;此符號作用是后臺任務(wù)符號使?shell?在后臺執(zhí)行該任務(wù),這樣用戶就可以立即得到一個(gè)提示符并繼續(xù)其他工作,例如:ping -c 4 127.0.0.1&cat /etc/passwd&

??&&?前后的命令的執(zhí)行存在邏輯與關(guān)系,只有【&&】前面的命令執(zhí)行成功后,它后面的命令才被執(zhí)行,例如:ping -c 4 127.0.0.1&&whoami

??||?前后命令的執(zhí)行存在邏輯或關(guān)系,只有【||】前面的命令執(zhí)行失敗后,它后面的命令才被執(zhí)行;例如:ping -c ||whoami

??“ ` ”(反引號)?當(dāng)一個(gè)命令被解析時(shí),它首先會執(zhí)行反引號之間的操作。例如執(zhí)行?echols -a將會首先執(zhí)行?ls?并捕獲其輸出信息。然后再將它傳遞給?echo,并將?ls?的輸出結(jié)果打印在屏幕上,這被稱為命令替換例如:echo(反引號)whoami(反引號)

??$?這是命令替換的不同符號。當(dāng)反引號被過濾或編碼時(shí),可能會更有效。

???????????ping -c 4 127.0.0.1 $(whoami)

??win?命令鏈接符?| & || &&?同上

4、命令執(zhí)行漏洞防御

??不執(zhí)行外部的應(yīng)用程序或命令,盡量使用自定義函數(shù)或函數(shù)庫實(shí)現(xiàn)外部應(yīng)用程序或命令的功能。在執(zhí)行?system、eval?等命令執(zhí)行功能的函數(shù)前,要確認(rèn)參數(shù)內(nèi)容。

??使用?escapeshellarg?函數(shù)處理相關(guān)參數(shù),escapeshellarg?函數(shù)會將用戶引起參數(shù)或命令結(jié)束的字符進(jìn)行轉(zhuǎn)義,如單引號“’”會被轉(zhuǎn)義為“’”,雙引號“"”會被轉(zhuǎn)義為“"”,分號“;”會被轉(zhuǎn)義為“;”,這樣?escapeshellarg?會將參數(shù)內(nèi)容限制在一對單引號或雙引號里面,轉(zhuǎn)義參數(shù)中包括的單引號或雙引號,使其無法對當(dāng)前執(zhí)行進(jìn)行截?cái)?,?shí)現(xiàn)防范命令注入攻擊的目的。

??使用?safe_mode_exec_dir?執(zhí)行可執(zhí)行的文件路徑將?php.ini?文件中的?safe_mode?設(shè)置為?On,然后將允許執(zhí)行的文件放入一個(gè)目錄,并使用safe_mode_exec_dir?指定這個(gè)可執(zhí)行的文件路徑。這樣,在需要執(zhí)行相應(yīng)的外部程序時(shí),程序必須在safe_mode_exec_dir?指定的目錄中才會允許執(zhí)行,否則執(zhí)行將失敗。

代碼執(zhí)行漏洞

1、漏洞簡述

當(dāng)程序在調(diào)用一些字符串轉(zhuǎn)化為代碼的函數(shù)時(shí),沒有考慮用戶是否能控制這個(gè)字符串,將造成漏洞。

2、常見函數(shù)

??PHP?:eval()、assert()、preg_replace()

??python?:eval

3、漏洞代碼示例

3.1、動態(tài)代碼執(zhí)行漏洞


function m_print(){
echo 'hello world';
}
$_GET['a']($_GET['b']);
?>

3.2、eval代碼執(zhí)行漏洞


$data = isset($_GET['data'])?$_GET['data']:'這是一個(gè)?eval?漏洞頁面';
@eval($ret = $data);
echo $ret;#把字符串當(dāng)做代碼執(zhí)行
?>

3.3、正則代碼執(zhí)行漏洞


$data = $_GET['data'];
preg_replace('/(.*)<\/data>/e','$ret = "\\1";',$data);
?>


請輸入



{${phpinfo()}}


注釋:preg_replace?使用了?/e?模式,導(dǎo)致可以代碼執(zhí)行

4、代碼執(zhí)行防御方法

??使用?json?保存數(shù)組,當(dāng)讀取時(shí)就不需要使用?eval

??對于必須使用?eval?的地方,一定嚴(yán)格處理用戶數(shù)據(jù)(白名單、黑名單)

??字符串使用單引號包括可控代碼,插入前使用?addslashes?轉(zhuǎn)義(addslashes、魔數(shù)引號、htmlspecialchars、?htmlentities、mysql_real_escape_string)

??不要使用?preg_replace?的?e?修飾符,使用?preg_replace_callback()替換(preg_replace_callback())

??若必須使用?preg_replace?的?e?修飾符,則必用單引號包裹正則匹配出的對象(preg_replace+正則)

CSRF漏洞

1、簡述

CSRF?定義:?跨站請求偽造(英語:Cross-site request forgery),也被稱為?one-click attack?或者session riding,通常縮寫為?CSRF?,?是一種挾制用戶在當(dāng)前已登錄的?Web?應(yīng)用程序上執(zhí)行非本意的操作的攻擊方法。

2、漏洞攻擊原理

用戶打開瀏覽器,訪問登陸受信任的?A?網(wǎng)站,在用戶信息通過驗(yàn)證后,服務(wù)器會返回一個(gè)?cookie?給瀏覽器,用戶登陸網(wǎng)站?A?成功,可以正常發(fā)送請求到網(wǎng)站?A,隨后用戶未退出網(wǎng)站?A,在同一瀏覽器中,打開一個(gè)危險(xiǎn)網(wǎng)站?B,而網(wǎng)站?B?收到用戶請求后,返回一些惡意代碼,并發(fā)出請求要求訪問網(wǎng)站?A,瀏覽器收到這些惡意代碼以后,在用戶不知情的情況下,利用?cookie?信息,向網(wǎng)站?A?發(fā)送惡意請求,網(wǎng)站,最后A?會根據(jù)?cookie?信息以用戶的權(quán)限去處理該請求,導(dǎo)致來自網(wǎng)站?B?的惡意代碼被執(zhí)行。

3、受攻擊途徑

??受害者登錄網(wǎng)站a后,沒有退出的情況下,訪問了網(wǎng)站?b

??在存在漏洞的網(wǎng)站,挖掘?xss?漏洞,自動調(diào)用這?poc.html

4、漏洞防御

??增加?Token?驗(yàn)證

??不要在客戶端保存敏感信息;退出、關(guān)閉瀏覽器時(shí)的會話過期機(jī)制,設(shè)置會話過機(jī)制,比如?15?分鐘無操作,則自動登錄超時(shí)

??敏感信息的修改時(shí)需要身份進(jìn)行二次認(rèn)證,比如修改賬號密碼,需要判斷舊?密碼敏感信息的修改使用?POST,而不是?GET通過?HTTP?頭部中的?REFERER?來限制原頁面

??增加驗(yàn)證碼

JSONP漏洞

1、簡述

Jsonp(JSON with Padding)?是?json?的一種"使用模式",可以讓網(wǎng)頁從別的域名(網(wǎng)站)那獲取資料,即跨域讀取數(shù)據(jù)。為什么我們從不同的域(網(wǎng)站)訪問數(shù)據(jù)需要一個(gè)特殊的技術(shù)(JSONP )呢?這是因?yàn)橥床呗?,同源策略,它是?Netscape?提出的一個(gè)著名的安全策略,現(xiàn)在所有支持?JavaScript?的瀏覽器都會使用這個(gè)策略。傳入?callback?值會在結(jié)果里面直接返回。因此,如果該參數(shù)過濾不嚴(yán)格??梢噪S便輸入:callback?值為:alert('1');parseResponse?字符串,返回結(jié)果會打印個(gè)?alert?窗口,然后也會正常執(zhí)行。攻擊者模擬用戶向有漏洞的服務(wù)器發(fā)送?JSONP?請求,然后就獲取到了用戶的某些信息,再將這些信息發(fā)送到攻擊者可控的服務(wù)。

2、漏洞原理

動態(tài)添加一個(gè)< script >標(biāo)簽,而?script?標(biāo)簽的?src?屬性是沒有跨域的限制的。由于同源策略的限制,XmlHttpRequest?只允許請求當(dāng)前源(域名、協(xié)議、端口都相同)的資源,如果要進(jìn)行跨域請求,?我們可以通過使用?html?的?script?標(biāo)記來進(jìn)行跨域請求,并在響應(yīng)中返回要執(zhí)行的?script?代碼,其中可以直接使用?JSON?傳遞?javascript?對象??紤]這樣一種情況,存在兩個(gè)網(wǎng)站?A?和?B,用戶在網(wǎng)站?B?上注冊并且填寫了自己的用戶名,手機(jī)號,身份證號等信息,并且網(wǎng)站?B?存在一個(gè)?jsonp?接口,用戶在訪問網(wǎng)站?B?的時(shí)候。這個(gè)?jsonp?接口會返回用戶的暗月內(nèi)部文檔?請勿外出個(gè)人信息,并在網(wǎng)站?B?的?html?頁面上進(jìn)行顯示。如果網(wǎng)站?B?對此?jsonp?接口的來源驗(yàn)證存在漏洞,那么當(dāng)用戶訪問網(wǎng)站?A?時(shí),網(wǎng)站?A?便可以利用此漏洞進(jìn)行?JSONP?劫持來獲取用戶的信息。

3、攻擊手法

需要用戶登錄帳號,身份認(rèn)證還沒有被消除的情況下訪問攻擊者精心設(shè)計(jì)好的的頁面。就會獲取?json?數(shù)據(jù),把?json?數(shù)據(jù)發(fā)送給攻擊者。尋找敏感?json?數(shù)據(jù)?api?接口,構(gòu)造惡意的代碼。發(fā)送給用戶,用戶訪問有惡意的頁面,數(shù)據(jù)會被劫持發(fā)送到遠(yuǎn)程服務(wù)器。

4、攻擊代碼示例


if($_GET['file']){
file_put_contents('json.txt',$_GET['file']);
}
?>
jsonp?劫持代碼







當(dāng)用戶訪問這個(gè)頁面時(shí),會自動把接口?user.php?的敏感信息發(fā)送到遠(yuǎn)程服務(wù)器上,如果獲取到信息就會在遠(yuǎn)程服務(wù)器上生成?json.txt。

5、漏洞防御

json?正確的?http?頭輸出盡量避免跨域的數(shù)據(jù)傳輸,對于同域的數(shù)據(jù)傳輸使用?xmlhttp?的方式作為數(shù)據(jù)獲取的方式,依賴于?javascript?在瀏覽器域里的安全性保護(hù)數(shù)據(jù),如果是跨域的數(shù)據(jù)傳輸,必須要對敏感的數(shù)據(jù)獲取做權(quán)限認(rèn)證。


滲透專題丨web Top10 漏洞簡述(2)的評論 (共 條)

分享到微博請遵守國家法律
南华县| 吉木萨尔县| 三门峡市| 临朐县| 太原市| 昆山市| 门头沟区| 富源县| 绥阳县| 安塞县| 鹤庆县| 扶风县| 翁牛特旗| 乃东县| 金沙县| 珠海市| 内丘县| 福鼎市| 岳普湖县| 铁力市| 枝江市| 柯坪县| 三门县| 淮阳县| 三都| 景泰县| 湘潭县| 盘山县| 东平县| 英山县| 灵璧县| 四平市| 中超| 游戏| 罗源县| 司法| 怀集县| 苗栗市| 塔城市| 平阳县| 台湾省|