许多Web应用程序提供的功能将数据从其他Web服务器,由于种种原因。下载XML提要,从远程服务器,Web应用程序可以使用用户指定的URL,获取图像,此功能可能会被滥用,使制作的查询使用易受攻击的Web应用程序作为代理运行在远程攻击其他服务的基于文本的文件等。 /本地服务器。通过这种滥用而产生的功能被命名为攻击,跨站点端口的攻击(XSPA)。
6 j' a1 }/ ~, B, KXSPA(SSPA)是什么?" h, F! g9 _5 m6 E7 [. B
如果应用程序处理用户提供的URL和不验证/消毒后端从远程服务器接收到响应,然后将其发送回客户端应用程序是容易受到跨站点端口的攻击。攻击者可以通过发送特制的查询到一个易受攻击的Web应用程序代理攻击,面临的外部Internet服务器,内网设备和Web服务器本身易受攻击的Web应用程序使用的广告功能。的反应,在某些情况下,可以进行研究,以确定服务的可用性(端口状态,横幅等),甚至在非传统的方式获取数据的远程服务。. E4 J3 g! g% s3 j2 T9 S
PHP fsockopen() function:; {6 @3 ^9 k7 _3 A; N! M
<?php
& g x& d. l8 T2 Z7 u! k9 pfunction GetFile($host,$port,$link)
# ^' P( s4 U+ n, D0 J5 b9 K3 ?, A* j{/ j. w: A" |* h* \/ k! a, o8 g7 J
$fp = fsockopen($host, intval($port), $errno, $errstr, 30);( I/ P( s' G9 v& ^4 C- W
if (!$fp) { 5 W- e& e B1 O4 n6 ]
echo “$errstr (error number $errno) \n”;$ G T( d* t; P! k- l
} else {
6 ^( K0 P, V: ~) F- v, k; K$out = “GET $link HTTP/1.1\r\n”;& v+ v5 |; k* c2 D; p0 b
$out .= “Host: $host\r\n”;
6 R' }% f% ]' t" L$out .= “Connection: Close\r\n\r\n”;/ z% e3 @) ]; L, O9 N, y
$out .= “\r\n”;, Q' s9 W: x3 L& D2 g3 o9 R7 C; ?1 X
fwrite($fp, $out);
7 @% i& B8 U1 x8 R J$contents=”;
3 {7 h6 s5 l, X1 }! cwhile (!feof($fp)) {
4 m/ F) M9 _: [1 q5 Y$contents.= fgets($fp, 1024);
+ Q( j2 l: E- p: J) M- k3 ^}5 w3 C% Y' [8 N, a" O5 x
fclose($fp);
7 ^9 j( B$ Q: E6 f8 Nreturn $contents;# |2 T# C% A1 `' c! f0 G
}9 S4 N2 {+ k' ^5 _
}1 E, n; J1 S; w
?>! m% u2 ?% k/ |$ [: V+ B
复制代码
& F, ` w9 \, J _' ?' ]& C0 W; {此实现获取数据,如由一个用户使用的fsockopen PHP函数(任何文件或HTML)请求。此功能建立一个TCP连接的套接字的服务器上,并进行原始数据传输。, `$ h* l4 `- }( V& P H; ?
PHP curl_exec() function:
2 E6 Q. d: k) q. h<?php
! {7 ?2 c7 }7 [6 Xif (isset($_POST['url']))
/ p/ z% y# x; I4 j4 C# J, l{0 _! K. [0 e, Y# p: C
$link = $_POST['url'];$ e/ R! C3 S: L" A
$curlobj = curl_init();# k: R/ n2 l* Z- J$ y1 O+ s( \' r
curl_setopt($curlobj, CURLOPT_POST, 0);* m, q4 Y/ ?/ x9 t
curl_setopt($curlobj,CURLOPT_URL,$link);
( E( j0 y) \6 L: Lcurl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);
* R/ n4 d6 X$ b5 }$result=curl_exec($curlobj);
$ `6 y; W: v. w( d$ u; Ecurl_close($curlobj);
. c9 ~9 L! W% H ' m7 {; G& ~" H6 g2 `
$filename = ‘./curled/’.rand().’.txt’;
7 u$ L! v. f3 J8 Q( yfile_put_contents($filename, $result);5 e9 T) C" V( |, ]5 M
echo $result;
+ Q$ P R+ C( T: Z! B `}
; Q5 k5 G( S6 j2 [?>) P3 a8 Y5 T# D3 A* f
复制代码
( w0 e x( C- ^这是另一种非常常见的实现,通过PHP使用curl获取数据。“卷曲”文件夹下的文件/数据下载并存储到磁盘,并附加一个随机数“。txt’结尾的文件扩展名。; Y/ u( y. e2 d; W0 r, t9 K$ z
在本系列的下一部分,我们将看到一些可以启动的攻击使用此vulnerbility。XSPA允许攻击者在目标服务器基础设施,主要是内网的Web服务器,Web服务器本身,以及面向互联网的服务器以及。目前,我已经遇到以下五种不同的攻击方式,可以启动使用XSPA:0 I1 l$ |) H4 A3 {7 V
1。端口扫描远程互联网服务器,内网设备和本地Web服务器本身。横幅敛也有可能在某些情况下,
! V6 b4 N# V, K- J4 c7 V2。开发弱势运行的程序在Intranet或本地Web服务器. a- o* g8 d7 ]1 X/ Z7 K% g
3。攻击内部/外部Web应用程序很容易通过URL来获取参数的漏洞(SQLI,参数操作等)/ y0 i% b7 _6 o \% u% J
4。指纹图谱的Intranet Web应用程序使用标准的应用程序的默认文件及行为7 O. s+ o- Z+ ?' p# N6 h [5 H
5。阅读使用file :/ / /协议处理程序的本地Web服务器上的文件。 |