บทนำ (Overview)
โดยปกติแล้วเมื่อติดตั้ง “MSSQL” แล้วนั้น ตัวโปรแกรมจะเปิด “Port” หมายเลข “1433” หรืออาจจะเป็นหมายเลขอื่นก็ได้ (ขึ้นอยู่กับผู้ดูแลระบบเปลี่ยนแปลงแก้ไข) ซึ่งเราสามารถค้นหาหมายเลข “Port” ดังกล่าวได้โดยใช้วิธีการ “Scan Port” ที่เรียกว่า “UDP foot-printing” โดยติดต่อไปที่ (UDP Port 1343) ซึ่งนอกจากสะดวกในการค้นหา “SQLServer” จากจำนวนเครื่องในเครือข่ายจำนวนมากแล้วยังสามารถบอกถึง “Version” ของ “MSSQL” ด้วย
ขั้นตอน (Steps)
- เริ่มต้นจากการเข้าใช้งานโปรแกรม “Metasploit”
- และใช้คำสั่งค้นหาของปลั๊กอิน “MSSQL ping” ใน “msfconsole”
msf > search mssql [!] Database not connected or cache not built, using slow search Matching Modules ================ Name Disclosure Date Rank Description ---- --------------- ---- ----------- auxiliary/admin/mssql/mssql_enum normal Microsoft SQL Server Configuration Enumerator auxiliary/admin/mssql/mssql_enum_domain_accounts normal Microsoft SQL Server SUSER_SNAME Windows Domain Account Enumeration auxiliary/admin/mssql/mssql_enum_domain_accounts_sqli normal Microsoft SQL Server SQLi SUSER_SNAME Windows Domain Account Enumeration auxiliary/admin/mssql/mssql_enum_sql_logins normal Microsoft SQL Server SUSER_SNAME SQL Logins Enumeration auxiliary/admin/mssql/mssql_escalate_dbowner normal Microsoft SQL Server Escalate Db_Owner auxiliary/admin/mssql/mssql_escalate_dbowner_sqli normal Microsoft SQL Server SQLi Escalate Db_Owner auxiliary/admin/mssql/mssql_escalate_execute_as normal Microsoft SQL Server Escalate EXECUTE AS auxiliary/admin/mssql/mssql_escalate_execute_as_sqli normal Microsoft SQL Server SQLi Escalate Execute AS auxiliary/admin/mssql/mssql_exec normal Microsoft SQL Server xp_cmdshell Command Execution auxiliary/admin/mssql/mssql_findandsampledata normal Microsoft SQL Server Find and Sample Data auxiliary/admin/mssql/mssql_idf normal Microsoft SQL Server Interesting Data Finder auxiliary/admin/mssql/mssql_ntlm_stealer normal Microsoft SQL Server NTLM Stealer auxiliary/admin/mssql/mssql_ntlm_stealer_sqli normal Microsoft SQL Server SQLi NTLM Stealer auxiliary/admin/mssql/mssql_sql normal Microsoft SQL Server Generic Query auxiliary/admin/mssql/mssql_sql_file normal Microsoft SQL Server Generic Query from File auxiliary/analyze/jtr_mssql_fast normal John the Ripper MS SQL Password Cracker (Fast Mode) auxiliary/scanner/mssql/mssql_hashdump normal MSSQL Password Hashdump auxiliary/scanner/mssql/mssql_login normal MSSQL Login Utility auxiliary/scanner/mssql/mssql_ping normal MSSQL Ping Utility auxiliary/scanner/mssql/mssql_schemadump normal MSSQL Schema Dump auxiliary/server/capture/mssql normal Authentication Capture: MSSQL exploit/windows/iis/msadc 1998-07-17 excellent MS99-025 Microsoft IIS MDAC msadcs.dll RDS Arbitrary Remote Command Execution exploit/windows/mssql/lyris_listmanager_weak_pass 2005-12-08 excellent Lyris ListManager MSDE Weak sa Password exploit/windows/mssql/ms02_039_slammer 2002-07-24 good MS02-039 Microsoft SQL Server Resolution Overflow exploit/windows/mssql/ms02_056_hello 2002-08-05 good MS02-056 Microsoft SQL Server Hello Overflow exploit/windows/mssql/ms09_004_sp_replwritetovarbin 2008-12-09 good MS09-004 Microsoft SQL Server sp_replwritetovarbin Memory Corruption exploit/windows/mssql/ms09_004_sp_replwritetovarbin_sqli 2008-12-09 excellent MS09-004 Microsoft SQL Server sp_replwritetovarbin Memory Corruption via SQL Injection exploit/windows/mssql/mssql_linkcrawler 2000-01-01 great Microsoft SQL Server Database Link Crawling Command Execution exploit/windows/mssql/mssql_payload 2000-05-30 excellent Microsoft SQL Server Payload Execution exploit/windows/mssql/mssql_payload_sqli 2000-05-30 excellent Microsoft SQL Server Payload Execution via SQL Injection post/windows/manage/mssql_local_auth_bypass normal Windows Manage Local Microsoft SQL Server Authorization Bypass
- จากนั้นเรียกใช้คำสั่ง “use auxiliary/scanner/mssql/mssql_ping” เพื่อโหลด “Scanner Module” เข้ามาใช้งาน
msf > use auxiliary/scanner/mssql/mssql_ping msf auxiliary(mssql_ping) >
- ตรวจสอบ “Options” การทำงานของ “Module” จะเห็นว่าต้องการพาราเตอร์ของช่วง “IP” ปลายทางที่ต้องการ “Scan”
msf auxiliary(mssql_ping) > show options Module options (auxiliary/scanner/mssql/mssql_ping): Name Current Setting Required Description ---- --------------- -------- ----------- PASSWORD no The password for the specified username RHOSTS 192.168.0.31 yes The target address range or CIDR identifier THREADS 1 yes The number of concurrent threads USERNAME no The username to authenticate as USE_WINDOWS_AUTHENT false yes Use windows authentification (requires DOMAIN option set)
- ทำการตั้งค่า RHOSTS โดยใช้คำสั่ง Set ดังนี้
msf auxiliary(mssql_ping) > set RHOSTS 192.168.0.0/24 RHOSTS => 192.168.0.0/24 msf auxiliary(mssql_ping) > set USERNAME "" USERNAME => msf auxiliary(mssql_ping) > show options Module options (auxiliary/scanner/mssql/mssql_ping): Name Current Setting Required Description ---- --------------- -------- ----------- PASSWORD no The password for the specified username RHOSTS 192.168.0.0/24 yes The target address range or CIDR identifier THREADS 1 yes The number of concurrent threads USERNAME no The username to authenticate as USE_WINDOWS_AUTHENT false yes Use windows authentification (requires DOMAIN option set)
- ใช้คำสั่ง “run” จะทำการ “Scan” ไปยังเครื่องต่างๆ ภายในเครือข่ายที่กำหนด จนพบเครื่องเป้าหมาย และมี port ที่กำหนดไว้ สำหรับ “MSSQL Server”
สรุปผลการทดสอบ (Conclusion)
จากผลการทดสอบพบว่าเลข “Default” ของ “port” ที่ถูกใช้ในการค้นหา “Database server” จะมีส่วนช่วยให้การรวบรวมข้อมูลก่อนการโจมตี “SQLServer” ให้มีความสะดวกรวดเร็วมากขึ้น เพราะฉะนั้นประเด็นสำคัญเมื่อติดตั้ง “MSSQL” เสร็จสิ้นแล้วควรมีการเปลี่ยนเลขที่ “Port” เพื่อให้ยากต่อการค้นหาด้วย

นอกจากนี้ถ้าไม่ได้ใช้งานส่วนของ “UDP 1434” สามารถปิดได้จาก “server” ดังนี้ พิมพ์ services.msc > จากนั้นเลือก “Sql server browser” แล้วเลือก “Disable”