ไม่สามารถถ่ายโอนไปยังไฟล์แม้ mysqld จะทำงานเหมือนรูท


0

TL; DR

ฉันไม่เข้าใจวิธีการmysqlทำงานที่root@localhostไม่อนุญาตให้เขียนถึง/usr/lib/? การเขียนไฟล์มีขั้นตอนทั่วไปตั้งแต่การฉีด SQL ไปจนถึงrootเชลล์ รายละเอียดด้านล่าง

ในความท้าทายที่ฉันทำฉันได้รับสิทธิ์ในการเข้าถึงของผู้ดูแลระบบไปยังแผง WordPress จากนั้นฉันสามารถแก้ไขไฟล์ php ทำให้ฉันสามารถเรียกใช้แบบสอบถามบนฐานข้อมูลในยามว่างของฉัน

ขั้นตอนแรกของฉันคือตรวจสอบว่าผู้ใช้รายใดกำลังเรียกใช้เซิร์ฟเวอร์ mysql:

$results = $wpdb->get_results( 'select system_user() ', OBJECT );
var_dump($results);

นี่แสดงให้เห็นว่าmysqlกำลังทำงานroot@localhostอยู่ ในความคิดของฉันrootควรมีสิทธิ์ทั้งหมดในระบบ ฉันยืนยันว่ามีFILEสิทธิ์:

...  "'root'@'localhost'" ["privilege_type"]=> string(4) "FILE" ["is_grantable"]=> string(3) "YES" }

เพื่อให้แน่ใจว่าฉันพยายามเขียนไฟล์ไปที่/tmp/:

select "hello world" into outfile "/tmp/test"

มันได้ผล ตอนนี้ฉันต้องการrootเชลล์บนระบบดังนั้นฉันจึงดำเนินการตามวิธีการที่นี่ซึ่งเกี่ยวข้องกับการเขียนไฟล์ไปที่/usr/lib/:

select "hello world" into dumpfile "/usr/lib/test"

แต่ฉันได้รับข้อผิดพลาดเกี่ยวกับการอนุญาต:

[Can't create/write to file '/usr/lib/raptor_udf2.so' (Errcode: 13)]

การใช้เว็บเชลล์ทำงานเป็นผู้ใช้ที่มีสิทธิ์ต่ำฉันตรวจสอบสิทธิ์ใน/usr/lib/:

drwxr-xr-x 173 root root 53248 Sep 29  2011 lib

ไม่มีอะไรที่ขี้ขลาดที่นี่rootควรจะสามารถเขียน


คำตอบ:


4

คุณกำลังใช้ผู้ใช้root MYSQLซึ่งไม่ได้รับอนุญาตจากผู้ใช้ระบบรู

ลองให้สิทธิ์ผู้ใช้ "mysql" ในการเขียนไฟล์


ไม่system_user()ควรส่งคืนผู้ใช้ที่mysqldaemon กำลังรันอยู่ใช่หรือไม่ ฉันจะถือว่ามันคืน "system_user"
user2018084

1
@ Juicy นี่เป็นเรื่องง่ายที่จะตรวจสอบ: dev.mysql.com/doc/refman/5.0/en/…
schroeder
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.