Upgrade to Pro — share decks privately, control downloads, hide ads and more …

接觸資安才發現前端的水真深 - Modern Web 2021

Huli
October 15, 2021

接觸資安才發現前端的水真深 - Modern Web 2021

接觸資安才發現前端的水真深 - Modern Web 2021

Huli

October 15, 2021
Tweet

More Decks by Huli

Other Decks in Technology

Transcript

  1. 接觸資安才發現前端的⽔水真深
    Huli @ Modern Web 2021

    View Slide

  2. About
    上半年年:OneDegree 前端⼯工程師

    View Slide

  3. About
    上半年年:OneDegree 前端⼯工程師
    下半年年:Cymetrics 資安⼯工程師

    View Slide

  4. View Slide

  5. Agenda
    1. 繞過各種限制

    2. side channel attack

    3. 其他你不知道的功能

    View Slide

  6. Agenda
    1. 繞過各種限制

    2. side channel attack

    3. 其他你不知道的功能

    View Slide

  7. XSS

    View Slide

  8. <br/>alert(1)<br/>

    View Slide

  9. onerror=alert(1)>

    View Slide


  10. View Slide

  11. Q1
    如果把 HTML 中的空格都拿掉
    是否還可以⽤用屬性 XSS?

    View Slide

  12. Q1
    如果把 HTML 中的空格都拿掉
    是否還可以⽤用屬性 XSS?

    View Slide


  13. View Slide


  14. View Slide

  15. Q2
    如果禁⽌止使⽤用 on 開頭的屬性,
    是否還能 XSS?

    View Slide

  16. Q2
    如果禁⽌止使⽤用 on 開頭的屬性,
    是否還能 XSS?

    View Slide

  17. src="javascript:alert(1)">

    View Slide

  18. Q3
    如果把 javascript 開頭的值都濾掉,
    是否還能 XSS?

    View Slide

  19. Q3
    如果把 javascript 開頭的值都濾掉,
    是否還能 XSS?

    View Slide

  20. src="java\tscript:alert(1)">

    View Slide

  21. Q4
    如果去除 tab 跟空⾏行行以後去掉 javascript,
    是否還能 XSS?

    View Slide

  22. Q4
    如果去除 tab 跟空⾏行行以後去掉 javascript,
    是否還能 XSS?

    View Slide

  23. src="javascript:alert(1)">

    View Slide

  24. src="javascript:alert
    (1)">

    View Slide

  25. Q5
    如果去除 src 屬性,
    是否還能 XSS?

    View Slide

  26. Q5
    如果去除 src 屬性,
    是否還能 XSS?

    View Slide

  27. href="javascript:alert(1)">

    View Slide

  28. <br/>alert(1)<br/>

    View Slide

  29. <br/>alert`1`<br/>

    View Slide

  30. onerror=alert;throw 1

    View Slide

  31. onerror=eval;throw
    "=alert\x281\x29"

    View Slide

  32. onerror=eval;throw
    "=alert\x281\x29"
    Uncaught 123

    View Slide

  33. onerror=eval;throw
    "=alert\x281\x29"
    Uncaught=123

    View Slide

  34. onerror=eval;throw
    "=alert\x281\x29"
    Uncaught=alert(1)

    View Slide

  35. View Slide

  36. 字數限制

    View Slide


  37. 13 字

    View Slide

  38. 利利⽤用現有資訊

    View Slide

  39. onload=
    eval(`'`+location)>
    13 + 18 = 31 字

    View Slide

  40. a.com#';alert(1)
    `'` + location
    => 'a.com#';alert(1)

    View Slide

  41. onload=
    eval(`'`+document.URL)>
    13 + 22 = 35 字

    View Slide

  42. onload=
    eval(`'`+document.URL)>
    13 + 22 = 35 字
    9 個字

    View Slide

  43. onload=
    eval(`'`+URL)>
    13 + 13 = 26 字

    View Slide

  44. View Slide

  45. View Slide

  46. Q6
    name = 123
    typeof name === "number"

    View Slide

  47. Q6
    name = 123
    typeof name === "number"

    View Slide

  48. example.com
    window.name

    View Slide

  49. huli.tw
    window.name

    View Slide

  50. onload=
    eval(name)>
    13 + 10 = 23 字

    View Slide

  51. https://tinyxss.terjanq.me/

    View Slide

  52. Agenda
    1. 繞過各種限制

    2. side channel attack

    3. 其他你不知道的功能

    View Slide

  53. Agenda
    1. 繞過各種限制

    2. Cross site leaks (XS leak)

    3. 其他你不知道的功能

    View Slide

  54. Download
    請輸入要搜尋的使⽤用者名稱
    example.com/download

    View Slide

  55. Download
    請輸入要搜尋的使⽤用者名稱
    查無使⽤用者
    example
    example.com/download?q=example

    View Slide

  56. Download
    請輸入要搜尋的使⽤用者名稱
    a
    example.com/download?q=a

    View Slide

  57. Download
    請輸入要搜尋的使⽤用者名稱
    a

    View Slide

  58. 然後呢,我們能做什什麼?

    View Slide

  59. Download
    請輸入要搜尋的使⽤用者名稱
    iframe
    example.com/download
    huli.tw

    View Slide

  60. Download
    請輸入要搜尋的使⽤用者名稱
    iframe
    example
    example.com/download?q=example
    huli.tw

    View Slide

  61. Download
    請輸入要搜尋的使⽤用者名稱
    iframe
    example
    iframe.contentWindow.origin
    example.com/download?q=example
    huli.tw

    View Slide

  62. Download
    請輸入要搜尋的使⽤用者名稱
    iframe
    a
    iframe.contentWindow.origin
    example.com/download?q=a
    huli.tw

    View Slide

  63. View Slide

  64. example.com/users/123
    David
    id=message
    傳送訊息

    View Slide

  65. example.com/users/210
    Peter
    id=add
    加入好友

    View Slide

  66. 然後呢,我們能做什什麼?

    View Slide

  67. example.com/users/123
    David
    id=message
    傳送訊息

    View Slide

  68. example.com/users/123#message
    David
    id=message
    傳送訊息 focus

    View Slide

  69. iframe
    example.com/users/123#message
    huli.tw
    David
    id=message
    傳送訊息

    View Slide

  70. View Slide

  71. Agenda
    1. 繞過各種限制

    2. side channel attack

    3. 其他你不知道的功能

    View Slide

  72. example.com/files example.com/blog
    上傳各種檔案 放各種⽂文章

    View Slide

  73. example.com/files example.com/blog
    path: /files path: /blog
    上傳各種檔案 放各種⽂文章

    View Slide

  74. example.com/files example.com/blog
    path: /files path: /blog
    放各種⽂文章
    
<br/>alert(1)
<br/>
    files/xss.html

    View Slide

  75. example.com/files example.com/blog
    path: /files path: /blog
    放各種⽂文章
    
<br/>alert(1)
<br/>
    files/xss.html

    View Slide

  76. View Slide

  77. View Slide

  78. example.com
    ……….

    View Slide

  79. example.com
    ………. 
<br/>alert(1)
<br/>

    View Slide

  80. example.com
    ………. 
<br/>alert(1)
<br/>

    View Slide

  81. View Slide

  82. View Slide

  83. Agenda
    1. 繞過各種限制

    2. side channel attack

    3. 其他你不知道的功能

    View Slide

  84. 資料來來源
    1.https://tinyxss.terjanq.me/
    2.https://xsleaks.dev/
    3.LINE CTF 2021
    4.DiceCTF 2021
    5.zer0pts CTF 2021

    View Slide

  85. google:
    cymetrics blog

    View Slide