阿里云
阿里云多端小程序中小企业获客首选
发表主题 回复主题
  • 32427阅读
  • 18回复

web漏洞详解及修复建议

发帖
314
云币
552
— 本帖被 yundun1 从 云安全 移动到本区(2013-12-17) —
web漏洞详解及修复建议
,\aL v  
e+4Eiv  
XSS TqfL Sm|  
1、漏洞描述 EVw{G<  
跨站脚本攻击(Cross-site scripting,通常简称为XSS)发生在客户端,可被用于进行窃取隐私、钓鱼欺骗、偷取密码、传播恶意代码等攻击行为。 恶意的攻击者将对客户端有危害的代码放到服务器上作为一个网页内容, 使得其他网站用户在观看此网页时,这些代码注入到了用户的浏览器中执行,使用户受到攻击。一般而言,利用跨站脚本攻击,攻击者可窃会话COOKIE从而窃取网站用户的隐私,包括密码。 R osU~OK  
XSS攻击使用到的技术主要为HTML和Javascript,也包括VBScript和ActionScript等。XSS攻击对WEB服务器虽无直接危害,但是它借助网站进行传播,使网站的使用用户受到攻击,导致网站用户帐号被窃取,从而对网站也产生了较严重的危害。 ?.lo[X<,*  
T0)bnjm  
2、漏洞危害 'RzO`-dr  
1) 钓鱼欺骗:最典型的就是利用目标网站的反射型跨站脚本漏洞将目标网站重定向到钓鱼网站,或者注入钓鱼JavaScript以监控目标网站的表单输入,甚至发起基于DHTML更高级的钓鱼攻击方式。 iDhC_F|  
2) 网站挂马:跨站时利用IFrame嵌入隐藏的恶意网站或者将被攻击者定向到恶意网站上,或者弹出恶意网站窗口等方式都可以进行挂马攻击。 2efdJ&eIV  
3) 身份盗用:Cookie是用户对于特定网站的身份验证标志,XSS可以盗取到用户的Cookie,从而利用该Cookie盗取用户对该网站的操作权限。如果一个网站管理员用户Cookie被窃取,将会对网站引发巨大的危害。 s@y;b0$gk  
4) 盗取网站用户信息:当能够窃取到用户Cookie从而获取到用户身份使,攻击者可以获取到用户对网站的操作权限,从而查看用户隐私信息。 GU/-L<g  
5) 垃圾信息发送:比如在SNS社区中,利用XSS漏洞借用被攻击者的身份发送大量的垃圾信息给特定的目标群。 >gM"*Laa?  
6) 劫持用户Web行为:一些高级的XSS攻击甚至可以劫持用户的Web行为,监视用户的浏览历史,发送与接收的数据等等。 |>m'szca4  
7) XSS蠕虫:XSS 蠕虫可以用来打广告、刷流量、挂马、恶作剧、破坏网上数据、实施DDoS攻击等。 YG8)`X qC  
eO*s,*  
3、修复建议 *,*O.#<6  
1) 与SQL注入防护的建议一样,假定所有输入都是可疑的,必须对所有输入中的script、iframe等字样进行严格的检查。这里的输入不仅仅是用户可以直接交互的输入接口,也包括HTTP请求中的Cookie中的变量,HTTP请求头部中的变量等。 )& Oxp&x  
2) 不仅要验证数据的类型,还要验证其格式、长度、范围和内容。 tm2lxt  
3) 不要仅仅在客户端做数据的验证与过滤,关键的过滤步骤在服务端进行。 c=9A d  
4) 对输出的数据也要检查,数据库里的值有可能会在一个大网站的多处都有输出,即使在输入做了编码等操作,在各处的输出点时也要进行安全检查。 k)X\z@I'  
5) 在发布应用程序之前测试所有已知的威胁。 U?5lqq  
kN8B,  
4、修复实例参考 e#mqerpJ  
t,*1=S5  
ASP问题示例代码: MuP>#Vk  
<% OJJ [Er1  
Dim param (c^ {T)  
Set param=Request.QueryString("dd") [6_.Y*}N  
response.write param fiD,HGx i  
%>
[{)Z^  
BT_XqO  
2/uZ2N |S  
ASP修复范例:
g7*Uuh#  
<% g;6/P2w  
Dim param y,ub*-:  
Set param=Request.QueryString("dd") #=33TvprR2  
response.write Server.HTMLEnCode(param) 'g'RXC}D>  
%>
z/f._Z(  
Bmcc SC;o4  
H-v[ShE  
PHP问题代码示例:
Ldv,(ZV,<  
<?php rBi<Yy$z  
$aa=$_GET['dd']; &ni#(   
echo $aa."123"; g}gGm[1SUo  
?>
b7~Jl+m  
Pc< "qy  
-$0}rfX  
PHP修复范例:
bu_@A^ys  
<?php I2*(v%.-  
$aa=$_GET['dd']; r^<,f[yH  
echo htmlspecialchars($aa)."123"; j%-Ems*H  
?>
fR'!p: ~  
]sL.+.P  
Q#Zazvk  
SQL Inject oq!\100  
1、漏洞描述 ]BjY UTNm  
SQL注入攻击(SQL Injection),简称注入攻击、SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞。 在设计不良的程序当中,忽略了对输入字符串中夹带的SQL指令的检查,那么这些夹带进去的指令就会被数据库误认为是正常的SQL指令而运行, 从而使数据库受到攻击,可能导致数据被窃取、更改、删除,以及进一步导致网站被嵌入恶意代码、被植入后门程序等危害。 .KC V|x;QW  
*ls6k`ymL  
2、漏洞危害 pV  u[  
1) 机密数据被窃取 I *sT*;U  
2) 核心业务数据被篡改 g'7\WQ  
3) 网页被篡改 "5 ~{  
4) 数据库所在服务器被攻击变为傀儡主机,甚至企业网被入侵。 U]vUa^nG  
mI4GBp  
3、修复建议 :/szA?:W  
1) 所有的查询语句都使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中。当前几乎所有的数据库系统都提供了参数化SQL语句执行接口,使用此接口可以非常有效的防止SQL注入攻击。 rOt{bh6r  
2) 对进入数据库的特殊字符('"\<>&*;等)进行转义处理,或编码转换。 "#7Q}d!x  
3) 确认每种数据的类型,比如数字型的数据就必须是数字,数据库中的存储字段必须对应为int型。 r"h09suZBW  
4) 数据长度应该严格规定,能在一定程度上防止比较长的SQL注入语句无法正确执行。 oST)E5X;7  
5) 网站每个数据层的编码统一,建议全部使用UTF-8编码,上下层编码不一致有可能导致一些过滤模型被绕过。 p}1gac_c  
6) 严格限制网站用户的数据库的操作权限,给此用户提供仅仅能够满足其工作的权限,从而最大限度的减少注入攻击对数据库的危害。 DzE^FY  
7) 避免网站显示SQL错误信息,比如类型错误、字段不匹配等,防止攻击者利用这些错误信息进行一些判断。 xW5`.^5  
8) 在网站发布之前建议使用一些专业的SQL注入检测工具进行检测,及时修补这些SQL注入漏洞。 |UWIV  
:.XlAQR~b  
4、修复实例参考 _BJ:GDz>  
ASP漏洞代码示例 a6./;OC  
<% r /a@ x9  
Dim oComm, oRs 8~-TN1H  
Set id=Request.QueryString("d") VV/T)qEe7>  
Set oConn = Server.CreateObject("ADODB.Connection") fg#e*7Odn  
oConn.Open "Provider=MSDAORA;Password=sth;Persist Security Info=True;User ID=whats;Data Source=mescp" Is3Y>oX  
Set oComm = CreateObject("ADODB.Command") [qRww]g;P|  
oComm.ActiveConnection = oConn L%5y@b{AR  
Comm.CommandType = 1   bF_0',W  
oComm.CommandText = "select * from all_objects where rownum ="& id wUr(i*  
Set oRs = oComm.Execute OhCdBO  
%>
2ns,q0I A  
1 Vt,5o5  
ASP修复范例 KO#kIM-  
<% juWXB+d2Y  
Dim oComm, oRs __$;Z  
Set oConn = Server.CreateObject("ADODB.Connection") =UK:83R(  
oConn.Open "Provider=MSDAORA;Password=sth;Persist Security Info=True;User ID=whats;Data Source=mescp" *kK +Nvt8s  
Set oComm = CreateObject("ADODB.Command") w/( T  
oComm.ActiveConnection = oConn RxJbQs$Ph  
Comm.CommandType = 1   :M{ )&{D  
oComm.CommandText = "select * from all_objects where rownum = ? " xPUukmG:B  
oComm.Parameters.Append oComm.CreateParameter("v1",3,1,4,100) Kn5C  
Set oRs = oComm.Execute VgYy7\?p  
%>
y< dBF[  
"'Fvt-<^S7  
PHP漏洞代码示例 1z&"V}y  
<?php$id=$_GET['id'];$conn = mysql_connect("localhost","root","") or die ("wrong!");$sel=mysql_select_db("mydb",$conn); $sql="select * from user where id = ".id$que=mysql_query($sql,$conn);?> |&WYu,QQ4  
\ { QH^  
]] 0M  
PHP修复范例 4 5.g;  
<?php ^i_v\E[QU  
$id=$_GET['id']; uuFQTx))  
$conn = mysql_connect("localhost","root","") or die ("wrong!"); ?;P6#ByR  
$sel=mysql_select_db("mydb",$conn); Y1sK sdV  
$sql="select * from user where id = :id" n5A|Zjk;  
$stmt = $conn->prepare($sql);   jmv=rl>E*  
$stmt->execute(array(':id'=>$id));   = E_i  
?>
)hO%W|  
DKMkCPX%  
Code Injection i{$P.i/&  
1、漏洞描述 RbxQTM_:M  
代码注入是指由于服务端代码漏洞导致恶意用户输入在服务端被执行的一种高危安全漏洞。 @Nh}^D >j  
kn>qX{W  
2、漏洞危害 O ] !tK  
利用该漏洞,可以在服务器上执行攻击者拼装的代码。 >E4,zs@7t  
p2b~k[  
3、修复建议 =GP L>a&  
严格检查控制程序的参数。 6<S-o|Xw  
ivl %%nY'  
4、修复实例参考 [&&#~gz  
ASP漏洞示例: {4 vWSb  
<% jA:'P~`Hj  
' 期待输入sub.asp jsgDJ}  
execute request("include") (oy@j{G)c6  
%>
zB+e;x f|  
]=-=D9ZS3  
ASP修复范例 yxpv;v:)=  
<% tk'&-v'h  
<!--#include file="sub.asp"--> ]Ri=*KZa  
%>
HX| p4-L  
 jMI30  
