开启左侧

PHP错误回显泄露,容易造成XSS或SQL注入

 关闭 [复制链接]
匿名
匿名  2022-8-3 10:07:19
本帖最后由 匿名 于 2022-8-3 10:10 编辑
! {( C8 F# n: ~: A1 z" g
# b+ p/ U3 o! k2 m* d7 b+ ?复现步骤:注册一个马甲账号,再注册一个名字一模一样的马甲账号,会出现错误回显,带有SQL语句和加密后的密码信息。
; F; }4 L. h' `8 g: b7 N, Q. S
$ `9 @0 j/ N; m9 x, E
! C% q) Q) |& i( U7 o; j; a1 w% e" y如图所示。(密码为1145141919810,从中可以暴力破译加盐Hash算法)% e( q0 ~4 v8 @9 j8 W$ T" P
另外,参考https://blog.csdn.net/s11show_163/article/details/104645900,可以通过INSERT进行SQL注入,脱裤分分钟的事情。  L2 ]; A3 `- M2 A0 k5 w5 s

0 b) I/ w/ v1 c3 X! u" v望关闭DEBUG回显以免受到攻击。修复后请发一条公告链接至此,随后下沉防止有人发现。
/ v6 H9 t" c" a$ M' U2 H已经是我遇到的第三个生产环境开DEBUG的了......上次是学校就算了,想问问程序员们怎么想的2 [( a* [' g# f; U
修完了记得给我一个勋章玩玩# i' e9 h, H" |5 F
; O5 _2 R: c9 z: t/ F
2 n6 A( W8 M$ e6 U

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
匿名
匿名  2022-8-3 10:20:14
BUG保护性屏蔽,技术人员正在尝试确认BUG严重程度
XHG78999 作者认证 2022-8-3 10:57:55
木新同学 发表于 2022-8-3 10:20
5 K1 {+ ]; _2 q5 B+ FBUG保护性屏蔽,技术人员正在尝试确认BUG严重程度
" w, W7 J. A1 c) g& i% i" ~! Z; A8 a2 b
我就是发布者,我刚刚比对了一下,这段SQL可以普通方法注入INSERT语句而且没有语句屏蔽,建议立刻封闭并且加强SQL语句过滤防止注入
S1017上海南站幺幺道出发机调车进路好了准许发车转场 区间两k加五百限速六洞 司机明白
匿名
匿名  2022-8-3 10:59:21
XHG78999 发表于 2022-8-3 10:57
: f+ z0 |; M3 o# a+ B! N3 \6 j**** 该帖被屏蔽 ****
$ N' ~  o: d& b# k5 J# K6 K
收到,再次保护性屏蔽
Zbx1425 作者认证 2022-8-3 13:02:36
确实是这个“我的马甲”插件在引起数据库错误,不过我以为这里并没有密码爆破/注入的问题。2 P& X0 u, ~2 _7 Q

$ O* A! M# j$ z) Z这个插件里的Hash算法在数据库里对所有用户都用同样的盐,所以同时能看到输入和输出确实理论上能够还原盐,不过我以为爆破难度不小。而且即使得到盐也很难反解出其他用户的密码。
! j7 G- e7 f: P8 _6 L以及 Discuz 主数据库是使用完全不同且每用户都不同的盐的,所以那边并没问题。- D1 N- K- L5 d+ |2 N
/ x2 x: q/ s- u1 @
关于 SQL/XSS 注入问题,在涉及到的 memcp.inc.php 源码中
( b+ ]* p$ u' s! I; x) t# E% _
  1. if($_GET['pluginop'] == 'add' && submitcheck('adduser')) {
    - Z6 P2 v; t5 l- k4 H
  2.   if($singleprem && in_array($_GET['usernamenew'], $permusers) || !$singleprem) {" f: n; V0 C$ d" I& l6 O
  3.     $usernamenew = addslashes(strip_tags($_GET['usernamenew']));
    % n# F- @4 ]" n8 l0 \  V* ^
  4.     $logindata = addslashes(authcode($_GET['passwordnew']."\t".$_GET['questionidnew']."\t".$_GET['answernew'], 'ENCODE', $_G['config']['security']['authkey']));
    : w0 I9 F: t- v% E( a" y
  5.     if(C::t('#myrepeats#myrepeats')->count_by_uid_username($_G['uid'], $usernamenew)) {
    ; G+ r3 E5 \  \+ s! n# r
  6.       DB::query("UPDATE ".DB::table('myrepeats')." SET logindata='$logindata' WHERE uid='$_G[uid]' AND username='$usernamenew'");
    8 t* z; C0 ]6 |6 J) J
  7.     } else {
      a" s4 h& `5 d4 T) X; \  X
  8.       $_GET['commentnew'] = addslashes($_GET['commentnew']);
    , d7 i8 A  X) V' g3 V) L' L6 F
  9.       DB::query("INSERT INTO ".DB::table('myrepeats')." (uid, username, logindata, comment) VALUES ('$_G[uid]', '$usernamenew', '$logindata', '".strip_tags($_GET['commentnew'])."')");
    / f: ?- t& H. h% C3 r3 U
  10. ...
复制代码
确实是在做字符串拼接,这可不是好文明;不过它对输入数据进行了 addslashes 和 strip_tags,所以这里应该是回避了 SQL/XSS 注入的问题。* f' Q7 o* |* y+ v! Q3 F- m$ J2 J
* ?$ N/ w- z+ r- ?6 M; T
Discuz 系统本身似乎并未提供使它不显示错误信息的方法,也就是没得配置不改 Discuz 代码就关不掉?2 U, z7 N9 y! E. N# K
MCBBS 也是会照样显示数据库错误的(大概 5 年前看到)。9 H9 n/ C9 a% G' }" a- B
这个倒是可以改改 Discuz 代码来关闭,不过有点治标不治本。
+ g9 @2 a4 P/ Q2 |; h- l1 m/ q- \7 G- z, n, W
倒是可以考虑考虑关掉这个马甲插件,看起来代码质量一般的样子(" {! K8 _$ b/ ?  n$ T* N

# X) R* G4 o/ W1 j" N2 n
XHG78999 作者认证 2022-8-3 13:07:13
Zbx1425 发表于 2022-8-3 13:02
* j1 p7 z; L" a6 G! }  Z" k4 X, v确实是这个“我的马甲”插件在引起数据库错误,不过我以为这里并没有密码爆破/注入的问题。2 \( j; y, ~2 K3 j

9 _: R4 ?* J: Q: o! \这个插件里的H ...

# \$ G3 J% \5 Q/ C# K4 h: Q  {应该能挡住绝大部分注入吧,但是屏蔽到啥也不能用还能注入就是sql巧妙的一个点。
% P+ X8 K- _' w还是关了马甲插件吧,没用没效果代码又是一坨屎
S1017上海南站幺幺道出发机调车进路好了准许发车转场 区间两k加五百限速六洞 司机明白
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表