许多Web应用程序提供的功能将数据从其他Web服务器,由于种种原因。下载XML提要,从远程服务器,Web应用程序可以使用用户指定的URL,获取图像,此功能可能会被滥用,使制作的查询使用易受攻击的Web应用程序作为代理运行在远程攻击其他服务的基于文本的文件等。 /本地服务器。通过这种滥用而产生的功能被命名为攻击,跨站点端口的攻击(XSPA)。
% r; B; ^5 {8 G# i* g) |6 hXSPA(SSPA)是什么?
! g+ Y! U/ p, s7 o" i7 s如果应用程序处理用户提供的URL和不验证/消毒后端从远程服务器接收到响应,然后将其发送回客户端应用程序是容易受到跨站点端口的攻击。攻击者可以通过发送特制的查询到一个易受攻击的Web应用程序代理攻击,面临的外部Internet服务器,内网设备和Web服务器本身易受攻击的Web应用程序使用的广告功能。的反应,在某些情况下,可以进行研究,以确定服务的可用性(端口状态,横幅等),甚至在非传统的方式获取数据的远程服务。
' ?- N+ O( Q- G" ]) T$ n+ bPHP fsockopen() function:
( j. \( U$ N# [' }2 B- `4 R% D/ F<?php
4 y, [* P, Z$ x: x+ {function GetFile($host,$port,$link)% e0 N# | U7 Z) x- [! A8 C
{5 C/ |3 N/ ~ \$ E+ z2 x* N, u7 v
$fp = fsockopen($host, intval($port), $errno, $errstr, 30);
! E4 D' _6 F6 x% v. n( D: |3 Vif (!$fp) {
& b% i. `$ L* M2 Xecho “$errstr (error number $errno) \n”;
( F% U3 b* |( t- k [( J} else {; V/ j6 i i9 F3 g
$out = “GET $link HTTP/1.1\r\n”;7 O" u3 ]% m6 [! }) b0 I
$out .= “Host: $host\r\n”;1 p2 r! q. F+ _# C% A
$out .= “Connection: Close\r\n\r\n”;2 ~. [: {. l7 I7 ~! ^$ @
$out .= “\r\n”;/ d R1 Y v( `# R- {0 y3 u8 b" B
fwrite($fp, $out);
# a: L4 N b! @0 s/ A$contents=”; N- Q( p" n1 z: E, ]
while (!feof($fp)) {
4 y8 i3 A. v+ o; m, c$contents.= fgets($fp, 1024);6 u7 f- b2 l: M1 t V. l
}
6 u7 i/ T" I( U$ D0 {fclose($fp);; X; m2 D. w6 m1 `1 V6 D' T
return $contents;
4 o% ?) X/ Z8 ~$ a5 ]' @7 P}
8 e8 ?; o: i) U5 w/ X}/ k W/ G$ w, }4 y# M8 b1 U
?>
% {& y2 c, k3 w( K* H复制代码; `: ? Y5 L: F% O0 ]: g* ~ p
此实现获取数据,如由一个用户使用的fsockopen PHP函数(任何文件或HTML)请求。此功能建立一个TCP连接的套接字的服务器上,并进行原始数据传输。
; e" |8 j& H& [* g3 ^9 r( |7 U: L PHP curl_exec() function:
; @# M# m; P8 l/ U<?php
. V' h; V( i* s0 W* Rif (isset($_POST['url']))
: {& u, M B8 N% X# x{
' N8 m/ \" d$ w1 U; g$ Q7 E- u$link = $_POST['url'];
# Q) y# K& w2 |. ~+ F$curlobj = curl_init();
3 ]1 [8 Q4 H% G- G, z+ Z8 ycurl_setopt($curlobj, CURLOPT_POST, 0);4 ]+ _9 A7 B2 Y
curl_setopt($curlobj,CURLOPT_URL,$link);
2 u t* @' Z8 j2 W( t5 rcurl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);
+ H& [# @6 p$ L! R' Q" T9 Y* A$result=curl_exec($curlobj);
6 m* w# r1 U1 u1 Lcurl_close($curlobj);7 c7 y% S" s; t
" |; c& U# K2 X, h0 I
$filename = ‘./curled/’.rand().’.txt’;2 p4 }4 D2 |2 r3 w5 ], M
file_put_contents($filename, $result);& a$ P6 r9 F$ }- ^2 Y3 c
echo $result;
$ Z7 @3 k3 E, z7 q2 x}
9 f; N4 d4 K# s$ f ~( j0 w4 f% R1 u?>/ `1 {: e. D* h9 v
复制代码
: P5 p5 j* I E8 S3 B) Z# g/ ~这是另一种非常常见的实现,通过PHP使用curl获取数据。“卷曲”文件夹下的文件/数据下载并存储到磁盘,并附加一个随机数“。txt’结尾的文件扩展名。0 o1 Y% M7 b! t# E1 e5 G. `
在本系列的下一部分,我们将看到一些可以启动的攻击使用此vulnerbility。XSPA允许攻击者在目标服务器基础设施,主要是内网的Web服务器,Web服务器本身,以及面向互联网的服务器以及。目前,我已经遇到以下五种不同的攻击方式,可以启动使用XSPA:7 e' k$ d+ R, z; {& v |% ^
1。端口扫描远程互联网服务器,内网设备和本地Web服务器本身。横幅敛也有可能在某些情况下,
* j: x1 J" K8 _( h3 n( q% V2。开发弱势运行的程序在Intranet或本地Web服务器+ S# P3 [! G6 t! L1 ?2 D9 o9 E C7 c
3。攻击内部/外部Web应用程序很容易通过URL来获取参数的漏洞(SQLI,参数操作等)6 j) [0 L0 _; T/ d- _8 N3 [; f Z
4。指纹图谱的Intranet Web应用程序使用标准的应用程序的默认文件及行为3 o L$ y6 r7 R( }: H6 F! V
5。阅读使用file :/ / /协议处理程序的本地Web服务器上的文件。 |