许多Web应用程序提供的功能将数据从其他Web服务器,由于种种原因。下载XML提要,从远程服务器,Web应用程序可以使用用户指定的URL,获取图像,此功能可能会被滥用,使制作的查询使用易受攻击的Web应用程序作为代理运行在远程攻击其他服务的基于文本的文件等。 /本地服务器。通过这种滥用而产生的功能被命名为攻击,跨站点端口的攻击(XSPA)。
: `9 f1 _# m1 W Y3 z p% IXSPA(SSPA)是什么?3 |2 q: ]8 ^+ _0 J: v$ c/ l- U/ {* s
如果应用程序处理用户提供的URL和不验证/消毒后端从远程服务器接收到响应,然后将其发送回客户端应用程序是容易受到跨站点端口的攻击。攻击者可以通过发送特制的查询到一个易受攻击的Web应用程序代理攻击,面临的外部Internet服务器,内网设备和Web服务器本身易受攻击的Web应用程序使用的广告功能。的反应,在某些情况下,可以进行研究,以确定服务的可用性(端口状态,横幅等),甚至在非传统的方式获取数据的远程服务。. N9 s& I+ z: V* [7 I! h6 q B
PHP fsockopen() function:8 m; U& x5 y$ O* T) Z
<?php
2 G7 H0 q w: r3 v( }/ u Nfunction GetFile($host,$port,$link)" G3 [8 L5 v' G& c4 V6 S
{
5 b- C! p& }1 F$fp = fsockopen($host, intval($port), $errno, $errstr, 30);8 t: n/ _( F3 A o5 O/ T& z3 y1 z" X
if (!$fp) {
2 T1 s2 D& ]& U# [echo “$errstr (error number $errno) \n”;; J; ~# o* b5 [3 j6 c7 [- s1 L' J
} else {5 w. c, a9 s/ n" |/ Q3 y: \
$out = “GET $link HTTP/1.1\r\n”;
' F3 q8 j+ Z- L9 q5 f. C1 k, _4 j$out .= “Host: $host\r\n”;; x2 i" ^9 l1 ?% Q2 u v6 T% e
$out .= “Connection: Close\r\n\r\n”;9 Y' P4 y2 i7 y5 [5 Q: u
$out .= “\r\n”;
+ K) M/ \- i! m, ?+ J# Z/ Kfwrite($fp, $out);
% b; j/ T" W4 a' ]3 ^$contents=”;& Z+ H3 v! X! @& k4 o t; ?9 q
while (!feof($fp)) {3 Q! T# q0 L/ t# G% c0 v* f; j
$contents.= fgets($fp, 1024);7 A% t7 z* H: }" u
}! Q1 q+ i1 y1 ~& e7 Z9 p* C6 ^
fclose($fp);
- J+ x' w$ A( g! H* F& C, areturn $contents;
1 j3 c# R% v, r}. x2 M( X) `9 C! @6 O& ?: A
}. E3 |) A }3 `& {% k" J& }
?>& w( ^$ u8 P- [- E0 ~; f# c) P' [
复制代码& k1 w/ @$ s$ x' j5 N& u
此实现获取数据,如由一个用户使用的fsockopen PHP函数(任何文件或HTML)请求。此功能建立一个TCP连接的套接字的服务器上,并进行原始数据传输。+ @& Q# p, u7 ]; U% s
PHP curl_exec() function:
0 g* R% j2 H4 s! H3 n<?php# F1 [1 K" }9 t- ~
if (isset($_POST['url']))& Q9 S) G0 s. f8 w9 Z! N
{# a8 i j% W4 h! v! z! A$ \, g( j1 X
$link = $_POST['url'];
, l: G( ^/ q: }* O- q- \$curlobj = curl_init();' N* |" t. h2 w# A
curl_setopt($curlobj, CURLOPT_POST, 0);
: a, @' O3 B# A7 u' r; N, `curl_setopt($curlobj,CURLOPT_URL,$link);: V. i ` Q1 ?0 P3 ~
curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);# M* U* Q; c) X
$result=curl_exec($curlobj);
7 J3 s8 v/ t. `curl_close($curlobj);
* A) b- f% ]. {! N/ w* |. S ; a8 ^$ P/ G) h4 G
$filename = ‘./curled/’.rand().’.txt’;
8 Q8 ^. H# G' o, U6 }3 c' afile_put_contents($filename, $result);
6 I) {6 _. K {) n, ?+ I g: Oecho $result;
+ l/ N/ ] ^2 T! _8 \; @! z}5 y- O/ H- X: J: V9 h( l
?>8 S3 V7 R4 }3 K( @3 S+ S- x9 Z
复制代码* ^& l; C! F7 p7 p
这是另一种非常常见的实现,通过PHP使用curl获取数据。“卷曲”文件夹下的文件/数据下载并存储到磁盘,并附加一个随机数“。txt’结尾的文件扩展名。9 h* U) j& Z L
在本系列的下一部分,我们将看到一些可以启动的攻击使用此vulnerbility。XSPA允许攻击者在目标服务器基础设施,主要是内网的Web服务器,Web服务器本身,以及面向互联网的服务器以及。目前,我已经遇到以下五种不同的攻击方式,可以启动使用XSPA:
& J v: b' U j1 y: R2 }1。端口扫描远程互联网服务器,内网设备和本地Web服务器本身。横幅敛也有可能在某些情况下,
! O3 [1 }9 p) K3 o/ u* D8 f+ ^2。开发弱势运行的程序在Intranet或本地Web服务器
) u* s) I8 |( O) r3。攻击内部/外部Web应用程序很容易通过URL来获取参数的漏洞(SQLI,参数操作等)
! Z, k! L/ x$ h0 q n4。指纹图谱的Intranet Web应用程序使用标准的应用程序的默认文件及行为4 p, M( V0 @* j" Y
5。阅读使用file :/ / /协议处理程序的本地Web服务器上的文件。 |