ASP代码审计学习笔记 -4.命令执行漏洞

 

 

命令执行漏洞:

 

保存为cmd.asp,提交链接: http://localhost/cmd.asp?ip=127.0.0.1 即可执行命令

<%ip=request("ip")
response.write server.createobject("wscript.shell").exec("cmd.exe /c ping "&ip&"").stdout.readall
%>

 利用方式:

http://localhost/cmd.asp?ip=127.0.0.1|set

 

漏洞修复方式一:

把输入的值当作参数来执行,避免命令执行漏洞,可能会占用系统资源,不够优化。

<%
 
ip=request("ip")
response.write server.createobject("wscript.shell").exec("cmd.exe /c ping """&ip&"""").stdout.readall

%>

  

 

漏洞修复方式二:

利用正则匹配ip,不符合不执行,比较合理的解决方法。

<%

ip=request("ip")
If RegExpTest(ip) then
	response.write server.createobject("wscript.shell").exec("cmd.exe /c ping "&ip&"").stdout.readall
else
	response.write("bad ip")
end if

Function RegExpTest(strng) 
	Dim regEx,retVal,patrn
	Set regEx = New RegExp 
	patrn="^(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[0-9]{1,2})(\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[0-9]{1,2})){3}$"
	regEx.Pattern = patrn 
	regEx.IgnoreCase = False 
	retVal = regEx.Test(strng) 
	If retVal Then 
	RegExpTest = True
	Else 
	RegExpTest = False
	End If 
End Function

%>

  

关于我:一个网络安全爱好者,致力于分享原创高质量干货,欢迎关注我的个人微信公众号:Bypass--,浏览更多精彩文章。

 

转载于:https://www.cnblogs.com/xiaozi/p/5812896.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值