许多Web应用程序提供的功能将数据从其他Web服务器,由于种种原因。下载XML提要,从远程服务器,Web应用程序可以使用用户指定的URL,获取图像,此功能可能会被滥用,使制作的查询使用易受攻击的Web应用程序作为代理运行在远程攻击其他服务的基于文本的文件等。 /本地服务器。通过这种滥用而产生的功能被命名为攻击,跨站点端口的攻击(XSPA)。% N) e; |9 I; U; O) R- u: Q+ P
XSPA(SSPA)是什么?
: t! _: E. T( ?+ \, V; } \如果应用程序处理用户提供的URL和不验证/消毒后端从远程服务器接收到响应,然后将其发送回客户端应用程序是容易受到跨站点端口的攻击。攻击者可以通过发送特制的查询到一个易受攻击的Web应用程序代理攻击,面临的外部Internet服务器,内网设备和Web服务器本身易受攻击的Web应用程序使用的广告功能。的反应,在某些情况下,可以进行研究,以确定服务的可用性(端口状态,横幅等),甚至在非传统的方式获取数据的远程服务。( _1 m* t8 A' V# q2 x8 u
PHP fsockopen() function:' v! d, z% w X5 z
<?php* w. D9 A! q0 D4 t: t$ i0 |8 H
function GetFile($host,$port,$link)
4 ?% D1 h+ |9 C; c$ R& z{
- u% E: z [* y& K1 d$fp = fsockopen($host, intval($port), $errno, $errstr, 30);, p y+ X- S- x1 g
if (!$fp) {
0 p; k0 B5 L" q2 M+ Becho “$errstr (error number $errno) \n”;
9 l) {7 Y, _5 ~ ?0 a2 k} else {7 S. Y e2 `$ v4 ^/ ?
$out = “GET $link HTTP/1.1\r\n”;9 \; k9 r7 [, }8 d7 E
$out .= “Host: $host\r\n”;
2 h1 h9 [9 L1 E9 @$out .= “Connection: Close\r\n\r\n”;
& ~$ v. z6 K7 w e$out .= “\r\n”;5 ^9 u5 ]& G- ~
fwrite($fp, $out);* b5 T3 m! K0 g2 R
$contents=”;2 S0 k# h% n% F$ ^7 D- S
while (!feof($fp)) {
8 I9 d' }$ _' h( _+ G0 ?7 b9 W$contents.= fgets($fp, 1024);
y. J6 a, @: ]# j9 q}1 V4 d( w( Y5 h9 _, j
fclose($fp);7 j( q! \, i( [, ?" q8 w; m+ G- q3 y" N% L
return $contents;, f3 _5 H3 C& }3 p
}0 u1 _( a- W# {! E; g8 ~0 l, o
}& A: V. r9 ~; b: {1 t) B& Y
?>8 l: r! m- o0 r+ ~0 q: K
复制代码
' a/ P. ?+ ~# z( V7 P- o2 ~/ |& t此实现获取数据,如由一个用户使用的fsockopen PHP函数(任何文件或HTML)请求。此功能建立一个TCP连接的套接字的服务器上,并进行原始数据传输。1 E# ?% c7 {+ B" [0 J( `2 |
PHP curl_exec() function:& m$ S' b$ K9 _- S. c# Q
<?php4 u( O6 m$ u" O* f6 j$ F
if (isset($_POST['url']))4 E( M4 g& _! `3 y s2 g
{
r4 V( R% r" a/ ?6 g' I$link = $_POST['url'];/ X& }( T, e0 t9 h' r
$curlobj = curl_init();" Q1 L3 [' P& c, P- O: Z+ H
curl_setopt($curlobj, CURLOPT_POST, 0); ~" _& u: P( e6 j+ O
curl_setopt($curlobj,CURLOPT_URL,$link);
5 h/ E2 p7 s2 Z9 x3 t$ acurl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);* ^6 X4 f7 r7 C. `# W) f' {' Z
$result=curl_exec($curlobj);
1 |0 S$ u3 M. E ?" `8 C8 ] U. Hcurl_close($curlobj);
* [; L: i! w" _9 u" T$ y
0 o, `# |4 \% k/ p$filename = ‘./curled/’.rand().’.txt’;
) r1 l. e( w1 J; mfile_put_contents($filename, $result);9 B; a% p' n- k4 M6 k7 _5 e9 p ]
echo $result;$ o5 v) u7 r0 s
}
& ~9 R+ o8 x( I2 ` T* m% s?>
6 X, O/ E: U3 `4 u. L4 K% Q: }: A复制代码
6 r" t# w' _+ \( p9 C这是另一种非常常见的实现,通过PHP使用curl获取数据。“卷曲”文件夹下的文件/数据下载并存储到磁盘,并附加一个随机数“。txt’结尾的文件扩展名。1 g, x1 z( p, q$ r/ Z* w. B
在本系列的下一部分,我们将看到一些可以启动的攻击使用此vulnerbility。XSPA允许攻击者在目标服务器基础设施,主要是内网的Web服务器,Web服务器本身,以及面向互联网的服务器以及。目前,我已经遇到以下五种不同的攻击方式,可以启动使用XSPA:8 ]* T; O& @% f; I5 J( r7 ~
1。端口扫描远程互联网服务器,内网设备和本地Web服务器本身。横幅敛也有可能在某些情况下,( d7 F% m) D# p# k& {" c
2。开发弱势运行的程序在Intranet或本地Web服务器
: F [7 v! [6 N- I4 A* F( Y% z3。攻击内部/外部Web应用程序很容易通过URL来获取参数的漏洞(SQLI,参数操作等)5 E# D. D. n: j6 x
4。指纹图谱的Intranet Web应用程序使用标准的应用程序的默认文件及行为9 @! _& |& V8 A7 L. m9 ?* i o
5。阅读使用file :/ / /协议处理程序的本地Web服务器上的文件。 |