php程式碼審計基礎學習(一)
阿新 • • 發佈:2021-10-23
零、參考文章而和書籍
https://www.jianshu.com/p/f69b1f2fcdcf
https://zhuanlan.zhihu.com/p/22417081
https://www.cnblogs.com/murkuo/p/14877153.html
https://zhuanlan.zhihu.com/p/412546799
《程式碼審計 企業級Web程式碼安全架構》
一、學習思路
首先確定自己的定位,先挖掘什麼樣的漏洞。然後判斷是否有無框架,確定網站的執行結構。
二、通過挖漏洞來getshell
可以通過敏感回溯引數,挖掘高危漏洞。通過Seay原始碼審計系統,查詢敏感語句後,在確定該敏感語句所在檔案的作用。然後根據函式來進行全域性搜尋,從而判斷函式的呼叫位置。再判斷引數是否可控和做了過濾,能否繞過,進而確定漏洞是否存在。
三、為了挖掘更多漏洞
可以在sublime全域性正則搜尋$_SERVER|$_COOKIE|$_REQUEST|$_GET|$_POST|$_FILES,正向跟進引數的呼叫邏輯。
再根據功能點,黑盒或白盒審計程式的邏輯漏洞。
四、常用搜索函式tips
1、程式碼執行
eval()
assert()
preg_replace + '/e'
call_user_func()
call_user_func_array()
create_function
array_map()
2、命令執行
system() passthru() exec() pcntl_exec() shell_exec() popen() proc_open() `(反單引號) ob_start() escapeshellcmd() // 該函式用於過濾
3、檔案上傳
move_uploaded_file()
getimagesize() //驗證檔案頭只要為GIF89a,就會返回真
4、檔案包含
include
include_once
require
require_once
遠端檔案包含
allow_url_include = on
5、檔案下載或讀取
show_source
highlite_file
readfile
flie_get_contents
fopen
fread
fgetss
fgets
file
parse_ini_file
6、檔案刪除漏洞
unlink()
7、變數覆蓋漏洞
extract() parse_str() mb_parse_str() $$ 全域性變數覆蓋:register_globals為ON,$GLOBALS
8、邏輯漏洞和會話認證
這裡主要判斷程式的邏輯,和關於使用者身份驗證是否在漏洞。