Skip to content

[Part 2] Tản mạn về 1 chiếc IP Camera nào đó …

Xin chào, đây là phần tiếp theo của bài phân tích về 1 con camera nào đó …

Tiện đây mình cũng xin lỗi vì part 1 với cái title khá là cú lừa của mình =)), do mình phải về điểm danh để ra trường sớm nên ko thể hoàn thành bài sớm hơn!

.

.

Bài viết trước mới nói qua các bước lang thang và kiếm được firmware, extract firmware này nọ, nếu ai chưa đọc thì có thể xem qua tại đây (https://sec.vnpt.vn/2018/12/tan-man-ve-1-chiec-ip-camera-nao-do/ ).

Như đã đề cập trong bài trước, thiết bị này mở khá nhiều port service, ngoài service telnet và http thì toàn những service lạ, chưa rõ để làm gì.

Thử telnet đến thiết bị:

Hơi buồn là mình ko có pass để login 🙁

Sau đó mình thử connect vào http service của thiết bị thì được 1 web page có giao diện như sau:

Bằng các biện pháp kiểm thử “tâm linh” thì 1 trong những đồng nghiệp của mình pass được form login này với user/pass: admin/123456 =))

Đảo lòng vòng 1 lúc xem có gì đặc biệt ko, tìm các lỗi để có thể Code Execution được.

Nhưng kết quả thì không có gì khả quan lắm, ko tìm được 1 entry nào cho phép Code Injection ~~.

Check lại log của Burpsuite thì có 1 số request gì đó, đến path lạ của http service :vv.

Thử 1 số case của các dịch vụ web thông thường thì mình phát hiện ra cái authentication ở đoạn đầu chỉ để dọa ma =)).

Các request không cần confirm cookie gì hết.

Kể cả đối với request modify setting của thiết bị:

Cũng hay đấy, nhưng đối với thiết bị như này là chưa đủ.

Chả ai đem XSS hay gì gì đó vào exploit mấy thứ này bao giờ :v.

Mình cần 1 thứ gì đó mạnh hơn, có thể code execute được trên thiết bị là tốt nhất :(.

Tiếp tục sờ mó tới chức năng upgrade firmware của thiết bị,

Chức năng này sử dụng embed flash để upload lên server, vì 1 lý do nào đó mà burpsuite ko có bắt được request.

Đành phải capture bằng wireshark:

Đây là request upgrade.

File được upload từ phía client thông qua port 1300.

Vậy ra port 1300 dành cho chức năng upgrade device!

Format của request thì cũng khá đơn giản theo dạng XML.

Đến đây thì mình dừng việc lang thang lòng vòng blackbox, và đâm đầu vào đống firmware đã down được kia!

Theo như pic cuối cùng trong bài trước thì mình đã có rootfs của thiết bị, bao gồm như sau:

Để thỏa mãn trí tò mò ở đầu bài, mình tìm đến file “/etc/shadow” nhằm lấy thông tin để login vào telnet của thiết bị:

Đem hash kia ném vào hash cat cùng với bộ wordlist thần thánh lượm nhặt trên mạng, và …

Chuyện gì đến cũng đến, password của user root là “123” =))),

Lúc này đã có thể telnet vào bên trong thiết bị:

Tạm thời thế đã, đã có cửa sau ở trong thiết bị thì mọi chuyện dễ dàng hơn nhiều rồi.

Thử netstat để xem các port, service của thiết bị.

Biết được điều này sẽ dễ dàng hơn trong việc định hướng tìm lỗi của các binary:

Theo như những gì đã tìm được và thông tin từ netstat vừa tìm về thì mình quyết định focus vào file noodles kia vì những file khác chạy khá nhiều dịch vụ khác nhau, phân tích mất time quá =))).

.

.

Ném vào IDA thì mình có thấy file này đã bị pack lại, hơi nản chút.

Tiếp tục dùng exeinfo gì gì đó thì mình biết là nó bị pack bằng upx.

 

Cũng khá may, chạy upx để decompress thì 1 phát ăn liền =))

Chứ nó mà obfus thêm các thứ thì mình dừng cuộc chơi ở đây r :v, mình k phải dân chuyên mấy thứ này lắm.

Ném lại noodles vào IDA và bắt đầu đọc hiểu code.

Chức năng của service noodles này chủ yếu là nhận request của client lên (non-authenticated) dưới dạng xml và process với các tác vụ:

  • UPGRADE => tên thôi cũng rõ ròi, nhận file và upgrade firmware
  • BURNMAC => ??
  • ELFEXEC => cái này hay à nha, service nhận file binary truyền vào từ phía client rồi chmod +x và execute luôn =))
  • SYSTEM => cái này cũng hay luôn =)), nhận command từ phía client và execute trên server
  • SYSTEMEX => ??
  • DOWNLOAD => upload file từ client lên server
  • UPLOAD => download file từ server về client
  • METHOD => ??
  • BURNSN => ??

Như vậy thì cũng coi như là xong rồi =)).

Tất cả các chức năng này hoàn toàn không đòi hỏi authenticated gì hết.

Ex: thử wget đến máy mình để confirm code execution

.

.

Tìm ra bug unauthenticated RCE này thì cũng đủ cho 10 cốc chè rồi =))).

Mình có tìm hiểu thêm 1 chút thì thiết bị này có khá nhiều bug khác, toàn là RCE hết.

Nhưng do đã được no nê 10 cốc chè nên mình không tiếp tục nghiên cứu nữa :v.

Nhiệm vụ của mình đến đây đã hết ròi, cảm ơn các bạn đã theo dõi!

__Jang__

From VNPT ISC

P/S: Có thêm vài bug nữa theo hướng của pwner chân chính do 1 bạn thực tập tại trung tâm mình đã tìm ra, và sẽ tiếp tục tại part 3 của bài này.

Nếu bạn nào có hứng thú theo dõi thì hãy … tiếp tục theo dõi =)).

Xin cảm ơn bạn đọc 1 lần nữa!

Trung tâm An toàn thông tin

 

1,167 lượt xem