การใช้รหัสผ่าน MySQL จากบรรทัดคำสั่งไม่ปลอดภัยอย่างไร


12

ฉันมีเครื่องมือทุบตีบางอย่างที่ใช้mysql -e "{command}"ฟังก์ชั่นนี้ การป้อนรหัสผ่านทุกครั้งที่ฉันใช้เครื่องมือเหล่านี้จะเป็นความเจ็บปวดดังนั้นเพื่อหลีกเลี่ยงการเขียนรหัสผ่านในไฟล์ธรรมดาด้วยรหัสฉันเก็บไว้ในหน่วยความจำ (โดยใช้read -s) และมี BASH อ่านทุกครั้งที่รันคำสั่ง

Mysql ยังคงคิดว่ารหัสผ่านกำลังถูกส่งผ่านบรรทัดคำสั่ง (เพราะในลักษณะของการพูดเป็น) และยังทำให้ฉันมีข้อผิดพลาด "การใช้รหัสผ่านบนอินเตอร์เฟสบรรทัดคำสั่งอาจไม่ปลอดภัย"

สำหรับวัตถุประสงค์ของฉันฉันไม่จำเป็นต้องระงับข้อความนี้ สิ่งที่ฉันจำเป็นต้องรู้คือมันเป็นสิ่งที่จะทำให้มันไม่ปลอดภัย? รหัสผ่านไม่สามารถมองเห็นได้ทางกายภาพดังนั้นการท่องไหล่จึงไม่สามารถทำได้และแม้แต่คนที่เดารหัสผ่าน SSH ของฉันก็ไม่สามารถทำได้เพราะมันถูกเก็บไว้ในหน่วยความจำแทนที่จะเป็นสคริปต์เอง การจู่โจมแบบคนกลางหรือสิ่งที่คล้ายกันเป็นไปได้หรือไม่


8
ใส่ไว้ใน~/.my.cnf ตัวอย่างคุณสามารถระบุต่อโฮสต์โดยทำ[client<hostname>]เช่น[clientlocalhost]เครื่องมือ MySQL จะใช้มันโดยอัตโนมัติดังนั้นมันจึงง่ายขึ้นและปลอดภัยขึ้น
AmazingDreams

คุณbashอ่านมันอย่างไรเมื่อคุณรันคำสั่ง? ถ้าคุณทำแล้วทุกคนสามารถดูได้ในmysql -p"$pass" ps
Barmar

คำตอบ:


26

ทุกคนที่สามารถเห็นตัวแปรสภาพแวดล้อมของคุณ (รวมถึงโปรแกรมที่คุณเรียกใช้) สามารถดูรหัสผ่านได้ และทุกคนที่สามารถดูกระบวนการของคุณสามารถเห็นบรรทัดคำสั่งที่ใช้ในการเรียกใช้รวมถึงพารามิเตอร์

ดังนั้นสำหรับกล่องที่คุณเข้าสู่ระบบเพียงอย่างเดียวความเสี่ยงอาจไม่สำคัญ แต่สำหรับการโจมตีเป้าหมายของคุณเป็นการส่วนตัวนี่เป็นเวคเตอร์การโจมตีเล็กน้อยในรูปแบบที่ยิ่งใหญ่ของสิ่งต่าง ๆ


22
เช่นเดียวกับคนที่กำลังดูคุณ~/.historyฯลฯ
ivanivan

ไม่ต้องพูดถึง HTOP และยูทิลิตี้ที่คล้ายกันก่อนหน้านี้ที่ถูกหลอกลวง สคริปต์จำนวนมากยังไม่ได้ใช้ตัวแปรสภาพแวดล้อม $ PASS ฯลฯ ตามที่ผู้ใช้อ่านอย่างเดียวหรือขาดการอนุญาต ในแบบสแตนด์อโลนของผู้ใช้คนเดียวมันอาจไม่สำคัญ
mckenzm

1
คำถามพูดอะไรเกี่ยวกับตัวแปรสภาพแวดล้อม ตัวแปรเชลล์ไม่ได้อยู่ในสภาพแวดล้อมเว้นแต่ว่าคุณจะส่งออก
Barmar
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.