PHP漏洞示例 P6>C+T1  
<%php ERK{smL  
$myvar = "varname"; S m=ln)G=  
$x = $_GET['arg']; 0~$9z+S  
eval("\$myvar = \$x;"); Kzq^f=p  
%>
6 .?0 {2s  
QwFA0  
PHP修复范例 4|\M`T  
<%php 1qn/*9W}=  
$myvar = "varname"; 8irTGA  
$x = $_GET['arg']; "\;n t5L  
$myvar = $x; h0~<(3zC  
%>
m!<FlEkN  
4PS|  
OS Commanding Injection &DYC3*)Jih  
1、漏洞描述 =<9Mv+Ry8  
系统命令执行是指应用程序对传入命令行的参数过滤不严导致恶意用户能控制最终执行的命令,进而入侵系统,导致严重破坏的高危漏洞。 ckP AH E@  
*HV_$^)=  
2、漏洞危害  Y~^R^J  
利用这个漏洞攻击者可以执行服务器上的命令。 dVLrA`'P*  
.7Qqs=Au  
3、修复建议 525^/d6v  
1) 严格检查程序参数,特别是 "&", "&&", "|", "||"。 c1_Zi  
2)  在代码中去除system等直接命令行执行函数或者禁止把外部传入参数传入到该类可执行函数的参数中。 {GT5   
U5cbO{\ 3I  
4、修复实例参考 M"K$.m@t  
ASP漏洞代码示例 17l?li  
<% DU*qhW`X  
Dim cmd [N[4\W!!  
Set cmd=Request.QueryString("cmd") d?YSVmG  
response.write server.createobject("wscript.shell").exec("cmd.exe /c "&cmd).stdout.readall L)7{_s  
%>
oIj/V|ByK  
PW"?* ~&  
ASP修复范例 L5d YTLY  
<% ~LF M,@  
Dim cmd Imzh`SI,  
Set cmd=Request.QueryString("cmd") 8?<J,zu@AV  
if cmd == "dir" then jc>B^mqx  
         response.write server.createobject("wscript.shell").exec("cmd.exe /c "&  "dir").stdout.readall  rB(Q)N  
end if {s6#h#U  
%>
u0?TMy.%  
y[cc<wm$  
PHP漏洞代码示例 "[z/\l8O  
<%php Mt{cX,DS  
$myvar = "varname"; <H<Aba9\  
$x = $_GET['arg']; !_c6 `oW  
// 默认通过url传入ls -al 进行执行 EX W?)_pg  
system($x); D"fjk1  
%>
gLo&~|=L-  
P$ b5o  
PHP修复范例 91a);d  
<%php Ut1s~b1  
$myvar = "varname"; Ew{N 2  
$x = $_GET['arg']; nddCp~NX  
// 默认通过url传入ls -al 进行执行 ;U tEHvE*  
if($x=='/bin/ls -al'){ q9^.f9-  
    system('/bin/ls -al'); =3V4HQi  
}else{ *z~J ]  
    return; 3_eg'EP.E  
} Tn3C0  
%>
s1%2({wP  
Xpkj44cd@  
Remote File Inclusion !([v=O#  
1、漏洞描述 :}SR{}]yXs  
远程文件包含是指程序代码在处理包含文件的时候没有严格控制。导致用户可以构造参数包含远程代码在服务器上执行,进而获取到服务器权限,造成网站被恶意删除,用户和交易数据被篡改等一系列恶性后果。 _\,4h2(  
9]{Ss$W3x  
2、漏洞危害 0q1+5  
攻击着可以利用该漏洞,在服务器上执行命令。 7 X~JLvN  
-/7@ A  
3、修复建议 @ <'a0)n>  
对于PHP,建议配置php.ini关闭远程文件包含功能。E.g. allow_url_include = Off zrtbk~v8y  
2v*X^2+  
4、修复实例参考 e5ww~%,  
eo"XHP7ja  
PHP漏洞代码示例: 3VQmo\li  
<?php dsK ^-e6:5  
$path=$_GET['arg']; yN#]Q}4  
include $path.'/filename.php'; 1_n5:  
?>
,zBc-Cm  
$7Lcn9 ?G  
Mw;^`ZxT  
修复范例:
% <%r  
<?php sQT,@+JEr  
$path='/var/www/html/common.inc'; R*vfp?x  
include $path.'/filename.php'; H[r64~Sth  
?>
=G rg  
或者:在php.ini中进行如下配置: ]b^bc2:  
allow_url_fopen=off j8t_-sU9 i  
allow_url_include=off
I?<ibLpX  
2 t]=-@  
/q`f3OV"  
Path Traversal /-3)^R2H  
1、漏洞描述 mx^rw*'JGC  
目录遍历指的是应用程序对文件路径没有检查导致服务器上的敏感文件/代码泄漏。 yv5c0G.D  
"9H#pj -  
2、漏洞危害 \'nE{  
可能会导致源代码等敏感信息泄露。 D4+OWbf6  
d[ce3':z  
3、修复建议 `[f IK,  
严格检查文件路径参数,限制在指定的范围。严格限制文件路径参数,不允许用户控制文件路径相关的参数,限定文件路径范围。 %vrUk;<35  
w:9n/[  
4、修复实例参考 j 2Jew  
mw=keY9]  
ASP漏洞代码示例:
A^ry|4`3(  
<% ?vP }#N!=d  
Dim FileName & =vi]z:[  
FileName = Request.QueryString("FileName") `&A-m8X  
Response.Clear T:udw  
Response.ContentType = "application/octet-stream" ;cWFh4_  
Response.AddHeader "content-disposition", "attachment; filename=" & FileName XZPq4(,9}  
Set Stream = server.CreateObject("ADODB.Stream") \OF"hPq  
Stream.Type = 1 0OVxx>p/x  
Stream.Open [i N}W5 m  
Stream.LoadFromFile Server.MapPath(FileName) t*!Q9GC_  
While Not Stream.EOS rEZMX2  
Response.BinaryWrite Stream.Read(1024 * 64) r6`KZ TU  
Wend EF'U`\gX  
Stream.Close ?u M2|Nk  
Set Stream = Nothing cz*Z/5XH  
Response.Flush Q<Th*t   
Response.End c< g{ &YJ  
%>
N%QVkuCbM  
q^kOyA.  
ASP修复范例: sMqAuhw$.  
<% <UO'&?G  
Dim FileName I!,FxOM|$  
FileId = Request.QueryString("FileId") 9m_Hm')VG  
FileName = GetFileNameByID(FileId) I=yy I  
Response.Clear ;(9q, )  
Response.ContentType = "application/octet-stream" ^<'=]?xr  
Response.AddHeader "content-disposition", "attachment; filename=" & FileName '${xZrzmt  
Set Stream = server.CreateObject("ADODB.Stream") mmgIV&P  
Stream.Type = 1 -*C+z!?BP  
Stream.Open Y+#Vz IZw  
Stream.LoadFromFile Server.MapPath(FileName) WJ$!W  
While Not Stream.EOS \P0>TWE  
Response.BinaryWrite Stream.Read(1024 * 64) HrQft1~N  
Wend XQL]I$?  
Stream.Close =P<7tsSuoK  
Set Stream = Nothing FQCz_ z  
Response.Flush *4F6U  
Response.End 2p|[yZ  
%>
g)#neEA J  
yGtGhP8  
PHP修复规范: 2_lb +@[W  
在php.ini中进行如下配置: 3]}wZY0  
open_basedir = 服务器上WEB目录的路径(注,路径最后需要加上斜杠作为结束),如:open_basedir = /var/www/html/ ^< O=<tN\  
Vi1= E])  
D^9r#&  
[ 此帖被yundun1在2012-06-29 17:11重新编辑 ]
欢迎关注阿里云安全新浪微博:http://weibo.com/678750615
级别: 小白
发帖
5
云币
7
只看该作者 沙发  发表于: 2012-02-27
晕死,还要发到5帖。。。
级别: 小白
发帖
20
云币
24
只看该作者 板凳  发表于: 2012-03-17
有点头晕,没有技术吃不了这饭,只能眼睁睁的被人虐待了
级别: 小白
发帖
32
云币
43
只看该作者 地板  发表于: 2012-04-28
级别: 菜鸟
发帖
39
云币
248
只看该作者 4楼 发表于: 2012-05-09
php不太懂啊
级别: 小白
发帖
13
云币
13
只看该作者 5楼 发表于: 2012-05-26
Reweb漏洞详解及修复建议
来参考一下了。
级别: 码农
发帖
174
云币
187
只看该作者 6楼 发表于: 2012-06-08
貌似采用转义的方法挺好的,感谢楼主分享
级别: 码农
发帖
170
云币
195
只看该作者 7楼 发表于: 2012-07-08
Reweb漏洞详解及修复建议
  1. ASP漏洞代码示例
  2.         <%
  3.         Dim oComm, oRs
  4.         Set id=Request.QueryString("d")
  5.         Set oConn = Server.CreateObject("ADODB.Connection")
  6.         oConn.Open "Provider=MSDAORA;Password=sth;Persist Security Info=True;User ID=whats;Data Source=mescp"
  7.         Set oComm = CreateObject("ADODB.Command")
  8.         oComm.ActiveConnection = oConn
  9.         Comm.CommandType = 1  
  10.         oComm.CommandText = "select * from all_objects where rownum ="& id
  11.         Set oRs = oComm.Execute
  12.         %>
  13. ASP修复范例
  14.         <%
  15.         Dim oComm, oRs
  16.         Set oConn = Server.CreateObject("ADODB.Connection")
  17.         oConn.Open "Provider=MSDAORA;Password=sth;Persist Security Info=True;User ID=whats;Data Source=mescp"
  18.         Set oComm = CreateObject("ADODB.Command")
  19.         oComm.ActiveConnection = oConn
  20.         Comm.CommandType = 1  
  21.         oComm.CommandText = "select * from all_objects where rownum = ? "
  22.         oComm.Parameters.Append oComm.CreateParameter("v1",3,1,4,100)
  23.         Set oRs = oComm.Execute
  24.         %>
这段没看懂,修改中的requery参数d跑哪去了,没找到。 ,=tVa])  
uOEFb  
A"V3g`dP  
发帖
314
云币
552
只看该作者 8楼 发表于: 2012-07-20
Re:回 7楼(ap7209i6x) 的帖子
你好,?表示匿名参数;在这个修复实例中,?也相当于参数d~ bh3}[O,L A  
这些是更详细的链接,可以用作参考 sZFjkfak  
a~9U{)@F  
http://willson.sinaapp.com/2011/11/sql参数化防止sql注入.html  l}5@6;}  
iaLsIy#h  
http://www.jb51.net/article/13389.htm loLQ@?E  
欢迎关注阿里云安全新浪微博:http://weibo.com/678750615
级别: 小白
发帖
9
云币
9
只看该作者 9楼 发表于: 2012-10-06
Reweb漏洞详解及修复建议
00000000000 Wr a W  
级别: 科学怪人
发帖
9985
云币
21878

只看该作者 10楼 发表于: 2012-11-02
wordpress被提示大量这样的漏洞,我到底该相信谁呢?
级别: 小白
发帖
12
云币
14
只看该作者 11楼 发表于: 2012-11-08
Reweb漏洞详解及修复建议
好厉害,,我需要GGS
级别: 小白
发帖
13
云币
13
只看该作者 12楼 发表于: 2012-11-18
Reweb漏洞详解及修复建议
谢谢分享,就是看不太懂
级别: 荣誉会员
发帖
1808
云币
1082
只看该作者 13楼 发表于: 2012-12-22
有些是误报,过几天又提示修复了。。。其实用户程序什么都没动过
级别: 菜鸟
发帖
36
云币
52
只看该作者 14楼 发表于: 2013-02-15
Reweb漏洞详解及修复建议
看不懂
发表主题 回复主题
« 返回列表
«12»
共2页
上一主题下一主题

限100 字节
批量上传需要先选择文件,再选择上传
 
验证问题: ECS是阿里云提供的什么服务? 正确答案:云服务器
上一个 下一个
      ×
      全新阿里云开发者社区, 去探索开发者的新世界吧!
      一站式的体验,更多的精彩!
      通过下面领域大门,一起探索新的技术世界吧~ (点击图标进入)