许多Web应用程序提供的功能将数据从其他Web服务器,由于种种原因。下载XML提要,从远程服务器,Web应用程序可以使用用户指定的URL,获取图像,此功能可能会被滥用,使制作的查询使用易受攻击的Web应用程序作为代理运行在远程攻击其他服务的基于文本的文件等。 /本地服务器。通过这种滥用而产生的功能被命名为攻击,跨站点端口的攻击(XSPA)。- ` B( O% m2 v$ }) a7 {
XSPA(SSPA)是什么?7 i4 }9 T1 w8 K. M
如果应用程序处理用户提供的URL和不验证/消毒后端从远程服务器接收到响应,然后将其发送回客户端应用程序是容易受到跨站点端口的攻击。攻击者可以通过发送特制的查询到一个易受攻击的Web应用程序代理攻击,面临的外部Internet服务器,内网设备和Web服务器本身易受攻击的Web应用程序使用的广告功能。的反应,在某些情况下,可以进行研究,以确定服务的可用性(端口状态,横幅等),甚至在非传统的方式获取数据的远程服务。
: y; E( r, E% d. hPHP fsockopen() function:
' y" I, o7 A7 V# G: n5 p<?php6 n, K6 l' j! x7 N! _- A
function GetFile($host,$port,$link)8 A1 a8 E- u0 N. L. p& Z5 M
{3 r' Z; D* P2 }% i! \ J
$fp = fsockopen($host, intval($port), $errno, $errstr, 30);( e1 S0 ~' O' V5 Z7 i
if (!$fp) { 5 m! S7 H+ A. ^( ?) _9 r7 Q7 R
echo “$errstr (error number $errno) \n”;
: O0 `8 v( O+ L0 D; b$ k+ B, U} else {
# E# z. @' |% s8 j7 [- i4 Q$out = “GET $link HTTP/1.1\r\n”;
4 n+ R9 L! d! N, d3 Z8 p$out .= “Host: $host\r\n”;- L. a" q7 N5 _9 N2 g! N
$out .= “Connection: Close\r\n\r\n”;) L7 A. H8 p- t% s
$out .= “\r\n”;4 J- ?' D7 T0 @+ u
fwrite($fp, $out); H1 A) K J" u) i
$contents=”;
1 L+ B0 h0 Y `while (!feof($fp)) {* j9 S* j: E. T+ L+ L. N
$contents.= fgets($fp, 1024);- [6 I( V6 j. ~: ~# S! L. \
} T# |; n7 F, J% U8 M
fclose($fp);
' s$ Q3 G2 u& K8 z+ I) E- D/ m: e! Zreturn $contents;
4 C% I0 S, D7 P! H9 x/ m R8 K}" Z& d5 }1 U9 g3 a
}
( Z% y* Q6 z% C+ \$ Z?>
3 k% ~% c+ S6 l2 ]5 o' K3 z& T复制代码, d+ U5 M0 ?- ]
此实现获取数据,如由一个用户使用的fsockopen PHP函数(任何文件或HTML)请求。此功能建立一个TCP连接的套接字的服务器上,并进行原始数据传输。
9 C3 _$ B( N$ Y8 b PHP curl_exec() function:* X5 p# q+ e+ a6 H+ B
<?php
9 B; x- x5 r6 v) K. |0 t7 @: gif (isset($_POST['url']))& \' [- N# [. g6 ]7 [3 U
{
' f% t9 L7 @8 M1 d7 k! P2 M, p7 p$link = $_POST['url'];$ Z6 p/ J' D7 ` a1 D; }
$curlobj = curl_init();7 P7 ~# ~) t- B1 S9 a9 [
curl_setopt($curlobj, CURLOPT_POST, 0);( i; K& h% r$ z1 J @% G1 ^
curl_setopt($curlobj,CURLOPT_URL,$link);
% u$ B0 r/ V4 Q0 s1 k% Q4 Icurl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);
/ Q! S, a4 x: _6 }" j) C$result=curl_exec($curlobj);! }: v: f+ I( j ~& p8 _
curl_close($curlobj);
% z: j, y( m: h * }. {5 o5 j6 {% e3 j8 d3 ^$ e! U
$filename = ‘./curled/’.rand().’.txt’;+ ^! R J7 h: b2 U8 U( g6 O
file_put_contents($filename, $result);
G4 \4 z# j3 K6 lecho $result;! W( F4 l. ^3 A3 t0 W( k, i( N
}
( T" @6 g2 A5 o7 p* H& D! C?>
9 H2 W3 S2 O- n4 K复制代码7 U Z3 O( L% l! D( R' O* M5 V0 L: b
这是另一种非常常见的实现,通过PHP使用curl获取数据。“卷曲”文件夹下的文件/数据下载并存储到磁盘,并附加一个随机数“。txt’结尾的文件扩展名。6 i! U/ G* @ H3 f4 I9 `$ i2 ?7 h
在本系列的下一部分,我们将看到一些可以启动的攻击使用此vulnerbility。XSPA允许攻击者在目标服务器基础设施,主要是内网的Web服务器,Web服务器本身,以及面向互联网的服务器以及。目前,我已经遇到以下五种不同的攻击方式,可以启动使用XSPA:
* D: C+ v) c. {/ a1 E! Z1。端口扫描远程互联网服务器,内网设备和本地Web服务器本身。横幅敛也有可能在某些情况下,. h. ?3 D' W1 Y) {$ b' ?- Q
2。开发弱势运行的程序在Intranet或本地Web服务器
7 `( l, h5 m) G) W3。攻击内部/外部Web应用程序很容易通过URL来获取参数的漏洞(SQLI,参数操作等)- I5 z1 X- V& h
4。指纹图谱的Intranet Web应用程序使用标准的应用程序的默认文件及行为
0 {. F3 x' }' m. H5。阅读使用file :/ / /协议处理程序的本地Web服务器上的文件。 |