天博app下载链接

emlog 6.0特别版的BUG些

2020-10-21 / 5 评论 emlog / Mrxn

benwengongji 4005 zi,ganxienindenaixinliulanyupinglun.

shengming:benwenjingongaihaozhezhetengcanyue,qieyouyuwozheishiwohenjiuzhiqiandeshouji,ruyouyilou,biaoyibumingdeqingduobaohan。

yidianguanyuanzhuangchuxiancuowubianhao2002dekenengbanfa:

emlog_mysql_error_2002.png 

emlog_install.png

第一个就是发文章标签打不上之数据库标签表 emlog_tag
emlog5.3.1升级过来或者是自己瞎折腾后发现发文章标签打不上或者没了的多半是这个原因。

gid dezhi kaitouhejieweibixushi yingwendouhao buran wendebiaoqian bunengcunru qieyijingcunzaidehuiyouyijilv buxianshi leisizheiyangdeshuju:

mysql> select * from emlog_tag;
+-----+-----------+-------+
| tid | tagname   | gid   |
+-----+-----------+-------+
|   1 | 标签1   | 1,2,  |
|   2 | 标签二 | ,1,2, |
|   3 | 测试三 | ,2,   |
+-----+-----------+-------+
3 rows in set (0.00 sec)
 
mysql> 

qizhongde biaoqian1 zhongbaokuodewenzhang doubuhuixianshi biaoqian1

jingguochakanbiaoqianyuanmatag_model.php wenjiankeyikandao zaihuoqu tianjia gengxinde sqlyujujunyoutianjia yingwendouhaozai gid zhiqian:

$query="INSERT INTO ".DB_PREFIX."tag (tagname,gid) VALUES('".$tagName."',',$blogId,')";
所以修改办法也很简单两种,把所有涉及到加逗号的改成没有前逗号,但是这种比较容易出事情
所以最好的办法是第二种,即修改数据库的tag表在最前面加上一个英文逗号即可。

yijumysqlyujupiliangtihuanzai gid ziduanzhidetoubutianjiadouhao:

mysql> update emlog_tag set gid = concat(',',gid);
Query OK, 4 rows affected (0.00 sec)
Rows matched: 4  Changed: 4  Warnings: 0
 
mysql> select * from emlog_tag where tid >6;
+-----+---------+------+
| tid | tagname | gid  |
+-----+---------+------+
|   7 | 测试  | 3,2, |
+-----+---------+------+
1 row in set (0.00 sec)
 
mysql> update emlog_tag set gid = concat(',',gid) where tid >6;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
 
mysql> select * from emlog_tag where tid >6;
+-----+---------+-------+
| tid | tagname | gid   |
+-----+---------+-------+
|   7 | 测试  | ,3,2, |
+-----+---------+-------+
1 row in set (0.00 sec)
 
mysql> 

niyekeyizhijietihuanshouwei:

update emlog_tag set gid = concat(',',gid,',');

tihuanzhihouchaxunxiashifouyouzhongfudeshuangyinhaobiaoqian:

mysql> select tid from emlog_tag where  gid like '%,,';
+-----+
| tid |
+-----+
|   8 |
|  28 |
|  35 |
|  53 |
| 283 |
+-----+
5 rows in set (1.23 sec)
 
mysql> update emlog_tag set gid = replace(gid,',,',',') where gid like '%,,';
Query OK, 5 rows affected (0.96 sec)
Rows matched: 5  Changed: 5  Warnings: 0
 
mysql> select tid from emlog_tag where  gid like '%,,';
Empty set
 
mysql> 
你也可以全部写在一条命了里面,判断首尾是否是逗号,如果不是就更新加入逗号。
自己可以使用where来限制范围 测试一下,没问题在全部更新,切记所有操作之前备份数据!!!
同时 修复默认模板的 文章阅读页面的字数统计,增加编码检测,不然字数就是按照系统内部的编码来统计,不准确,这里使用 'utf-8' ,对于中英文相对更准确。
同时过滤 html编码内容:
<?php echo mb_strlen(preg_replace(array("'<(.*?)>'is","'&nbsp;'","'\n\r'","' '","'\r'","'\n'"),'',$log_content),'UTF-8');?>
BUG 二 默认模板的单独页面page 评论 重复显示
<?php blog_comments($comments); ?>
<?php blog_comments_post($logid,$ckname,$ckmail,$ckurl,$verifyCode,$allow_remark); ?>
<?php blog_comments($comments); ?>

shandiao duoyudeyige jike

