许多Web应用程序提供的功能将数据从其他Web服务器,由于种种原因。下载XML提要,从远程服务器,Web应用程序可以使用用户指定的URL,获取图像,此功能可能会被滥用,使制作的查询使用易受攻击的Web应用程序作为代理运行在远程攻击其他服务的基于文本的文件等。 /本地服务器。通过这种滥用而产生的功能被命名为攻击,跨站点端口的攻击(XSPA)。
( n4 ^7 I3 B" g% ~ O9 \XSPA(SSPA)是什么?
) z% D+ Z# U. W* @如果应用程序处理用户提供的URL和不验证/消毒后端从远程服务器接收到响应,然后将其发送回客户端应用程序是容易受到跨站点端口的攻击。攻击者可以通过发送特制的查询到一个易受攻击的Web应用程序代理攻击,面临的外部Internet服务器,内网设备和Web服务器本身易受攻击的Web应用程序使用的广告功能。的反应,在某些情况下,可以进行研究,以确定服务的可用性(端口状态,横幅等),甚至在非传统的方式获取数据的远程服务。
2 d# g3 I+ R, EPHP fsockopen() function:9 H# v- F7 E+ C" L( t/ R8 P
<?php% T( j% r$ |8 }) F7 j% t J& `
function GetFile($host,$port,$link)
7 I; K9 [+ o& z C+ _{
% t7 a, F% l$ N# l# @* Q+ Y% ]$fp = fsockopen($host, intval($port), $errno, $errstr, 30);4 V6 Q8 L$ W5 S
if (!$fp) { 2 N/ l7 ^: J& O- p0 d
echo “$errstr (error number $errno) \n”;
$ y5 f4 ^- Z; Y' e1 }3 o} else {- E# F4 m6 l9 P/ U5 O
$out = “GET $link HTTP/1.1\r\n”;
6 c; ^" y0 u% a$out .= “Host: $host\r\n”;
) [% k* N9 {: x0 R# J$out .= “Connection: Close\r\n\r\n”;
3 @4 y+ {& Q; Q' Q$out .= “\r\n”;
7 u! Y: p9 R6 Lfwrite($fp, $out);
; V0 [8 P. Q, S' W' c# S% e$ T$contents=”;
3 p& c+ ?, M' M) ? Lwhile (!feof($fp)) {( K- ?' z, @! A* Y" Q
$contents.= fgets($fp, 1024);9 E5 b3 P: e6 Q; ]4 A* J* D
}! y: }+ K1 ?- j2 R- H
fclose($fp);% ~+ M+ `" W7 q/ H7 b
return $contents;
% h. G' q: ~, L, w+ O+ ~}
o3 z" \) ^& F0 l}
4 A# R9 z* ~& m; ^$ D?>7 B, T' w" S. n; c2 ^1 k
复制代码
8 D: b( S- g" w& }# A此实现获取数据,如由一个用户使用的fsockopen PHP函数(任何文件或HTML)请求。此功能建立一个TCP连接的套接字的服务器上,并进行原始数据传输。
, ]' |8 m9 D8 G6 V6 G PHP curl_exec() function:
& q6 C8 g2 w+ c# \& B8 Z<?php j) V9 n, m' f3 c
if (isset($_POST['url']))6 V3 j- S% ]& I* r
{6 }% t1 o) r' N6 {
$link = $_POST['url'];9 R( K# P2 W* M
$curlobj = curl_init();$ ?/ [" D3 B7 t: q: X) D
curl_setopt($curlobj, CURLOPT_POST, 0);! h, B5 _ ]1 |1 g
curl_setopt($curlobj,CURLOPT_URL,$link);
5 e; H' a6 g; r1 u6 j, e3 p- ~4 k' hcurl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);: p# r3 x- l) R
$result=curl_exec($curlobj);
- X/ f8 K3 \6 b* C5 ?8 hcurl_close($curlobj);
" B7 V; h, G" C% Z" c% f
% e' G, s4 _' \* h$filename = ‘./curled/’.rand().’.txt’;3 N7 u4 U: Q6 s5 O
file_put_contents($filename, $result);
+ w" D& Z. h Q/ D$ q8 E3 C3 kecho $result;; u8 G1 V+ T7 l" V7 S4 d2 P- I
}
5 q3 O+ @, J; o. N2 N! |" n?>) X- ?" U. @! C) H
复制代码
: a' n8 M- e: W t6 q% e; p这是另一种非常常见的实现,通过PHP使用curl获取数据。“卷曲”文件夹下的文件/数据下载并存储到磁盘,并附加一个随机数“。txt’结尾的文件扩展名。) C6 z$ D- n) U# {- n0 {% r
在本系列的下一部分,我们将看到一些可以启动的攻击使用此vulnerbility。XSPA允许攻击者在目标服务器基础设施,主要是内网的Web服务器,Web服务器本身,以及面向互联网的服务器以及。目前,我已经遇到以下五种不同的攻击方式,可以启动使用XSPA:
2 T7 d5 Z2 L. {: l0 I; q- `8 V1。端口扫描远程互联网服务器,内网设备和本地Web服务器本身。横幅敛也有可能在某些情况下,
! }+ F# u [" |6 T; K; o2。开发弱势运行的程序在Intranet或本地Web服务器
- G+ J/ M4 k: B$ g5 f3。攻击内部/外部Web应用程序很容易通过URL来获取参数的漏洞(SQLI,参数操作等): q# j f6 a" f
4。指纹图谱的Intranet Web应用程序使用标准的应用程序的默认文件及行为+ Z5 Z! q& Q1 K5 {2 w8 ?
5。阅读使用file :/ / /协议处理程序的本地Web服务器上的文件。 |