Phô trương
Chuẩn bị trước quá lâu luôn có nhiều rủi ro. Bài này không thể chờ đến Tết Âm lịch được
Một năm trước, tôi được Bugcrowd phỏng vấn, có lẽ vì thành tích từ hai chương trình bug bounty mà tôi tham gia (hiện tại thì bài phỏng vấn đã bị mất). Có nhiều câu trả lời mà tôi ước là mình có thể thay đổi, nhưng “những chuyện đã xảy ra rồi thì như vậy là như vậy”, tôi hài lòng và rất biết ơn họ. Số điểm và số lỗi của tôi hồi đó không có gì đáng để được họ làm thế, cho đến giờ tôi vẫn nghĩ mọi chuyện chỉ là một điều may mắn. Tôi thường gặp may như thế. Một năm trôi qua, bên cạnh công việc, tình cảm, chuyện gia đình, tôi vẫn dành thời gian để tham gia bug bounty. Chủ yếu để kiếm thêm thu nhập. Có thể vì ở hiền gặp lành, số lỗi tôi tìm được tăng lên, mức độ nguy hiểm của lỗi cũng tăng lên, thứ hạng cũng tăng lên. Nhưng có hai thứ quan trọng giảm sút, đó là sức khỏe và thời gian.
Về bài viết kỹ thuật, tôi đã chuẩn bị xong một bài về account takeover và dự định post vào đợt tôi đi Đà Nẵng. Account takeover, dù chỉ mang lại cho tôi khoảng 25,000 USD (), thì vẫn là dạng lỗi tôi thích hơn nhiều nếu đem so với SQLI hay XSS – những thứ mà tôi nghĩ nên được dành cho các phần mềm quét tự động.
Tại sao tôi lại nhắc đến con số 25,000 USD?
Khi tôi lên Hackerone hay Twitter, những lỗi được trả nhiều tiền (bounty) luôn là những lỗi có lắm like. Điều này thể hiện rất rõ với những lỗi có bounty từ 5000 USD trở lên. Nghe vừa hợp lý lại vừa buồn cười.
Chính tôi cũng từng report cùng một lỗi cho hai chương trình khác nhau, và bounty của chương trình sau thì gấp 10 lần chương trình trước. Đúng 10 lần không hơn không kém.
Cùng là bài viết này, cùng về một lỗi này, các bạn có thể đọc xong rồi quên đi như bao bài viết khác, còn nếu tôi bảo tôi kiếm được 100,000 USD từ nó thì các bạn sẽ like, share về tường, để vài dòng cảm thán, có phải vậy không?
Khi chúng ta đọc về một lỗi, dù lỗi đó có được 100 USD hay 10,000 USD thì chúng ta, những bạn đọc vô danh, đều không được một đồng. Lỗi như thế nào thì nó vẫn cứ là như thế, chúng ta cũng không học được nhiều hơn hay ít đi.
Vậy vấn đề ở đây là gì?
Nếu đã cùng bị ám ảnh về vật chất như thế, sao chúng ta lại đi chửi những người con gái đã vì tiền mà thay lòng đổi dạ?
Vì sao?
“Tiền là một quyền lực, thường thì toàn phiền phức
Biến con người mày thành sa đọa từ đứa hiền nhất“
Quay lại vụ account takeover. Dự định thì là thế, nhưng rồi gần cuối năm xảy ra một vài sự việc khiến tôi không muốn thực hiện nữa. Lòng người thật khó đoán. Vậy nên hôm nay, hãy dành thời gian cho một câu chuyện khác.
Hoàn toàn không liên quan gì đến kỹ thuật.
Nội dung này tôi đã từng trình bày offline một lần rồi, nhưng vẫn thích viết lại, để nhỡ sau này có bán sách thật thì tôi sẽ không bị quên đi những kỷ niệm đẹp.
Hồi đó, tôi mới biết đến bug bounty, cũng tạo tài khoản trên Bugcrowd rồi tìm lỗi, như bao người khác. Tôi tìm thấy một XSS, tất nhiên bị Duplicate (nghĩa là đã có người khác tìm thấy trước rồi, các chương trình bug bounty chỉ trả tiền cho người tìm ra đầu tiên). Tiếp đó tôi thấy thêm một XSS và một Path Traversal, trong hai chương trình khác nhau. Mấy tháng sau thì cái XSS bị Won’t Fix, với lý do rằng hướng khai thác đó tối quá. Tôi cũng công nhận nó tối thật, vì chỉ chạy trên mấy trình duyệt lỗi thời, họ không thích sửa thì thôi. Nhưng nghĩ đến việc cứ mỗi lỗi tìm ra lại phải chờ đợi mấy tháng chỉ để biết rằng mình chẳng được gì, tôi sinh ra chán. Tài khoản Bugcrowd của tôi lúc đó thì đang bị khóa vì nghịch linh tinh cái xác thực hai bước. Ở vào tình cảnh ấy, lựa chọn của tôi là dừng lại. Lỗi Path Traversal kia cũng chẳng nguy hiểm gì, nó còn chán hơn cái XSS, nên tôi thậm chí muốn unsubscribe ngay mọi email từ Bugcrowd, để đỡ phải nhận thông báo khi nó bị Won’t Fix. Thực sự, là tôi muốn thế.
Một thời gian sau, hôm đó cuối tuần tôi đang ngủ thì điện thoại báo có mail mới. Thường sẽ là mấy mail tuyển dụng (mà theo bọn bạn bảo thì do trường học đã bán đứng chúng tôi). Mấy mail đó sẽ bắt đầu kiểu: “Chào T, chị là ABC, phụ trách tuyển dụng của công ty XYZ. Hiện tại bên chị đang có nhu cầu blah blah…”, thi thoảng rảnh quá tôi cũng đọc cho đỡ buồn, chứ hầu hết là mark as spam ngay. Cơ mà lần này, thì khác, vì đó là một email với nội dung không phải tiếng Việt:
Tôi tỉnh cả ngủ
Việc đầu tiên sau khi đánh răng rửa mặt là tôi viết mail cho Bugcrowd nhờ mở hộ cái tài khoản đang bị khóa, sau đó vào thiết lập hình thức thanh toán. 100 USD không phải là số tiền lớn, nhưng còn gì dối lòng hơn nếu bảo rằng tôi không thấy vui?
Cho đến tận bây giờ, tôi không bao giờ thôi biết ơn X (công ty đã bị che tên trong bức hình vừa rồi). Bác sĩ Watson kể rằng ông ấy từng chữa một căn bệnh hiếm gặp cho một bệnh nhân, và từ đó trở đi, bệnh nhân ấy không bao giờ cảm thấy mệt mỏi về việc ca ngợi bác sĩ Watson với tất cả những người mà ông ta gặp. Tôi cũng là một trường hợp như thế. Nếu không có X, tôi không có ngày hôm nay. Vấn đề không phải là 100 USD, mà vấn đề là họ hoàn toàn có thể để lỗi đó thành Won’t Fix, vì chính tôi cũng vừa bảo rằng nó rất chán. Họ hoàn toàn có thể làm thế, như bao công ty khác sau này đã làm với tôi, mà chẳng có gì phải áy náy cả. Nếu mọi thứ xảy ra như thế, tôi sẽ lại tiếp tục một cuộc sống bình thường, không có 100 USD, không có bug bounty, không có gì cả. Cũng đâu phải là một ấn tượng quá sâu đậm để có thể giữ mãi trong lòng.
Tôi bắt đầu dành nhiều thời gian hơn, report đủ các loại lỗi linh tinh, vẫn trong chương trình X. Có những cái chẳng biết là có ảnh hưởng gì không, nhưng tôi cứ thấy bất thường là report. Kệ, mất gì đâu.
Cho đến một hôm, tôi tìm thấy một lỗi khá nghiêm trọng, mà nếu theo mô tả của X thì họ sẽ thưởng tối đa 1000 USD. Gấp 10 lần 100 USD, đó không phải là số tiền nhỏ đối với tôi. Tôi report xong và không thể tập trung làm bất cứ việc gì, kể cả là lái xe về nhà. Tôi cứ suy nghĩ miên man, liệu có được 1000 USD, hay đó chỉ là số tiền tối đa và họ sẽ chỉ trả tôi 500 USD? Tôi chưa có kinh nghiệm gì, cũng chẳng biết tự lượng giá lỗi của mình cụ thể ra sao. Tôi chỉ biết mỗi tỉ giá USD – VNĐ lúc đó và nói thật trong đầu tôi không chứa gì hơn ngoài con số 20 triệu.
Thật khó tin, thay vì phải chờ vài tháng như lỗi Path Traversal đầu tiên, lần này X phản hồi tôi chỉ sau vài giờ. Điều đó càng làm tôi thêm ảo tưởng. 1000 USD, ôi, tôi sắp có 1000 USD. Thật không thể tin được!
Cũng chỉ vài giờ nữa, họ thông báo lỗi đã được sửa và nhờ tôi kiểm tra lại. Tôi xác nhận. Mọi chuyện dừng ở đó.
Một ngày, rồi hai ngày trôi qua, không có tín hiệu gì. Ngày thứ ba, vẫn không có gì. Sáng nào tôi cũng hồi hộp check mail, nhưng cái điện thoại chết tiệt lại chẳng chịu rung lên.
Tròn một tuần, tôi đến công ty, mở máy lên và chuẩn bị làm việc. Ting ting:
Tim tôi không ngừng đập, nó chỉ đập rất chậm. Tôi không hiểu chuyện gì đang xảy ra. Tại sao lại là 3500 USD? 3500 USD? 3500 USD? Cái quái gì thế?
Tôi không mơ. Họ đã thưởng tôi 3500 USD. 3500 USD cho một lỗi mà họ ghi là họ thưởng tối đa 1000 USD. WOOOW!!!
Đúng như câu “Kiềng canh nóng mà thổi rau nguội”, việc lỗi XSS trước đó bị Won’t Fix đã ảnh hưởng rất nhiều đến nhận thức của tôi về bug bounty. Thật xấu hổ khi nghĩ lại rằng tôi đã từng sợ họ sẽ chỉ trả 500 USD. Thật đáng xấu hổ.
Sau khi cảm ơn X, tôi lại tiếp tục tìm. Rất quyết tâm. Phần thưởng thì quá lớn còn X thì quá tử tế. Dù có dành một phần thanh xuân của mình cho họ thì tôi vẫn thấy đáng.
Trước lỗi 3500 USD (gọi là lỗi B), thật ra tôi có report 1 lỗi nữa (gọi là lỗi A). Ở thời điểm tôi report thì lỗi này không nguy hiểm lắm, phản hồi từ phía BugCrowd cũng rất qua loa (X là chương trình do Bugcrowd quản lý, nên thường thì các báo cáo lỗi sẽ do phía Bugcrowd xem xét trước rồi mới đến X). Tuy nhiên, sau vụ việc với lỗi B, có thể là phía X đã thay đổi cách nhìn nhận đối với một tài năng ẩn dật như tôi, nên họ bắt đầu quan tâm đến lỗi A này. Họ vào hỏi thêm thông tin, vì cho đến lúc đó cuộc trao đổi giữa tôi và Bugcrowd đang tạm dừng ở bế tắc do Bugcrowd cảm thấy lỗi không có gì nguy hiểm cả. Họ đang muốn chuyển nó thành Not Applicable hoặc Won’t Fix. Tôi hình dung ý của X là liệu có khía cạnh bí ẩn, cao siêu nào của lỗi A mà họ chưa nhận thức đến hay không?
Thật buồn là chẳng có gì bí ẩn cả. Khi tôi report, tôi chỉ nghĩ đây là một lỗi P4 (ảnh hưởng rất thấp) và kỳ vọng kiếm thêm 100 USD, thành ra bây giờ thấy hơi ngại. Tất nhiên tôi cũng cố gắng trình bày thêm theo yêu cầu của X, nhưng cảm giác là lỗi vẫn không nguy hiểm hơn tí nào, và X hay Bugcrowd thì cũng cứ tiếp tục nhạt nhòa thế thôi.
Một tuần nữa trôi qua, không có gì tiến triển cả.
Sau thời gian tận hưởng 3500 USD (về khía cạnh tinh thần, chứ tôi không phải loại người dễ sa ngã để mà tiêu hết số tiền đó), tôi trở lại với vị thế như lúc bắt đầu. Nhiệt huyết và đầy mơ mộng. May mắn làm sao, tôi lại thấy một lỗi nữa (gọi là lỗi C), cũng nguy hiểm như lỗi B kia. Tim tôi rộn ràng. 3500 USD cộng với 3500 USD là 7000 USD, ha ha, vui quá đi, ha ha.
Nhưng kỳ lạ, lỗi này chỉ được 1000 USD. Tôi bị buồn. X không sai vì họ ghi rõ lỗi kiểu này sẽ được thưởng tối đa 1000 USD. Chỉ là lần trước được 3500 USD, hai lỗi như nhau mà lần này lại được 1000 USD, tôi không vui. Ôi câu chuyện cho kẹo vớ vẩn nào đó thế mà đúng, lòng người thật xấu xa.
Trong cơn buồn bã, tôi suy nghĩ vẩn vơ, và tình cờ vô cùng là tôi lại thấy có sự liên quan giữa C và A. Từ đó, tôi nghĩ ra một kịch bản tấn công mà có thể đẩy A từ một lỗi nhảm nhí trở nên nguy hiểm tương đương với B và C.
Khó tin nhưng là sự thật.
Ngay lập tức, thế bế tắc biến mất, lỗi được xác nhận, được sửa, và tôi có thêm 1000 USD. Cuộc sống đúng là chẳng lường trước điều gì…
Đến đây thì có vẻ bàn cờ đã bước vào giai đoạn tàn cuộc, tôi không thấy có tiềm năng gì trong việc phát hiện thêm lỗi mới nữa. Tôi nghỉ ngơi một thời gian và chuyển sang những chương trình khác.
Thời gian thấm thoắt thoi đưa, đến ngày đẹp trời nọ X bỗng comment trong một report cũ của tôi, bảo là họ vừa thay đổi toàn bộ cơ chế hoạt động của thành phần bị lỗi, chuyển sang sử dụng giải pháp Y. Họ bảo rất mong tôi có thể dành thời gian xem có tìm thấy lỗ hổng nào không, nếu thấy, họ sẽ trao thưởng xứng đáng.
Tôi vừa vui vừa buồn. Vui vì cảm thấy họ đánh giá cao mình, nhưng buồn vì tôi biết khá rõ về Y. Đó là một giải pháp gần như hoàn hảo, được sử dụng bởi rất nhiều công ty lớn, mà tôi thừa hiểu là nó chẳng có lỗ hổng nào cả. Tôi đã từng xem qua rồi. Tuy thế, tôi vẫn vâng dạ như tuồng chèo, cảm ơn họ đã thông báo và hứa nếu thấy gì hay ho thì sẽ báo cho họ biết.
Lời nói là thứ dễ làm mà cũng dễ quên. Chúng ta thản nhiên nói ra những lời lả lơi ong bướm, gieo rắc hy vọng cho người khác, rồi để nó bay đi mất. Từ sau khi hứa, tôi gần như chẳng bận tâm gì về X với Y. Xác suất thành công quá thấp và thật lòng thì tôi nghĩ nên dành thời gian để làm việc khác sẽ tốt hơn.
Nhưng tôi là một người có tự trọng rất cao. Hơn nữa, tôi đã nhận từ X gần 6000 USD, nên có là gì nếu tôi lãng phí thêm vài tiếng cuộc đời mình cho họ đâu? Tôi nghĩ thế và mở Burp Suite lên, bắt đầu xem xét.
Y vẫn hoàn hảo như thế, không hề có một tia sáng nào. Tôi không thể đi sâu vào mặt kỹ thuật, nhưng tôi sẽ cho bạn biết rằng Y này nó như một phép toán hai cộng hai bằng bốn, rất rõ ràng, rất hiển nhiên, đến độ mà bạn chẳng thấy có gì đáng để nghi ngờ hết. Không ai có thể tính sai phép toán ấy, và Y thì đủ nổi tiếng để không đến lượt tôi dạy họ phải làm thế nào.
Bạn biết không. Điều tệ nhất và mất thời gian nhất của con người là chúng ta cứ mãi làm một việc mà trong đầu thì nghĩ rằng bản thân không thể làm được việc đó. Chúng ta chỉ làm lấy lệ mà không có niềm tin. Chúng ta yêu nhau khi còn quá trẻ và cho rằng làm sao một mối tình như thế có thể đi đến hôn nhân? Chúng ta hời hợt, click chuột chỗ này chỗ kia, điền vài payload XSS, nhìn bâng quơ qua những menu, rồi buồn bã vì chẳng tìm thấy gì cả. Chúng ta vừa tiếc nuối công sức bỏ ra, lại vừa tiếc nuối tuổi trẻ của mình…
Bằng một cách không dễ giải thích, tôi phát hiện thêm một lỗi nữa (gọi là D), nguy hiểm tương tự A, B, và C. Nếu chỉ đọc bài viết này, bạn sẽ thấy mọi chuyện thật hư cấu. Nó giống một kịch bản mà bạn thường chỉ thấy trên phim, trong đó tôi là nhân vật chính, mà dù kẻ địch có mạnh lên thế nào đi nữa, tôi vẫn sống sót và tiêu diệt hết bọn chúng. Khi mà giấc mơ đã đẹp như thế, ai lại muốn thức dậy?
Lần này, tôi report với tâm trạng hân hoan. Tôi hoàn toàn hạnh phúc vì nghĩ rằng mình đã thể hiện được điều gì đó. Họ kỳ vọng vào tôi và rồi tôi không làm họ thất vọng. 1000 USD lần này sẽ khiến tôi vui không kém gì 3500 USD đầu tiên. Đây là một kỷ niệm đẹp. Ở tuổi của tôi, liệu còn có được bao nhiêu những kỷ niệm đẹp nữa?
Không. Không phải 1000 USD.
Phần thưởng xứng đáng mà họ nói là nhiều hơn thế.
…
Cho đến hôm nay, mặc dù 3500 USD không còn là phần thưởng lớn nhất mà tôi nhận được, thì tình cảm tôi dành cho X vẫn không thay đổi. Tôi yêu họ không chỉ vì tiền. Giờ đây, tôi mệt mỏi tắt chuông báo thức mỗi sáng, lặng lẽ check mail, nếu có lỗi nào vừa được reward thì kể với vợ, chất giọng tường thuật:
- Anh vừa được … đô em ạ.
- Lỗi gì hả anh?
- RCE.
- Unauthenticated ạ?
- Ừ.
Rồi chúng tôi đi đánh răng rửa mặt, sau đó tôi đăng nhập vào Bugcrowd, viết vài lời cảm ơn sáo rỗng (Thank you for the bounty chẳng hạn). Xong xuôi thì chúng tôi ăn sáng, rồi đi làm. Tim tôi không đập nhanh hơn mà cũng không đập chậm đi. Mọi thứ trôi qua như vậy.
Tại sao?
Tại sao tôi lại diễn xuất đáng ghét đến thế?
Tại sao chúng ta vẫn biết tình cảm thời còn đi học mới là đẹp nhất, nhưng mối tình đầu mà chúng ta có lại là khi cả hai đứa đều đã đi làm?
Bạn có hiểu điều đó không?
Có hay không?
Đúng. Làm sao bạn hiểu được.
Đặt danh lợi ở trên ái tình, làm sao bạn hiểu được?
Đúng, một phần trong đoạn hội thoại giữa tôi với vợ là do tôi tự tưởng tượng ra, nhưng làm sao bạn hiểu được?
Chính tôi, cũng còn chẳng hiểu.
Đọc đến cuối mà em lăn ra cười với anh luôn đấy. Chúc anh cái tết ấm nhé ♥
Yêu em ♥ Anh cũng chúc em năm mới ấm áp và nhiều yêu thương :*
Lần đầu tiên đọc blog của anh, do anh Mạnh Tuấn bên J2Team giới thiệu. Mà chả hiểu sao đọc xong có cảm giác phải để lại 1 cái bình luận. 😀
Cảm ơn em, anh cũng cảm thấy phải để lại một câu trả lời >:(
chào anh. em cũng biết anh từ j2tem. anh viết blog hay quá
những câu hỏi cuối dồn dập quá 😀 😀
Bài này anh viết hay quá
Anh coá một việc làm rất là dữ dội xD. Chúc anh tết vui vẻ <3
Chúc em Tết vui vẻ, too ^^
đọc chuyện của anh mà ngưỡng mộ, biết phấn đấu chứ sao giờ@@
Há há đọc tới đoạn cô vợ em lại tưởng thật, tới đoạn “Unauthenticated ạ?” bắt đầu em nghi ngờ và cuối cùng đúng như em nghĩ :v Anyway, bài anh rất hay ! Cám ơn anh vì bài viết hay thế này, mong anh thành công và kiếm được cô vợ trong mơ :3
Anh có vợ rồi và đúng như anh mơ nhé (inlove)
(Vợ anh cũng hay vào đây nên không thể trả lời khác được -_-)
Cái đoạn kể với vợ nghe như ngôn tình mà đọc đến cuối vừa tụt mood vừa buồn cười anh ạ =))
Anh ơi a viết rất hay. Cho e hỏi là khi viết bài này anh bao nhiêu tuổi và cần những kiến thức gì để phát hiện ra bug ạ?
Anh nghĩ chủ yếu là kiến thức về Web Security, còn nói cụ thể ra thì một hai comment không thể giải thích hết được.
Tuổi thì thôi nhé :shame:
cái icon mẹc cười ở cuối page để làm gì vậy a :))))
Thực sự là đọc đoạn cuối em cũng chẳng hiểu gì anh ạ 🙂
Hay quá.
Cô vợ cùng ngành.
=)))) vãi cả đoạn cuối. Chúc anh năm mới vui vẻ.
Fan của cu Bình =)))))
Hài quá anh ạ!
haha, đoạn cuối a viết hay quá. Chính mình cũng k hiểu nữa :))
anh ơi, a có profile facebook ko a? em có việc muốn được hỏi a để được học hỏi ạ
Facebook là chốn giải trí thôi em ơi, đừng biến tướng nó thành chỗ học hành -_-
Lần nào tâm trạng là lại mò vào blog của anh đọc, bẵng cái cũng 3 năm tròn @@
Yêu em nhiều. Anh đang ngủ cũng phải bật dậy vào thả tim cho em :*
Vừa xem xong clip lễ ăn hỏi của Sẻ lại nhớ tới blog của anh. Đọc lần thứ N vẫn cứ cuốn hút như lần đầu =))
Yêu em 🥰
Thế mà cũng đã 3 năm 😳😳😳