2026/07/13
2025/08/12
前不久提到可以使用 zap docker 相當方便
但今天使用時有一些狀況
首先是如果不限制 docker 的 cpu ram 會把宿主几的資源全部吃完導致當几
必須使用 --cpu --memory 來設定
範例如下
--cpus="18" --memory 20000MB
接續以上的問題
在LXC就算增加2個以上的core 依然無法設定 --cpus 大於一
所以要使用vm才能設定多個cpu
另外硬碟使用率會隨著被scan的網站規模變大而變大
所以要有足夠的硬碟空間 否則也會有掃到一半當几的問題
要特別注意
2025/06/30
之前有提到 ZAP 使用shell scan 網站的方法
今天找到單純使用docker的做法
最常用的方法如下 stable full-scan
docker run --cpus="18" --memory 30000MB --rm -v /tmp:/zap/wrk/:rw -t ghcr.io/zaproxy/zaproxy:stable zap-full-scan.py -t https://192.168.24.206 -r 192.168.24.206.html
以下是使用 docker stable baseline scan
docker run --cpus="18" --memory 30000MB --rm -v /tmp:/zap/wrk/:rw -t ghcr.io/zaproxy/zaproxy:stable zap-baseline.py -t https://192.168.24.206 -r 192.168.24.206.html
以下是使用 docker nightly update baseline scan
docker run --cpus="18" --memory 30000MB --rm -v /tmp:/zap/wrk/:rw -t zaproxy/zap-nightly zap-baseline.py -t http://10.1.1.1 -r 10.1.1.1.html
實際跑起來快 而且方便許多
一樣用shell 來跑
一行一個網站
https://aa.bb.com
https://dd.ee.com
寫到 /tmp/site_to_test
#!/bin/bash
while read line
do
echo "$line"
docker run --cpus="18" --memory 30000MB --rm -v /tmp:/zap/wrk/:rw -t zaproxy/zap-nightly zap-baseline.py -t http://10.1.1.1 -r 10.1.1.1.html
# docker run --cpus="18" --memory 30000MB --rm -v /tmp:/zap/wrk/:rw -t ghcr.io/zaproxy/zaproxy:stable zap-full-scan.py -t $line -r `echo $line|cut -d '/' -f 3`.html
done < /tmp/site_to_test
如果沒使用 --rm 全部執行完成後會殘留很多 docker process
列出所有 docker process
docker ps -a
找到如下 process
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0ec0935c4233 ghcr.io/zaproxy/zaproxy:nightly "zap-full-scan.py -t…" About a minute ago Exited (2) 44 seconds ago
清除CONTAINER ID
docker rm 0ec0935c4233
列出所有docker image
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ghcr.io/zaproxy/zaproxy nightly 432cd81f7738 22 hours ago 2.11GB
清除 IMAGE ID image
docker rmi 432cd81f7738
2025/06/26
本次的ZAP掃出以下的中風險
去年已經出現 本來想說去年應該已經解決了
但今年還是看到 可能是解決不完整
先在 apache 的 CSP 設定內加入以下二行
frame-ancestors 'self';
form-action 'self';
再來處理 style-src
先把 'unsafe-inline' 拿掉
接下來處理的方式有二種
如果在html檔裡直接定義 css
要使用 hash 或 nonce
使用 nonce 是比較方便的做法
首先在 apache config 裡
style-src 這個定義加上 'nonce-12345678'
12345678 建議置換為亂碼
之後在 css 定義裡加上 nonce 定義
nonce的字串必須跟apahce config裡的相同
<style nonce="123456789" type="text/css">
</style>
修改 html內文 把原本直接定義的style改成先定義css再引用
例如原本是
<a href="123456.exe" style="color:red;">123456</a>
要改成
<a href="123456.exe" class="red-text">123456</a><br>
同時在上方的css定義加入 red-text
<style nonce="sjdfhs6849" type="text/css">
.red-text {
color: red;
font-size: 21px;
}
</style>
另外不使用 hash 跟 nonce 的方法是 把css以獨立檔案定義後再引用
建立 style.css
檔案內容如下
.red-text {
color: red;
font-size: 21px;
}
接下來在 html 的head中引用
<head>
<link rel="stylesheet" href="style.css">
</head>
html內文的修正方法如上
2025/01/23
本次ZAP弱掃出現二個Medium
其實上次就有 不過這次要求連Medium都要處理
看來二個都是CSP的問題
之前改過一次版面會亂
這次再處理看看吧
要修改 /etc/apache2/apache2.conf
加上以這這段
<IfModule mod_headers.c>
Header set Content-Security-Policy "\
default-src 'self';\
img-src 'self' http://10.0.0.1 http://www.fcounter.net http://s11.flagcounter.com data:;\
frame-src 'self' https://abc.com.tw https://www.youtube.com;\
style-src 'self' 'unsafe-inline' https://cdn.jsdelivr.net https://cdnjs.cloudflare.com;\
script-src 'self' https://cdn.jsdelivr.net https://code.jquery.com https://cdn.datatables.net 'unsafe-eval' 'unsafe-inline';\
font-src 'self' https://cdnjs.cloudflare.com;\
"
</IfModule>
內容需要依照自己的需求去修正
一個網頁一個網頁去看格式有沒亂掉 版面有沒正常
可以打開 browser 的開發人員工具
會顯示那些被CSP阻擋了
然後再補上去
需要補什麼問 https://www.perplexity.ai/ 比較快
把主控台上的訊息直接問就可以了
不難 但真的很花時間
2024/06/13
2024/05/22
這几天用ZAP在弱掃
當網站很大時 因為會產生很大量的cache
所以要確保執行弱掃那台几器的HD空間要夠
不然有可能還沒做完就爆了
另外有很多網站都出現以下的報告
查了一下 可以在httpd.conf 設定
新增以下內容
<IfModule mod_headers.c>
Header set X-Frame-Options "SAMEORIGIN"
Header set Content-Security-Policy "default-src 'self'"
</IfModule>
設完要重啟apache
另外 如果有參考到外面的任何元件
版面是會亂掉的
這個要特別注意
設完後再掃一次出現另一個報告
如果要再處理
Header set 就要再改成如下的設定
Header set Content-Security-Policy "frame-ancestors 'self'; form-action 'self'; base-uri 'self'; img-src 'self'; default-src 'self'; script-src 'self'; style-src 'self';"
當然影響範圍就會更大
2023/07/06
整理一下zap的使用
首先到
https://www.zaproxy.org/download/
選擇下載
Cross Platform Package
OS必須要有 java環境才能執行
在debian 安裝 java指令
apt install default-jre
解壓後執行 zap.sh
會出現UI畫面 第一次執行預設會跳出更新畫面 要執行更新
更新完成後 執行zap的這台几器對外網路要關閉
因為進行scan時預設會往下爬五層
有可能會爬到外面去
因為目前沒辦法一次掃多個網站 不管是UI或使用指令
所以如果有多個網站要掃
可以使用命令模式 指令如下
./zap.sh -cmd -quickurl http://abc.com.tw -quickout /tmp/81.html
寫個shell來做
一行一個網站
https://aa.bb.com
https://dd.ee.com
寫到 /tmp/site_to_test
#!/bin/bash
while read line
do
echo "$line"
./zap.sh -cmd -quickurl "$line" -quickout /tmp/`echo $line|cut -d '/' -f 3`.html
done < /tmp/site_to_test
2023/07/05
訂閱:
文章 (Atom)