许多Web应用程序提供的功能将数据从其他Web服务器,由于种种原因。下载XML提要,从远程服务器,Web应用程序可以使用用户指定的URL,获取图像,此功能可能会被滥用,使制作的查询使用易受攻击的Web应用程序作为代理运行在远程攻击其他服务的基于文本的文件等。 /本地服务器。通过这种滥用而产生的功能被命名为攻击,跨站点端口的攻击(XSPA)。
0 t! W' |6 x& |$ O, h! {XSPA(SSPA)是什么?
9 p0 E+ Z8 R) e6 L如果应用程序处理用户提供的URL和不验证/消毒后端从远程服务器接收到响应,然后将其发送回客户端应用程序是容易受到跨站点端口的攻击。攻击者可以通过发送特制的查询到一个易受攻击的Web应用程序代理攻击,面临的外部Internet服务器,内网设备和Web服务器本身易受攻击的Web应用程序使用的广告功能。的反应,在某些情况下,可以进行研究,以确定服务的可用性(端口状态,横幅等),甚至在非传统的方式获取数据的远程服务。
! _1 `' V/ X( U5 I3 x3 t8 ZPHP fsockopen() function:
, `. y) K) i1 ^<?php$ b! D# S/ g- o( H' V/ D
function GetFile($host,$port,$link)
! {: g @! k; d4 d. m* _" b{
! S8 Z0 S7 J8 Z$ x" I$fp = fsockopen($host, intval($port), $errno, $errstr, 30);7 i* ~5 x. g/ }, N G- z! i
if (!$fp) { 4 [9 h ^+ Q9 ]& a% d3 P: j' r
echo “$errstr (error number $errno) \n”;
" q: X& r1 P2 Y; j4 n} else {# e* J; ]1 q( M8 |( s1 r
$out = “GET $link HTTP/1.1\r\n”;$ X1 j: y% w1 q V, O; v
$out .= “Host: $host\r\n”;
6 y, K' L/ N1 J3 l. ~% m$out .= “Connection: Close\r\n\r\n”;* t: b# x! F* }2 W
$out .= “\r\n”;" S, b m: P' ~. T1 B8 w0 ^
fwrite($fp, $out);- N6 }+ k4 e1 W& ^9 ~
$contents=”;
4 }% S9 p, _2 Y6 Z" fwhile (!feof($fp)) {1 E) J7 h/ K, S, F8 Y$ R/ Q
$contents.= fgets($fp, 1024);
& @( ]4 c* W7 U' w4 b}
1 a; w) A9 `) ~$ ]; }) Wfclose($fp);* Y" q- W# p) F! n* k o" B
return $contents;% b, e/ `% Z4 ?* q0 A& h3 |! O
}& b# H; d* i7 E( c0 v$ \& d
}$ P1 t) U( g6 m8 \3 {
?>
" v% ^5 G& O9 J5 `复制代码
+ P% b# p6 U( ~此实现获取数据,如由一个用户使用的fsockopen PHP函数(任何文件或HTML)请求。此功能建立一个TCP连接的套接字的服务器上,并进行原始数据传输。" i8 L8 b" }3 R( l! Z: Z1 {" S
PHP curl_exec() function:3 F9 r: c4 g+ ?
<?php
: P; E' j& ^* ]% m* _if (isset($_POST['url']))
. K4 a# B z# H- \, s( X4 k. [{
+ h0 T F; U; u t" ~9 |! Q$link = $_POST['url'];
; U G% b) ^$ g8 D5 Y _$curlobj = curl_init();
/ d F v& \# D- Z0 J! f9 Kcurl_setopt($curlobj, CURLOPT_POST, 0);2 s A( |$ I% o) H3 Y
curl_setopt($curlobj,CURLOPT_URL,$link);
6 t" S% P. j( P6 ~ ]curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);" b3 [: e: T" J% J
$result=curl_exec($curlobj);# b, @& u' x. A- u
curl_close($curlobj);
' C1 E# D2 ]. n+ V; W. q8 P
- v, [) Q9 }9 [! C2 r$filename = ‘./curled/’.rand().’.txt’;
$ \& R6 i q7 x/ z. |' Mfile_put_contents($filename, $result);
, a% o6 {; G" A" x4 `% Gecho $result;. `8 v& B$ t# `+ K
}, v, ~- \* n! U; e4 c
?>6 y5 ]# I% {1 T/ f
复制代码& x2 J$ L8 X# U
这是另一种非常常见的实现,通过PHP使用curl获取数据。“卷曲”文件夹下的文件/数据下载并存储到磁盘,并附加一个随机数“。txt’结尾的文件扩展名。
+ D: M' p4 c/ t% O4 t7 h3 E& C- {* i在本系列的下一部分,我们将看到一些可以启动的攻击使用此vulnerbility。XSPA允许攻击者在目标服务器基础设施,主要是内网的Web服务器,Web服务器本身,以及面向互联网的服务器以及。目前,我已经遇到以下五种不同的攻击方式,可以启动使用XSPA:; y1 i1 i1 }( o$ ?7 }( A" ~
1。端口扫描远程互联网服务器,内网设备和本地Web服务器本身。横幅敛也有可能在某些情况下,
5 f- {8 B1 M4 q( D2。开发弱势运行的程序在Intranet或本地Web服务器; r) l$ Z! c% h$ x: [; F
3。攻击内部/外部Web应用程序很容易通过URL来获取参数的漏洞(SQLI,参数操作等)
$ |0 H: @; N; J0 a, c4。指纹图谱的Intranet Web应用程序使用标准的应用程序的默认文件及行为# F5 ~6 {+ r: @6 p4 h
5。阅读使用file :/ / /协议处理程序的本地Web服务器上的文件。 |