ไฟล์มันกันแฮกไม่ได้หรอกครับ
ไม่อยากใครฝากความหวังกับ htaccess
ไฟล์นี้กันช่องโหว่ง่ายๆอย่าง
sql injection ยังไม่ได้เลยด้วยซ้ำ
ทำไมจะไม่ได้ผมลองมาแล้วครับทางบริษัท Gameindy ก็ใช้อยุ่ ผมเป็น BlackHat PCT รองมาหมดแบ้วว *-*
ถ้าจะเถียง อย่าอ้างอิงบริษัทอื่นครับ เอาชื่อบริษัทมาไม่ช่วยอะไร
ไหนคุณลองอธิบายสิว่า การ Reqwite URL ป้องกัน SQL Injection ได้ยังไง
อย่าบอกว่าตัวเองเป็น Blackhat ถ้าคุณยังอธิบายแบบละเอียดไม่ได้ว่า .htaccess ที่ให้มานั้น ทำหน้าที่อย่างไร
บอกว่าตัวเองเป็น Blackhat เขียนโปรแกรมภาษาอะไรได้บ้างครับ
ที่สำคัญคือ คนแจก ไม่น่าเอาเรื่องพวกนี้มาล้อเล่นถ้าไม่รู้จริง พาลจะทำให้คนคิดว่ามันป้องกันได้จริงๆ
สุดท้ายก็เหมือนห้อยพระ เป็นแค่ความเชื่อ สุดท้ายเกิดอะไรขึ้นพระก็ช่วยไม่ได้
เรื่อง Security เป็นเรื่องใหญ่ ที่ควรศึกษา ไม่ใช่อาศัยความเชื่อแค่ htaccess ป้องกัน
.htaccess ที่ให้มานี้ ไม่ได้ป้องกันแฮก เพียงแต่จัดระเบียบแบบคร่าวๆ ให้การเชื่อมต่อไปแบบน่าสงสัยใช้งานไม่ได้เฉยๆ
ซึ่งเอาจริงๆแล้ว แฮกเกอร์ มักมาในช่องทางปรกติได้เหมือนกันครับ
ผมจะอธิบายไว้เป็นวิทยาทาน
# Block suspicious request methods
RewriteCond %{REQUEST_METHOD} ^(HEAD|TRACE|DELETE|TRACK|DEBUG) [NC]
RewriteRule ^(.*)$ - [F,L]
บล็อคการเชื่อมต่อ Method แบบแปลกๆ ซึ่งจริงๆการเชื่อมต่อปรกติจะมีแค่ GET กับ POST ดังนั้นพวก HEAD,TRACE,DELETE,TARCK,DEBUG จะไม่สามารถใช้งานได้
แต่!!! ใครเขาก็แฮกผ่าน GET , POST ทั้งนั้นแหละครับ # Block WP timthumb hack
RewriteCond %{REQUEST_URI} (timthumb\.php|phpthumb\.php|thumb\.php|thumbs\.php) [NC]
RewriteRule . - [S=1]
ป้องกัน WP timthumb hack สำหรับ Wordpress เท่านั้น เว็ปทั่วไปจะป้องกันทำไม ถ้าไม่ได้ใช้ Wordpress
และเวอร์ชั่นล่าสุด ก็ใช้ช่องโหว่นี้ไม่ได้แล้วด้วย
# Block suspicious user agents and requests
RewriteCond %{HTTP_USER_AGENT} (libwww-perl|wget|python|nikto|curl|scan|java|winhttp|clshttp|loader) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} (<|>|'|%0A|%0D|%27|%3C|%3E|%00) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} (;|<|>|'|"|\)|\(|%0A|%0D|%22|%27|%28|%3C|%3E|%00).*(libwww-perl|wget|python|nikto|curl|scan|java|winhttp|HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner) [NC,OR]
RewriteCond %{THE_REQUEST} \?\ HTTP/ [NC,OR]
RewriteCond %{THE_REQUEST} \/\*\ HTTP/ [NC,OR]
RewriteCond %{THE_REQUEST} etc/passwd [NC,OR]
RewriteCond %{THE_REQUEST} cgi-bin [NC,OR]
RewriteCond %{THE_REQUEST} (%0A|%0D) [NC,OR]
บล็อกการเข้าใช้งานผ่านโปรแกรมอื่นๆ ที่ไม่ใช่เบราเซอร์ เช่น ถ้าใช้ JAVA ยิงมาก็จะใช้งานไม่ได้ แต่ถ้าใช้ IE เล่นก็จะใช้งานได้ตามปรกติ
แต่!!!!! User Agent มันปลอมกันได้ครับ ผมจะเขียน JAVA แล้วปลอมตัวเป็น IE , Chome , Firefox ก็ได้ทั้งนั้นแหละ
แล้วผมก็แฮกได้ตามปรกติ# Block MySQL injections, RFI, base64, etc.
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=http:// [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=(\.\.//?)+ [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=/([a-z0-9_.]//?)+ [NC,OR]
RewriteCond %{QUERY_STRING} \=PHP[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} [NC,OR]
RewriteCond %{QUERY_STRING} (\.\./|\.\.) [OR]
RewriteCond %{QUERY_STRING} ftp\: [NC,OR]
RewriteCond %{QUERY_STRING} http\: [NC,OR]
RewriteCond %{QUERY_STRING} https\: [NC,OR]
RewriteCond %{QUERY_STRING} concat[^\(]*\( [NC,OR]
RewriteCond %{QUERY_STRING} union([^s]*s)+elect [NC,OR]
RewriteCond %{QUERY_STRING} union([^a]*a)+ll([^s]*s)+elect [NC,OR]
RewriteCond %{QUERY_STRING} (;|<|>|'|"|\)|%0A|%0D|%22|%27|%3C|%3E|%00).*(/\*|union|select|insert|drop|delete|update|cast|create|char|convert|alter|declare|order|script|set|md5|benchmark|encode) [NC,OR]
RewriteCond %{QUERY_STRING} (sp_executesql) [NC]
RewriteRule ^(.*)$ - [F,L]
บล็อค SQL Injection สำหรับ Query String
หรือแบบ GET เท่านั้นแต่ ถ้าผมส่งแบบ POST ก็ผ่านฉลุย ไฟล์ .htaccess มันไปยุ่ง Package Bodyไม่ได้ครับ มันยุ่งได้แค่ URL มันจึงดักได้แค่ Query Stringยังไม่รวมถึงการแฮกโดยผ่านช่องทางอื่น ที่ไม่ใช่ HTTP อีกนะครับ
ที่สำคัญคือ เรื่องพวกนี้ มั่วไม่ได้นะครับ คิดว่าใช้แล้วปลอดภัย ก็ทำไป แต่ถ้ามันเป็นแค่ความเชื่อ เราเชื่อของเราคนเดียวว่าปลอดภัย อุ่นใจตัวเอง
แต่ Hacker มันยืนอยู่บนความเป็นจริง ไม่ใช่ความเชื่อครับ
ขอบคุณสำหรับเจ้าของกระทู้ และขอบคุณสำหรับคำอธิบายครับ คงเป็นประโยชน์สำหรับเพื่อน ๆ สมาชิก