bug san weiyu liulanyemian(baokuoqianhoutaijiamobandeweiyu,qie6.0.1 yiyangcunzai) jiexi html daima daozhi chucunxingxss(rukuchucun)

em60_xss.png

shiyinwei zaishuchudeshihou meiyouzhuanyi

admin/views/twitter.php di76xing:

<?php echo $val['t'];?> <br/><?php echo $img;?>
可以看到 没有经过转义 就直接输出 造成 xss
只需要加上一个 htmlspecialchars()函数 即可
<?php echo htmlspecialchars($val['t']);?> <br/><?php echo $img;?>

tupianyeshikeyi xss de ruguo womenpostdeshi leisizheiyangdeneirong (muqian 6.0banbenmeiyoutupianshangchuan danshiyuliu 6.0.1youwanzhengdegongneng keyishangchuan fabiaodai tupiande weiyu):

em60+601_twitter_content_img_xss.png

t=+%3Asmile%3A++123132&img=x" onerror='alert(1)';
那么 就会触发 XSS

tupiandehua jiuzhixuyaodiaoyong url buyongshuchuwanzhengde biaoqian qie url panduanshifouhegui buheguidebunengruku shuchupinjiedeshihouzaijinxing guolvzaipinjieshuchuchengtupianbiaoqian。

$img = empty($val['img']) ? "" : '<a title="'.langs('view_image').'" href="'.BLOG_URL.str_replace('thum-', '', $val['img']).'" rel="external nofollow"  rel="external nofollow"  target="_blank"><img style="border: 1px solid #EFEFEF;" src="'.BLOG_URL.$val['img'].'" rel="external nofollow" /></a>';
替换
$img = empty($val['img']) ? "" : '<a title="'.langs('view_image').'" href="'.BLOG_URL.str_replace('thum-', '', $val['img']).'" rel="external nofollow"  rel="external nofollow"  target="_blank"><img style="border: 1px solid #EFEFEF;" src="'.BLOG_URL.htmlspecialchars($val['img']).'" rel="external nofollow" /></a>';
至于 图片的路径名称的合法性 需要在 twitter_model.php 入口处addTwitter 添加微语的功能处审核。

twitter_model.php haiyouyichu xss :

<?php echo $row['content']?>
<?php echo htmlspecialchars($row['content'])?>
BUG 四 微语不能入库储存

原因是在twitter_model.php的function formatTwitter($t) {} 函数的 替换有问题,导致替换后的输入内容为空了。。。
暂时不替换 直接入库
为了安全 可以考虑 使用
htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体
strip_tags() 函数剥去字符串中的 HTML、XML 以及 PHP 的标签
// $input = strip_tags($input);  // 清除标签内容
原函数修改为:

function formatTwitter($t) {
		//识别URL
		// $t = htmlspecialchars(preg_replace("/\/\/[\w-.?\/=&%:]*/i", "[[email protected]] href=\"\$0\" target=\"_blank\"[@+]\$0[[email protected]+]", $t), ENT_NOQUOTES);
		// $t = str_replace(array('[[email protected]]','[@+]','[[email protected]+]'), array('<a','>','</a>'), $t);
		$t=strip_tags($t);
		$t=htmlspecialchars($t);
		return $t;
	}
参考:http://learnku.com/articles/32529
在线PHP沙盒调试:http://sandbox.onlinephpfunctions.com/

chulvetongji zheimeduo kendingyouyilou jianyi buyunxu weiyuhuifu !

BUG 五 默认模板天博app下载链接的最新评论跳转链接 缺少 comment- 导致不能定位
module.php 修改最新评论处的 URL

$url = Url::comment($value['gid'], $value['page'], 'comment-'.$value['cid']);

标签: 代码 漏洞 php emlog 代码审计

转载:转载请注明原文链接 - emlog 6.0特别版的BUG些


5条回应:“emlog 6.0特别版的BUG些”

  1. zheipianwenzhangsihuchufalezheigezhutide bug,cebianlanpaodaodibulaile。

  2. wenxintishixia:bozhuniwangzhandecebianlanzaifabiaopinglunxiafangxianshi。

  3. 我使用的是emlog6.0.1也有好多bug :
    1.编辑文章 点击保存草稿时,“版权设置”、“转载地址”保存不成功
    2.编辑文章页面 勾选允许评论,在“保存草稿”或“保存”之后批量发布草稿后,文章评论模块失效
    3.在程序后台评论管理中管理员进行回复评论,提交出现白屏问题

    希望博主未来也会出下解决教程

  4. tishang

    xianzaihenshaorenyongleba zicongbeineiduoshuolezhihou


发表评论

{view_code_no}