iT邦幫忙

1

請問一下XSS的解法

請問一下各位大大,這次使用掃弱軟體後,出現許多DOM-based漏洞如下(環境為WAMP):

<img src="https://site/images/100x100.png"
style="background-image:url
('https://site/upload/health_package_class/
3"onMouseOver=alert(4983)//
/20181211090646342.jpg');background-repeat:no- repeat;backgroundsize:contain;background-position : 50% 50%" />
<a target="_blank"href="https://site/upload/health_package_class/
3"onMouseOver=alert(4983)//
/20200422115039234.pdf">20200422115039234.pdf</a>

他的原因是:未正確地將使用者輸入值的危險字元消毒
他的修復建議是:檢查危險字元注入可能的解決方案

請問一下這種的消毒要怎麼做呢?

0
mike8864aabb
iT邦新手 4 級 ‧ 2020-09-17 10:34:13
最佳解答

php本身就有function可以處理了

echo htmlspecialchars(變數值,ENT_QUOTES);

第二個參數ENT_QUOTES表示連同單引號也要處理

https://www.php.net/manual/en/function.htmlspecialchars.php
會出現XSS的原因是你在頁面輸出了由「不可信的變數」組成的內容
所以在echo時,用這個function處理過,一些特殊字元都會被轉成html實體編碼

PS.通常報告會告訴你是那個變數有問題

jkes6203 iT邦新手 5 級 ‧ 2020-09-17 11:01:07 檢舉

感謝! 已修改完成,會再請客戶資訊室那邊掃弱
順便再請教一下 這個content-type也是一起出現在 XSS issue裡面的
這種要如何修改呢? 把header set content type改成其他類型
網頁都無法運作,還是只要在報告指出的問題句段修改這個問題就會消失呢
https://ithelp.ithome.com.tw/upload/images/20200917/20128964n6e2EK4rg7.jpg

陳軒立 iT邦研究生 5 級 ‧ 2020-09-17 20:32:40 檢舉

在code的最前面echo "" 因為有東西output過就不能設header了

應該說掃描工具是依據你header宣告為Content-Type: text/html
確認你輸出的是html的內容
遇到html,相對應就會做xss的檢查

2
陳軒立
iT邦研究生 5 級 ‧ 2020-09-16 16:01:45
看更多先前的回應...收起先前的回應...
jkes6203 iT邦新手 5 級 ‧ 2020-09-16 16:06:37 檢舉

這篇在網路上有看過 但是不明白那個白名單是要寫在哪邊?

陳軒立 iT邦研究生 5 級 ‧ 2020-09-16 16:10:00 檢舉

你被xss的後端code是長怎麼樣的?

jkes6203 iT邦新手 5 級 ‧ 2020-09-16 16:16:41 檢舉
<div class="form-group row">
<label class="col-md-2 form-control-label" for="text-input"></label>
<div class="col-md-6">
<img src=
"<? echo $_env["site_url"]."images/"
.$_pageenv["filename_tnfile"].".png"; ?>
" style="background-image:url
('<?echo$_env["site_upload_url"]."news/".$data["img"];
?>');background-repeat:no-repeat;background-size:contain;background-position : 50% 50%" />
</div>
</div>

第一段的

陳軒立 iT邦研究生 5 級 ‧ 2020-09-16 16:55:30 檢舉

變數用 htmlspecialchars() 處理過,因為javascript event handlers都會有 '"

jkes6203 iT邦新手 5 級 ‧ 2020-09-17 10:48:17 檢舉

感謝! 先改看看請客戶那邊的資訊室掃弱看看

jkes6203 iT邦新手 5 級 ‧ 2020-09-17 11:01:53 檢舉

順便再請教一下 這個content-type也是一起出現在 XSS issue裡面的
這種要如何修改呢? 把header set content type改成其他類型
網頁都無法運作,還是只要在報告指出的問題句段修改這個問題就會消失呢
https://ithelp.ithome.com.tw/upload/images/20200917/20128964En1US7WxG1.jpg

陳軒立 iT邦研究生 5 級 ‧ 2020-09-17 20:32:55 檢舉

在code的最前面echo "" 因為有東西output過就不能設header了

1
小魚
iT邦大師 1 級 ‧ 2020-09-17 00:47:20

看起來是圖片名稱有問題,
我的圖片名稱都是自己命名的.

看更多先前的回應...收起先前的回應...
jkes6203 iT邦新手 5 級 ‧ 2020-09-17 10:12:43 檢舉

請問一下是甚麼問題呢? 自己命名又該怎麼命名比較不會發生這類問題

小魚 iT邦大師 1 級 ‧ 2020-09-17 12:50:52 檢舉

自己命名當然不會被置入,
我通常是用GUID來命名..

白箱/源碼掃描的話,guid也不一定能過喔,
在檢查頁面流程時,不會去管你的值長啥樣,
而是你做了那些防範處理

小魚 iT邦大師 1 級 ‧ 2020-09-17 23:46:48 檢舉

mike8864aabb
但是這樣用就不會有XSS攻擊了啊,
至少不會出現在圖片.

小魚
你知道不會,但白箱掃描就是他不會知道你的值是什麼,
所以在流程上一定要求你做到xss的防範

我們曾遇到把變數的值都寫死了,還能產出XSS的風險
而且客戶用的是要很多$$才買的起的掃描工具

我要發表回答

立即登入回答