许多Web应用程序提供的功能将数据从其他Web服务器,由于种种原因。下载XML提要,从远程服务器,Web应用程序可以使用用户指定的URL,获取图像,此功能可能会被滥用,使制作的查询使用易受攻击的Web应用程序作为代理运行在远程攻击其他服务的基于文本的文件等。 /本地服务器。通过这种滥用而产生的功能被命名为攻击,跨站点端口的攻击(XSPA)。& y2 `; w: y; r% p y
XSPA(SSPA)是什么?
- G" h. t1 s; u7 |1 S/ d8 [如果应用程序处理用户提供的URL和不验证/消毒后端从远程服务器接收到响应,然后将其发送回客户端应用程序是容易受到跨站点端口的攻击。攻击者可以通过发送特制的查询到一个易受攻击的Web应用程序代理攻击,面临的外部Internet服务器,内网设备和Web服务器本身易受攻击的Web应用程序使用的广告功能。的反应,在某些情况下,可以进行研究,以确定服务的可用性(端口状态,横幅等),甚至在非传统的方式获取数据的远程服务。
& r$ L0 O- Y7 sPHP fsockopen() function:
6 @8 Z& c9 q, ^6 U) U, e- f<?php6 \' \8 O& W: m' g4 L
function GetFile($host,$port,$link)
4 G2 i) s7 [! L& C{# F9 E# r" N4 U+ C$ s$ n
$fp = fsockopen($host, intval($port), $errno, $errstr, 30);
' { x4 c6 U3 K2 W P0 q% Tif (!$fp) {
4 }& G/ H' l3 t% Hecho “$errstr (error number $errno) \n”;
0 ~2 I; g/ {+ U" F6 u2 D( s5 L; g} else {4 F+ B- V& W+ U0 Y' m
$out = “GET $link HTTP/1.1\r\n”;! m4 u; f) ^1 W" b8 A: v
$out .= “Host: $host\r\n”;
6 n) ~. M# A+ u* ]$out .= “Connection: Close\r\n\r\n”;
: ^" d, i5 N) M- J/ g1 ]4 I$out .= “\r\n”;
# K3 k: ]8 V, j: C& U; j8 J$ Kfwrite($fp, $out);
9 t" x. L/ {7 U, `$contents=”;
' p) l6 m# g6 \) M/ uwhile (!feof($fp)) {
$ l' S0 K# m; Z6 r5 N$contents.= fgets($fp, 1024);
" K# ^+ @6 p! P, X. W e}
4 l3 g. }3 [* Q+ Q# {7 z* _* zfclose($fp);
- Y ^8 t' I9 b+ E$ c' X: Treturn $contents;
4 _$ `. q2 E- w$ \" M8 ~}2 r5 m/ q) k+ L2 {) g& t: t% h
}
. U) b) C3 S+ X3 l?>0 `2 {. b, f! {" r4 D: e# @
复制代码
& ^5 d( L$ \1 t3 I此实现获取数据,如由一个用户使用的fsockopen PHP函数(任何文件或HTML)请求。此功能建立一个TCP连接的套接字的服务器上,并进行原始数据传输。
2 x/ z& S! Q5 I1 K" h9 N PHP curl_exec() function:1 i: o; K' k' _# R3 \# \2 N
<?php
2 ^/ w; {# P9 `# uif (isset($_POST['url']))2 p( Z7 R1 U& D9 Z
{) w& c6 ~0 ~6 Z4 H5 o* Z/ V
$link = $_POST['url'];
4 M7 r0 z0 P1 F( G; Q$curlobj = curl_init();' a4 U& E9 L Q
curl_setopt($curlobj, CURLOPT_POST, 0);4 R* B* [. Z! E5 W' ?
curl_setopt($curlobj,CURLOPT_URL,$link);
# }( z4 \% I' \$ a9 k; ^$ Qcurl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);
" Q b# s/ D. H5 h! v, Q$result=curl_exec($curlobj);
, {& x2 K0 ~, mcurl_close($curlobj);; W G/ p2 O2 ?$ O5 q" n( p
2 g' v( E9 ~9 B7 W( X: c6 O
$filename = ‘./curled/’.rand().’.txt’;
4 c1 W, k& T2 G$ E/ }! F3 Yfile_put_contents($filename, $result);
0 \! ]. I/ k$ ?# Recho $result;
. x! {, N7 c2 q. i8 o9 _: F) n}5 U/ y, c0 M3 A
?>" a$ O; X" `6 b8 `) F6 ?, M$ s
复制代码3 N4 F7 k4 h3 B* ~
这是另一种非常常见的实现,通过PHP使用curl获取数据。“卷曲”文件夹下的文件/数据下载并存储到磁盘,并附加一个随机数“。txt’结尾的文件扩展名。3 i* @1 ? c. N& m
在本系列的下一部分,我们将看到一些可以启动的攻击使用此vulnerbility。XSPA允许攻击者在目标服务器基础设施,主要是内网的Web服务器,Web服务器本身,以及面向互联网的服务器以及。目前,我已经遇到以下五种不同的攻击方式,可以启动使用XSPA:
; u8 ? l2 g P! m1。端口扫描远程互联网服务器,内网设备和本地Web服务器本身。横幅敛也有可能在某些情况下,4 ^* G3 h/ N/ `" d9 P3 M
2。开发弱势运行的程序在Intranet或本地Web服务器* A2 x7 r4 b1 E: r7 v: i
3。攻击内部/外部Web应用程序很容易通过URL来获取参数的漏洞(SQLI,参数操作等)
% c7 e/ z) p+ f8 {2 L6 ~4。指纹图谱的Intranet Web应用程序使用标准的应用程序的默认文件及行为
5 F, A3 |0 u- E5 O/ G1 O5。阅读使用file :/ / /协议处理程序的本地Web服务器上的文件。 |