Unhidden Content - Enjoy The View!
สำหรับบทความนี้จะเป็นการนำเสนอว่าทำไม javascript สามารถเป็น bypass ใน simple
/advanced html form และทำยังไงถึงจะทำได้ และ javascript ยังสามารถลบล้าง
cookie/session ที่เป็นจริงได้อีกด้วย
แบบฟอร์มธรรมดาในเว็ปเพจ
1. พึ้นที่ที่ต้องการ password
แน่นอนว่าคุณได้เคยพานพบกับเว็ปเพจที่ต้องการให้คุณกรอกข้อมูลที่อย่างก่อนที่จะ
submit. มีความเป็นไปได้สูงว่าเราสามารถจะ bypass มันได้ในบางเว็ปเพจ. ลองเปีด
source ของเว็ปเพจนั้นดูครับ และไล่ลงมาดูตรงที่ ฟอร์มโค้ด, สังเกตตรงที่ onsubmit
attribute, หวังว่าตอนนี้คุฯคงมีความรู้ด้าน javascript มากพอนะครับ.
เราสามารถใช้ประโยชจาก javascript ในทุกๆหน้าได้ครับ
ไม่ว่าจะเป็นการเปลี่ยนแปลงข้อมูล, การลบข้อมูล,
หรือการเพี่มส่วนสำคัญในเว็ปนั้นๆครับ. ในบทความนี้ ผมจะพูดถึงการเคลียร์ onSubmit
attribute.
โดยปรกติแล้ว onsubmit attribute จะชี้การทำงานไปยัง function
ที่ทำการตรวจสรอบว่าฟอร์มได้ทำการกรอกอย่างครบถ้วน และ ถูกต้องหรือไม่. Function
ที่ทำงานอาจคล้ายแบบนี้ครับ
function formSubmit(x)
{
if(x.email.value=="") return false;
return true;
}
...
<form name="spamform" method=post action="process.php" onsubmit="return
formSubmit(this);">
...
</form>
ผมจะไม่พูดถึงรายระเอียดมากนักว่าการทำงานของ formSubmit
จากตัวอย่างข้างบนนั่นว่าเป็นยังไง. คนควรรู้ว่าถ้าหากว่า textfield/ optionfield
/option/ ว่างเปล่า, ฟอร์มจะไปถูกส่งไปยัง process.php. เอาล่ะ
กลับมาสู่ความจริงกันเถอะ, ทำยังไงถึงจะสามารถเปลี่ยนแปลงฟอร์มเพื่อให้ onsubmit
return true ตลอดเวลา. หนทางที่จะเข้าสู่การทำลายล้างฟอร์ม(?) คือการใช้ javascript
ครับ
document.forms
.onsubmit="return true;";
หรือ
document.spamform.onsubmit="return true;";
queries ทั้งสองอาจอนุญาติให้คุณ submit ฟอร์มโดยไม่มีการกรอกข้อมูล,
ความลับก็คือทำยังไงถึงจะ execute ได้.
ผมใช้ browser's Location bar. สิ่งที่คุณจะทำก็คือ นำข้อความข้างล่างนี้ไปแปะที่
location bar แล้ว hit enter
java script:document.spamform.onsubmit="return true;";
ข้อคำสั่งข้างบนนั้นอาจไม่ทำงานเพราะว่า query จะคืนค่าให้ javascript และ
javascript ก็ไม่รู้ว่าจะทำอะไรกับมัน. เราต้องการหาหนทางใช้ค่าที่เราต้องการ และ
หนีจากการ dump ทางหน้าจอ...ใช้งาน javascript.alert() ครับ
java script:alert(document.spamform.onsubmit="return true;");
และเราก็จะเห็น alert box ที่ return true แทนที่การ dump ค่าของ javascript ทาง
web browser. คุณสามารถใส่ค่าอะไรก็ได้ใน spam form ในขณะที่คุณ executed query
ข้างบนนั่น.
2. เปลี่ยนค่าของฟอร์ม
หากคุณเตรียมการที่จะเปลี่ยนฟอร์ม onsubmit attribute เพื่อจุดประสงศ์อันไม่ดี(?),
แต่ว่า อะไรคือข้อจำกัด? แน่นอนว่าตอนนี้คุณสามารถเปลี่ยนแปลงอะไรก็ได้ใน onsubmit
attribute . อีกอย่างที่ทำได้
java script:alert(document.spamform.fieldname.value="Hacked By LaoCERT!");
หรือ
java script:alert(document.forms
.fieldname.value="Hacked By LaoCERT!");
และแน่นอน คุณก็รู้, รึว่าไม่? คุณสามารถเปลี่ยนค่าอะไรก็ได้ในฟอร์มไม่ว่าจะเป็น
radio button, checkboxs, selects, hidden values, button และ อื่นๆอีกมากมาย
เห็นอย่างนี้แย้วจะหาทางป้องกันงัยก็รีบป้องกันนะจ๊ะ
posted by keztudio